Chaitins Konstante ist normal?


9

Nach dieser Quelle ist Chaitins Konstante normal.Ω

Jede Stoppwahrscheinlichkeit ist eine normale und transzendentale reelle Zahl, die nicht berechenbar ist, was bedeutet, dass es keinen Algorithmus gibt, um ihre Ziffern zu berechnen. In der Tat ist jede Stoppwahrscheinlichkeit Martin-Löf-zufällig, was bedeutet, dass es nicht einmal einen Algorithmus gibt, der seine Ziffern zuverlässig erraten kann.

Quelle (Wikipedia)

Weiterhin ist die Definition von normal, dass jede Ziffer mit gleicher Wahrscheinlichkeit auftritt . Und dass jedes Duett von Ziffern mit einer Wahrscheinlichkeit von und jedes Triplett mit einer Wahrscheinlichkeit von und so weiter auftritt .1 / b 2 1 / b 31/b1/b21/b3

Chaitins Omega wird über berechnet

Ω=phalts2|p|

Wenn wir Ω binär schreiben , erhalten wir eine Liste mit 0 und 1. Zum Beispiel:

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

Es ist klar zu sehen, dass die Position jedes Bits dem Haltezustand des dem Bit entsprechenden Längenprogramms entspricht.

Hier ist, womit ich zu kämpfen habe

Wenn Ω tatsächlich normal ist, bedeutet dies, dass genau 50% der Programme angehalten werden und genau 50% nicht. Dies scheint sehr kontraintuitiv zu sein.

Angenommen, ich generiere Java-Programme, indem ich einzelne Zeichen zufällig verkette. Die Mehrheit von ihnen würde ich schätzen, dass mehr als 99,99% nicht einmal kompilieren würden. Würde dies nicht bedeuten, dass mindestens 99,99% von ihnen nicht aufhören werden? Wie können wir rechtfertigen, dass genau die Hälfte anhält und genau die Hälfte nicht, da Ω normal ist?

Oder ist Wikipedia falsch, wenn normal ist?Ω


2
Willkommen auf der Seite! Wenn Sie Ihren LaTeX zwischen Dollar und nicht hinter Backticks setzen, können wir die Ausgabe und nicht die Quelle lesen.
David Richerby

1
Und für die Brüche \ frac {1} {b ^ 2} ergibt anstelle von . 1/b21b21/.b2
Evil

Ich glaube, dass Chaitins Omega für präfixfreie Turing Machine-Codierungen definiert ist, nicht für willkürliche Codierungen. Wenn ja, denke ich, dass unsere normalen Intuitionen in Bezug auf das, was ein "zufälliges" TM ausmacht, möglicherweise nicht so zuverlässig sind.
mhum

1
@mhum Sie können jedes Programm in eine präfixfreie Codierung umcodieren, indem Sie zwischen jedem Bit des ursprünglichen Programms eine 1 einfügen und es dann mit einer 0 beenden. Dann liest die Turing-Maschine jedes zweite Bit, bis sie die abschließende 0 findet. Dadurch bleibt der Java-Code erhalten, das Präfix ist jedoch frei. Daher bleibt das Problem bestehen.
Alexandre H. Tremblay

"Wenn Ω tatsächlich normal ist, bedeutet dies, dass genau 50% der Programme angehalten werden und genau 50% nicht. Dies scheint sehr kontraintuitiv zu sein." Dies bedeutet, dass asymptotisch die Hälfte der Programme angehalten wird. Das ist nicht so kontraintuitiv. Auch wenn es einige Mühe kosten kann, ein Stoppprogramm zu finden (dh Sie haben eine lange Folge von Nullen in Ω getroffen), wird Ihnen, sobald Sie eine gefunden haben, eine sehr lange Reihe von Stoppprogrammen folgen (dh eine gleich lange Folge von Einsen), z. B. Programme, die funktional dasselbe Programm sind, aber eine Reihe überflüssiger Kommentare enthalten (eine Art Pump-Lemma).
Marcel Besixdouze

Antworten:


9

Im Gegensatz zu Ihrem Beispiel ist die Chaitin-Konstante nicht wie folgt definiert:

Ω=n::nDas Programm wird angehalten2- -n.

Stattdessen gibt es eine Menge zulässiger Programme, die frei von Präfixen ist (keine Zeichenfolge ist ein Präfix einer anderen Zeichenfolge). Jedes der Programme in ist legal (dies negiert Ihr Java-Beispiel). Wenn die Programme unär codiert sind, hat das te Programm tatsächlich die Länge , und dann funktioniert Ihre Definition von . Für andere Codierungen lautet die Definition von jedoch Π n n & OHgr; & OHgr;Π{0,1}}ΠnnΩΩ

| p | p Σ p & egr ; & Pgr; 2 - | p | 1

Ω=pΠ::p hält an2- -|p|,
wobeiist die Länge der Binärzeichenfolge . Krafts Ungleichung zeigt, dass .|p|ppΠ2- -|p|1

Chaitins Konstante ist algorithmisch zufällig : Die (Präfix-) Kolmogorov-Komplexität der ersten Bits ist . Um dies zu zeigen, beachten Sie zuerst, dass , die ersten Bits von , ausreichen, um zu bestimmen, ob ein Programm der Länge (unter der Codierung ) angehalten wird oder nicht. In der Tat als Bruch . Führen Sie alle Programme parallel aus, und fügen Sie bei jedem Stopp von zu einem Zähler (initialisiert bei Null). Schließlich (seitn - O ( 1 ) Ω n n Ω n Π Ω nΩ < Ω n + 2 - n p 2 - | p | C C Ω n C Ω n Ω C + 2 - nΩ n + 2 - nnn- -Ö(1)ΩnnΩnΠΩnΩ<Ωn+2- -np2- -|p|C.C.ΩnC.Ωvon unten). Wenn an diesem Punkt das Eingabeprogramm der Länge nicht angehalten wurde, wissen Sie, dass es nicht angehalten wird, da ansonsten .nΩC.+2- -nΩn+2- -n

Angenommen, für einige und unendlich viele könnten Sie mit Bits berechnen . Für jedes dieser können Sie eine Zeichenfolge finden, deren Kolmogorov-Komplexität größer als , indem Sie die Ausgabe aller Stoppprogramme mit einer Länge von höchstens berücksichtigen . Für ausreichend großes ist das Ergebnis ein Programm mit einer Länge von höchstens zum Berechnen des a-Strings, dessen Kolmogorov-Komplexität mehr als beträgt . Dieser Widerspruch beweist, dass für einige die Kolmogorov-Komplexität von mindestens beträgt .n Ω n n - K n n n K n n K Ω n n - K.K.>0nΩnn- -K.nnnK.nnK.Ωnn- -K.

Die algorithmische Zufälligkeit von impliziert insbesondere, dass die Häufigkeit von 0s und 1s in ihrer binären Expansion zu 1/2 tendiert. Nehmen wir in der Tat an, dass für einige (rationale) unendlich viele so dass der Bruchteil von 1s in höchstens beträgt . Da es höchstens Zeichenfolgen mit höchstens vielen Einsen gibt, können wir auf die Größe komprimieren (die Konstante hängt von da das Programmε > 0 n Ω n 1 / 2 - ε 2 h ( 1 / 2 - ε ) n 1 / 2 - ε Ω n h ( 1 / 2 - ε ) n + 2 log n + C ε C ε ε ε n - ω ( 1 ) ΩΩϵ>0nΩn1/2ϵ2h(1/2ϵ)n1/2ϵΩnh(1/2ϵ)n+2logn+CϵCϵϵϵ). Dies ist jedoch , was der algorithmischen Zufälligkeit von widerspricht .nω(1)Ω


Vielen Dank für die sehr vollständige Antwort. Ich kämpfe mit dem ersten Absatz und entschuldige mich dafür, dass er nicht durch meinen Schädel gelangt. Wenn wir nur die Java-Programme nehmen, die kompiliert werden, und sie dann in unär codieren, bedeutet das dann, dass genau die Hälfte von ihnen anhält?
Alexandre H. Tremblay

@ AlexandreH.Tremblay Ja, das ist die Implikation. Für mehr empfehle ich ein Lehrbuch über Kolmogorov-Komplexität wie Li und Vitanyi.
Yuval Filmus

Könnten Sie die Turing-Maschine so gestalten, dass sie einen Java-Compiler enthält? Stellen Sie sich das vor. Listen Sie zunächst alle möglichen zufällig generierten Zeichenfolgen vom kürzesten zum längsten auf. Zweitens codieren Sie diese Zeichenfolgen in unär. Drittens führen Sie die unären Zeichenfolgen als Eingabe in die Turing-Maschine ein. Die Turing-Maschine prüft, ob die Eingabe in Java kompiliert wird. Wenn dies der Fall ist, wird es ausgeführt und die Hälfte wird angehalten und die andere Hälfte nicht. Wenn es nicht kompiliert wird, wird es für immer wiederholt (while (true) {};). Würde dies nicht das Verhältnis von Anhalten zu Nicht-Anhalten verzerren? Ich habe letzte Woche Li und Vitanyi gelesen, aber ich muss es noch einmal lesen;).
Alexandre H. Tremblay

Ich vermute, dass eine unäre Codierung in der von Ihnen vorgeschlagenen Weise nicht zulässig wäre . Beispielsweise können Sie bei unärer Codierung (auch bei einfacher) keine Programme mit konstantem Overhead erstellen. Ich würde Li und Vitanyi auf eine Liste von Eigenschaften überprüfen, die ein zulässiger Universalcomputer erfüllen muss. Dies wäre Teil der Definition der Kolmogorov-Komplexität.
Yuval Filmus

Hallo, können Sie den Abschnitt von Li und Vitanyi empfehlen, in dem diese Informationen vorhanden sind? Ich las das Buch ein zweites Mal und konnte es nicht finden.
Alexandre H. Tremblay

0

Ihr Fehler steht in der folgenden Zeile:

Wenn tatsächlich normal ist, bedeutet dies, dass genau 50% der Programme angehalten werden und genau 50% nicht.Ω

Nee. Das ist nicht was "normal" bedeutet. Oder anders ausgedrückt: Definieren Sie als die Anzahl der Bits, die eine 0 sind, in den ersten Bits der Basis-2-Erweiterung von . Zu sagen , dass ist normale bedeutet , dassn Ω Ωd0(n)nΩΩ

limnd0(n)n=1/2.

Mit anderen Worten, "normal" ist eine asymptotische Vorstellung. Dies bedeutet, dass, wenn Sie weit genug in die Teile von schauen , durchschnittlich etwa die Hälfte davon Nullen sind. (In ähnlicher Weise ist ungefähr die Hälfte mit 1.)Ω

Dies sagt jedoch nichts über die ersten paar Teile von . Zum Beispiel gibt es keine Implikation, dass die binäre Erweiterung mit 0,01 beginnt ... oder irgendetwas anderes - und es gibt keine Implikation, dass nahe bei 1/2 liegt. kann nahe bei 0 oder nahe bei 1 oder irgendwo dazwischen liegen. das widerspricht nicht dem Normalsein, und Normalität bedeutet nichts darüber, wie groß ist.ΩΩΩΩΩ


Beachten Sie, dass die Wahrscheinlichkeit ist, dass eine zufällige Turing-Maschine unter einer sehr seltsamen Verteilung anhält. Das OP ist an der gleichmäßigen Verteilung interessiert (in einem einschränkenden Sinne). Also impliziert niemand, dass nahe bei 1/2 liegt. ΩΩ
Yuval Filmus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.