Hằng số của Chaitin là bình thường?


9

Theo nguồn tin này, hằng số Chaitin Ω là bình thường.

Mỗi xác suất tạm dừng là một số thực bình thường và siêu việt không thể tính toán được, điều đó có nghĩa là không có thuật toán để tính các chữ số của nó. Thật vậy, mỗi xác suất tạm dừng là ngẫu nhiên Martin-Löf, có nghĩa là thậm chí không có bất kỳ thuật toán nào có thể đoán được các chữ số của nó một cách đáng tin cậy.

Nguồn (Wikipedia)

Hơn nữa, định nghĩa của bình thường là mỗi chữ số xảy ra với xác suất bằng nhau 1/b. Và rằng mỗi cặp chữ số xảy ra với xác suất 1/b2 và mọi bộ ba xảy ra với xác suất 1/b3 , v.v.

Omega của Chaitin được tính thông qua

Ω=phalts2|p|

Viết Ω trong hệ nhị phân, chúng ta có được một danh sách từ 0 và 1. Ví dụ,

2^-1=0.1 +
2^-2=0.01 +
2^-3=0.001 +
~skip 2^-4 as it does not halt
2^-5=0.00001 +
...
=\Omega
=0.11101...

Rõ ràng, chúng ta có thể thấy rằng vị trí của mỗi bit tương ứng với trạng thái tạm dừng của chương trình có độ dài tương ứng với bit.

Đây là những gì tôi đang đấu tranh với

Nếu thực sự là bình thường, sau đó nó có nghĩa là chính xác 50% các chương trình ngăn chặn và chính xác 50% thì không. Điều này có vẻ rất phản trực quan.Ω

Ví dụ: giả sử tôi tạo các chương trình java bằng cách ghép ngẫu nhiên các ký tự đơn. Phần lớn trong số họ, tôi đoán rằng hơn 99,99% thậm chí sẽ không biên dịch. Điều này sẽ không ngụ ý rằng ít nhất 99,99% trong số họ sẽ không dừng lại? Làm thế nào để chúng tôi chứng minh rằng đúng một nửa sẽ tạm dừng và chính xác một nửa sẽ không, bởi đức hạnh của là bình thường.Ω

Hoặc là wikipedia không chính xác về là bình thường không?Ω


2
Chào mừng đến với trang web! Nếu bạn đặt LaTeX của mình giữa các đô la thay vì backticks, chúng tôi sẽ có thể đọc đầu ra, thay vì nguồn.
David Richerby

1
Và đối với các phân số \ frac {1} {b ^ 2} cho thay vì1/b2. 1b21/b2
Ác

Tôi tin rằng Omega của Chaitin được định nghĩa cho các mã hóa Turing Machine không có tiền tố , không phải cho các mã hóa tùy ý. Nếu vậy, tôi nghĩ rằng trực giác bình thường của chúng ta xung quanh những gì tạo nên một TM "ngẫu nhiên" có thể không đáng tin cậy như vậy.
mhum

1
@mhum Bạn có thể mã hóa lại bất kỳ chương trình nào thành mã hóa không có tiền tố bằng cách thêm 1 vào giữa mỗi bit của chương trình gốc, sau đó kết thúc chương trình bằng 0. Sau đó, máy Turing đọc từng bit cho đến khi tìm thấy kết thúc 0. Điều này để lại mã java nguyên vẹn nhưng làm cho nó có tiền tố miễn phí. Do đó vấn đề vẫn còn.
Alexandre H. Tremblay

"Nếu thực sự là bình thường, thì điều đó có nghĩa là chính xác 50% chương trình bị dừng và chính xác là 50% thì không. Điều này có vẻ rất phản cảm." Nó có nghĩa là, một cách bất thường, một nửa số chương trình tạm dừng. Đây không phải là phản trực giác. Mặc dù có thể mất một số nỗ lực để tìm chương trình tạm dừng (nghĩa là bạn đã nhấn một chuỗi dài 0), nhưng khi bạn đã tìm thấy một chương trình, bạn sẽ có một chuỗi các chương trình tạm dừng rất dài theo sau nó (tức là một chuỗi dài bằng nhau của 1), ví dụ các chương trình có cùng chức năng với chương trình nhưng với một loạt các bình luận không cần thiết được xử lý (một loại bổ đề bơm).
Marcel Besixdouze

Câu trả lời:


9

Ngược lại với ví dụ của bạn, hằng số Chaitin không được định nghĩa như sau:

Ω=n:nth program halts2n.

Π{0,1}ΠnnΩΩ

Ω=pΠ:p halts2|p|,
|p|ppΠ2|p|1

nnO(1)ΩnnΩnΠΩnΩ<Ωn+2np2|p|CCΩnCΩnΩC+2nΩn+2n

K>0nΩnnKnnnKnnKΩnnK

Ωϵ>0nΩn1/2ϵ2h(1/2ϵ)n1/2ϵΩnh(1/2ϵ)n+2logn+CϵCϵϵϵnω(1)Ω


Cảm ơn bạn đã trả lời rất đầy đủ. Tôi đang vật lộn với đoạn đầu tiên và tôi xin lỗi vì nó không vượt qua được hộp sọ của tôi. Nếu chúng ta chỉ lấy các chương trình java đó để biên dịch, sau đó mã hóa chúng thành unary, thì điều đó có nghĩa là chính xác một nửa trong số chúng sẽ dừng lại?
Alexandre H. Tremblay

@ AlexandreH.Tremblay Vâng, đó là hàm ý. Để biết thêm, tôi đề nghị một cuốn sách giáo khoa về độ phức tạp Kolmogorov, chẳng hạn như Li và Vitanyi.
Yuval Filmus

Bạn có thể tạo máy Turing sao cho nó bao gồm trình biên dịch java không? Hình dung điều này. Đầu tiên, liệt kê tất cả các chuỗi ký tự được tạo ngẫu nhiên có thể từ ngắn nhất đến dài nhất. Thứ hai, mã hóa các chuỗi này trong unary. Thứ ba, cung cấp các chuỗi unary cho máy Turing làm đầu vào. Máy Turing kiểm tra nếu đầu vào biên dịch trong Java. Nếu có, nó sẽ thực thi và một nửa sẽ dừng lại và một nửa sẽ không. Nếu nó không biên dịch, thì nó lặp lại mãi mãi (while (true) {};). Điều này sẽ không làm lệch tỷ lệ tạm dừng / không dừng? Tôi đã đọc Li và Vitanyi tuần trước, nhưng tôi sẽ cần đọc lại;).
Alexandre H. Tremblay

Tôi nghi ngờ rằng mã hóa đơn phương theo cách bạn đề xuất sẽ không được chấp nhận . Ví dụ: trong mã hóa đơn phương (ngay cả mã đơn giản), bạn sẽ không thể soạn chương trình với chi phí không đổi. Tôi sẽ kiểm tra Li và Vitanyi để biết danh sách các thuộc tính mà một máy tính phổ thông được chấp nhận phải đáp ứng. Đây sẽ là một phần của định nghĩa về độ phức tạp Kolmogorov.
Yuval Filmus

Xin chào, bạn có thể giới thiệu phần Li và Vitanyi nơi có thông tin này không. Tôi đọc cuốn sách lần thứ hai và không thể tìm thấy nó.
Alexandre H. Tremblay

0

Lỗi của bạn là ở dòng sau:

Ω

d0(n)nΩΩ

limnd0(n)n=1/2.

Ω

ΩΩΩΩΩ


ΩΩ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.