Helfen Sie mit, einen Fehler in Argumenten zu finden, der große Turiermaschinen mit kleineren Simulieren

cs.stackexchange https://cs.stackexchange.com/questions/121911

  •  29-09-2020
  •  | 
  •  

Frage

Ich habe ein Argument, das, wenn es durchgeht, nur weist darauf nachweist:

  • Programmiersprachen sind stärker als Turing-Maschinen
  • Die belebte Biberfunktion ( $ BB () $ ) auf Turing-Maschinen ist berechenbar

Ich verstehe jetzt, dass es enormer ist, dass mein Argument einen Fehler hat, den ich nicht finden kann. Aber es ist interessanter für mich wie ich bin falsch, anstatt ob ich falsch bin.

Argument

Konstruieren Sie eine Turing-Maschine $ M_1 $ , wie sie als Argumente (auf dem Band) $ N, K $ < / span>, simuliert alle Turing-Maschinen mit $ n $ , bis $ k $ von ihnen halt, und dann hält sich an. Dies ist einfach, in einer Programmiersprache zu schreiben, wie der folgende Python-Snippet demonstriert:

generasacodicetagpre.

Jetzt, let $ m_1 $ Seien Sie die Anzahl der Zustände, die von $ M_1 $ $ erforderlich sind. Fix $ N $ viel größer als $ m_1 $ . Lassen Sie $ k_1 $ die größte Zahl sein, die $ M_1 (N, K_1) $ hält und $ k_0 $ Seien Sie die kleinste Anzahl derart, dass, wenn $ M_1 (n, k_0) $ hehre, stoppt, $ k_1 $ Simulierte Turing-Maschinen haben angehalten (da alle äquivalenten Maschinen auf demselben Schritt hallt). Wählen Sie $ K $ mit $ k_0 \ leq k \ leq k_1 $ . Dies bedeutet, dass $ M_1 (n, k) $ in etwa $ BB (n) $ Schritte installiert.

construct $ M_2 $ das ist derselbe wie $ m_1 $ , außer das erste, was es tut Schreiben Sie $ N $ und $ K $ an das Band. Lassen Sie $ M_2 $ die Anzahl der Zustände sein, die von $ M_2 $ erforderlich ist. Dann $ m_1 + k (n) + k (k) + c= m_2 $ für einige kleine $ C $ (das wahrscheinlich konstant und wahrscheinlich ist $ 0 $ ), mit $ k (n) $ das sein Kolmogorov-Komplexität von $ n $ in Turing-Maschinenzustände.

jetzt, $ k (n) $ ist höchstens $ O (\ \ \ log (n)) $ . Es gibt etwa $ n ^ N $ Maschinen mit $ N $ , so $ k $ ist ungefähr $ n $ n $ und somit $ k (k) $ ist höchstens $ o (\ log (n ^ n))= o (n \ cdot \ log (n)) $ . Das bedeutet, dass $ M_2> N $ . Aber hier haben wir ein Problem: Wenn $ k $ einfacher an das Band schreiben ist (so dass $ k (k) ), dann $ m_2 $ wäre etwas kleiner als $ n $ . Das würde bedeuten $ bb (m_2)> bb (n) $ und $ m_2 , a eindeutig Widerspruch.

In meinem Kopf sind dies die möglichen Auflösungen:

  • $ M_1 $ ist nicht möglich, als Turing-Maschine zu schaffen, was bedeutet, dass Python stärker ist als Turing-Maschinen.
  • Es gibt einige transfinitelische Erweiterung an Turing-Maschinen, die nicht viel leistungsfähiger sind als Turing-Maschinen im Allgemeinen, und $ M_1 $ kann in dieser Erweiterung geschrieben werden. Mit anderen Worten, $ M_1 $ ist die Grenze eines Satzes von Maschinen $ m_ {1, n} $ , von denen jede einen beliebigen $ n handhaben kann. Dies würde wahrscheinlich die belebte Biberfunktion beinhalten, die berechenbar ist.
  • Es gibt einen großen Satz von Zahlen, die nicht von einer Turing-Maschine in viel weniger als $ \ log (k)= n $ -Astschriften geschrieben werden (wir brauchen < Span-Klasse="Math-Container"> $ k (k) ). Es erscheint mir unmöglich, dass kein Kandidat für $ (n, k) $ ausreichend komprimiert werden könnte.

Wo ist der Fehler in dieser Logik?


Ich hatte zuvor gesagt, dass $ k (k) \ leq o (n) $ , aber @ 6005 wies darauf hin, dass der Verdächtige war. Mit diesem behobenen (zu $ o (n \ cdot \ log (n)) $ ) erscheint es mir immer noch sehr überraschend, dass wir keine Reduktion aus erreichen können $ k (k) \ ca. n \ cdot \ log (n) $ <

/ span> bis $ k (k) für jeden möglichen Wert von $ (n, k) $ , aber nicht mehr unvorstellbar.

War es hilfreich?

Lösung

Ihr Fehler scheint hier zu sein:

jetzt, $ k (n) $ ist höchstens $ O (\ \ \ log (n)) $ . $ K $ ist ungefähr $ n ^ n $ , so $ K (k) $ ist höchstens $ o (n) $ . Das bringt $ M_2 $ nur etwas größer als $ n $ .

Es stimmt, dass $ K $ ungefähr $ n ^ N $ ist (genauer, $ k= n ^ {\ theta (n)} $ oder $ k= 2 ^ {\ theta (n \ log n) } $ , und dies kann durch die obere Begrenzung von $ K $ von der Anzahl der Turing-Maschinen angezeigt werden, und unter der niedrigeren Begrenzung, indem Sie eine Familie mit einfacher Halting-Turing finden Maschinen). Das bedeutet jedoch nicht, dass $ k (k) $ höchstens $ o (n) $ . Vielmehr wissen wir nur, dass $ k (k) $ höchstens ist $$ O (\ \ log (n ^ n))= o (n \ log n). $$

Ihr Widerspruch verlässt sich auf die Kommissionierung $ K $ , so dass $ k (k) $ $ O (n) $ (ein bisschen kleiner als $ N $ ). Ihre Argumentation zeigt, dass dies unmöglich ist.

Dies ist jedoch nicht zu überraschend: Die meisten $ K $ Wir erwarten, um $ O (n \ log n ) $ , und $ K $ ist eine Zahl, die viele Informationen über Turing-Maschinen mit $ n enthält $ Zustände, sodass wir nicht erwarten, eine solche Anzahl an kleiner als $ O (n) $ zu komprimieren. .


ps die Frage stellt, ob Python wirklich eigentliche Turing-Maschinen entspricht (wahrscheinlich niemand weiß, wie es nicht formal gezeigt wurde), ist Ihr ProgrammM1 tatsächlich eindeutig als eindeutig Turing Maschine. Daraus sollten Sie sehen können, dass die Auflösungen, die auf dem auf dem generativen Grizitätsmaterial basieren, nicht ausgebildet sind, da eine Turingmaschine nicht korrekt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top