La costante di Chaitin è normale?


9

Secondo questa fonte, la costante di Chaitin è normale.Ω

Ogni probabilità di arresto è un numero reale normale e trascendentale che non è calcolabile, il che significa che non esiste un algoritmo per calcolare le sue cifre. In effetti, ogni probabilità di arresto è casuale di Martin-Löf, il che significa che non esiste nemmeno alcun algoritmo in grado di indovinare in modo affidabile le sue cifre.

Fonte (Wikipedia)

Inoltre, la definizione di normale è che ogni cifra si presenta con uguale probabilità . E che ogni duetto di cifre si verifica con probabilità e ogni tripletta si verifica con probabilità e così via.1/b1/b21/b3

L'omega di Chaitin viene calcolata tramite

Ω=phalts2|p|

Scrivendo in binario, otteniamo un elenco di 0 e 1. Ad esempio,Ω

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...

Chiaramente, possiamo vedere che la posizione di ciascun bit corrisponde allo stato di arresto del programma di lunghezza corrispondente al bit.

Ecco con cosa sto lottando

Se è davvero normale, significa che esattamente il 50% dei programmi si ferma e esattamente il 50% no. Questo sembra molto intuitivo.Ω

Ad esempio, supponiamo che io generi programmi java concatenando casualmente singoli caratteri. La maggior parte di loro, immagino che oltre il 99,99% non si sarebbe nemmeno compilato. Ciò non implicherebbe che almeno il 99,99% di loro non si fermerà? Come possiamo giustificare che esattamente la metà si fermerà e esattamente la metà non lo farà, in quanto è normale.Ω

O Wikipedia non è corretta sul fatto che sia normale?Ω


2
Benvenuti nel sito! Se metti il ​​tuo LaTeX tra dollari anziché backtick, saremo in grado di leggere l'output, piuttosto che la fonte.
David Richerby,

1
E per le frazioni \ frac {1} {b ^ 2} dà invece di . 1b21/b2
Evil

Credo che l'Omega di Chaitin sia definito per codifiche Turing Machine prive di prefissi , non per codifiche arbitrarie. In tal caso, penso che le nostre intuizioni normali su ciò che costituisce una TM "casuale" potrebbero non essere così affidabili.
mhum,

1
@mhum È possibile ricodificare qualsiasi programma in una codifica priva di prefissi aggiungendo un 1 tra ogni bit del programma originale, quindi terminandolo con uno 0. Quindi la macchina Turing legge ogni secondo bit fino a quando non trova lo 0 finale. Ciò lascia intatto il codice java ma lo rende libero come prefisso. Quindi il problema rimane.
Alexandre H. Tremblay,

"Se Ω è davvero normale, significa che esattamente il 50% dei programmi si ferma e esattamente il 50% no. Questo sembra molto intuitivo." Significa che, asintoticamente, la metà dei programmi si ferma. Questo non è così intuitivo. Anche se potrebbe essere necessario un certo sforzo per trovare un programma di arresto (cioè se colpisci una lunga stringa di 0 in Ω), una volta che ne hai trovato uno, avrai una lunga serie di programmi di arresto che lo seguono (cioè un stringa ugualmente lunga di 1), ad esempio programmi che sono funzionalmente lo stesso programma ma con un mucchio di commenti superflui (una sorta di lemma di pompaggio).
Marcel Besixdouze,

Risposte:


9

Contrariamente al tuo esempio, la costante di Chaitin non è definita come segue:

Ω=n:nth program halts2n.

Invece, esiste un set di programmi consentiti che è privo di prefisso (nessuna stringa è un prefisso di un'altra stringa). Ciascuno dei programmi in è legale (questo annulla il tuo esempio Java). Se i programmi sono la codifica in unario, allora è davvero il caso che il ° programma ha lunghezza , e quindi la sua definizione di funziona. Ma per altre codifiche, la definizione di èΠ{0,1}ΠnnΩΩ

Ω=pΠ:p halts2|p|,
doveè la lunghezza della stringa binaria . La disuguaglianza di Kraft mostra che .|p|ppΠ2|p|1

La costante di Chaitin è algoritmicamente casuale : la complessità (prefisso) di Kolmogorov dei primi bit è . Per dimostrarlo, nota innanzitutto che , i primi bit di , sono sufficienti per determinare se un programma di lunghezza (sotto la codifica ) si interrompe o meno. Infatti, come frazione, . Esegui tutti i programmi in parallelo e ogni volta che ferma, aggiungi a qualche contatore (inizializzato a zero). Alla fine (dannO(1)ΩnnΩnΠΩnΩ<Ωn+2np2|p|CCΩnCΩda sotto). A questo punto, se il programma di input di lunghezza non si è arrestato, allora sai che non si ferma, poiché altrimenti .nΩC+2nΩn+2n

Dato questo, supponiamo che per alcuni e infinitamente molti , è possibile calcolare usando i bitPer ciascuno di questi , puoi trovare una stringa la cui complessità di Kolmogorov è maggiore di , considerando l'output di tutti i programmi di arresto della lunghezza al massimo . Per abbastanza grande , il risultato è un programma di lunghezza al massimo per calcolare una stringa la cui complessità di Kolmogorov è maggiore di . Questa contraddizione dimostra che per alcuni , la complessità di Kolmogorov di è almeno .K>0nΩnnKnnnKnnKΩnnK

La casualità algoritmica di implica, in particolare, che la frequenza di 0s e 1s nella sua espansione binaria tende a 1/2. Supponiamo, infatti, che per alcuni (razionali) esistano infinitamente molti tali che la frazione di 1s in sia al massimo . Dato che esistono al massimo stringhe con al massimo molti 1s, possiamo comprimere alla dimensione (la costante dipende da poiché il programma deve conoscereΩϵ>0nΩn1/2ϵ2h(1/2ϵ)n1/2ϵΩnh(1/2ϵ)n+2logn+CϵCϵϵϵ). Tuttavia, questo è , contraddicendo la casualità algoritmica di .nω(1)Ω


Grazie per la risposta molto completa. Sto lottando con il primo paragrafo e mi scuso per non aver attraversato il mio cranio. Se prendiamo solo quei programmi Java che compilano, quindi li codifichiamo in unario, significa che esattamente la metà di loro si fermerà?
Alexandre H. Tremblay,

@ AlexandreH.Tremblay Sì, questa è l'implicazione. Per di più, raccomando un libro di testo sulla complessità di Kolmogorov, come Li e Vitanyi.
Yuval Filmus,

Potresti realizzare la macchina Turing in modo tale che includa un compilatore Java? Immaginare questo. Innanzitutto, elenca tutte le possibili stringhe di caratteri generate casualmente dal più breve al più lungo. Secondo, codifica queste stringhe in unario. In terzo luogo, alimentare le stringhe unarie alla macchina di Turing come input. La macchina Turing verifica se l'input viene compilato in Java. Se lo fa, lo esegue e metà si ferma e metà no. Se non viene compilato, viene ripetuto per sempre (while (true) {};). Ciò non distorcerebbe il rapporto arresto / non arresto? Ho letto Li e Vitanyi la scorsa settimana, ma dovrò rileggerlo di nuovo;).
Alexandre H. Tremblay,

Sospetto che la codifica unaria nel modo che suggerisci non sarebbe ammissibile . Ad esempio, nella codifica unaria (anche quella semplice) non sarai in grado di comporre programmi con sovraccarico costante. Controllerei Li e Vitanyi per un elenco di proprietà che un computer universale ammissibile deve soddisfare. Ciò farebbe parte della definizione di complessità di Kolmogorov.
Yuval Filmus,

Ciao, puoi consigliarmi la sezione di Li e Vitanyi dove sono presenti queste informazioni. Ho letto il libro una seconda volta e non sono riuscito a trovarlo.
Alexandre H. Tremblay,

0

Il tuo errore è sulla seguente riga:

Se è davvero normale, significa che esattamente il 50% dei programmi si ferma e esattamente il 50% no.Ω

No. Non è questo che significa "normale". Oppure, per dirlo in un altro modo: Definisci come numero di bit che sono 0, nei primi bit dell'espansione base-2 di . Dire che è normale implica questod0(n)nΩΩ

limnd0(n)n=1/2.

In altre parole, "normale" è una nozione asintotica. Significa che se guardi abbastanza lontano nei bit di , in media circa la metà saranno 0. (Allo stesso modo, circa la metà con 1).Ω

Tuttavia, questo non dice nulla sui primi bit di . Ad esempio, non vi è alcuna implicazione che l'espansione binaria inizi come 0,01 ... o qualsiasi altra cosa - e non vi è alcuna implicazione che sia vicino a 1/2. potrebbe essere vicino a 0, o vicino a 1 o in qualsiasi punto intermedio; ciò non contraddice il fatto di essere normale e di essere normale non implica nulla su quanto sia grande .ΩΩΩΩΩ


Si noti che è la probabilità che una macchina di Turing casuale si arresti sotto una distribuzione molto strana. L'OP è interessato alla distribuzione uniforme (in un certo senso limitante). Quindi nessuno implica che è vicino a 1/2. ΩΩ
Yuval Filmus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.