Halting problem

Im Computerbarkeitstheorie, das Problem stoppen ist das Problem der Bestimmung aus einer Beschreibung eines willkürlichen Computer Programm und eine Eingabe, ob das Programm das Laufen beendet oder weiterhin für immer läuft. Alan Turing 1936 bewiesen, dass ein General Algorithmus Um das Ansteckproblem für alle möglichen Programm-Input-Paare zu lösen, kann es nicht vorhanden sein.

Für jedes Programm f Dies könnte bestimmen, ob Programme ein "pathologisches" Programm anhalten g, mit einigen Eingaben genannt, kann eine eigene Quelle und ihre Eingabe an übergeben f und dann speziell das Gegenteil von was tun f prognostiziert g Wird besorgt. Nein f kann existieren, die diesen Fall behandeln. Ein wesentlicher Bestandteil des Beweises ist eine mathematische Definition eines Computers und Programms, das als a bekannt ist Turing Maschine; Das Stoppproblem ist unentscheidbar über Turing -Maschinen. Es ist einer der ersten Fälle von Entscheidungsprobleme erwiesen sich als unlösbar. Dieser Beweis ist für die praktischen Rechenbemühungen von Bedeutung und definiert eine Klasse von Anwendungen, die keine Programmierungserfindung möglicherweise perfekt abschneiden kann.

Jack Copeland führt die Einführung des Begriffs zu Problem stoppen zur Arbeit von Martin Davis in den 1950ern.[1]

Hintergrund

Das Stoppproblem ist ein Entscheidungsproblem für Eigenschaften von Computerprogrammen auf einem festen Turing-Complete Berechnungsmodell, d. H. Alle Programme, die in einigen gegeben werden können Programmiersprache Das ist allgemein genug, um einer Turing -Maschine gleich zu sein. Das Problem besteht darin, ein Programm und eine Eingabe in das Programm zu bestimmen, ob das Programm letztendlich beim Ausführen dieser Eingabe anhalten wird. In diesem abstrakten Framework gibt es keine Ressourcenbeschränkungen für den Speicher oder die Zeit, die für die Ausführung des Programms erforderlich ist. Es kann willkürlich lang dauern und eine willkürliche Menge an Speicherplatz verwenden, bevor Sie anhalten. Die Frage ist einfach, ob das angegebene Programm einen bestimmten Eingang jemals einstellen wird.

Zum Beispiel in Pseudocode, das Programm

während (wahr) weitermachen

hält nicht an; Vielmehr geht es für immer in einem weiter Endlosschleife. Andererseits das Programm

Drucken Sie "Hallo, Welt!"

Halt.

Bei der Entscheidung, ob diese Programme einfach anhalten, erweisen sich komplexere Programme als problematisch. Ein Ansatz für das Problem könnte darin bestehen, das Programm für eine Reihe von Schritten auszuführen und zu überprüfen, ob es anhielt. Wenn das Programm jedoch nicht anhält, ist es nicht bekannt, ob das Programm ewig anhalten oder läuft. Turing hat gezeigt, dass kein Algorithmus vorhanden ist, der immer korrekt entscheidet, ob das Programm für ein bestimmtes willkürliches Programm und die Eingabe beim Ausführen dieser Eingabe anhält. Die Essenz von Turings Beweis ist, dass ein solcher Algorithmus zur Erzeugung widersprüchlicher Ausgabe erzeugt werden kann und daher nicht korrekt sein kann.

Programmierkonsequenzen

Etwas Unendliche Schleifen kann sehr nützlich sein. Zum Beispiel, Ereignisschleifen werden typischerweise als unendliche Schleifen codiert.[2] Die meisten Unterroutinen sollen jedoch fertig werden.[3] Insbesondere in hart Echtzeit-Computing, Programmierer versuchen, Unterprogramme zu schreiben, die nicht nur garantiert abgeschlossen sind, sondern auch garantiert vor einer bestimmten Frist enden werden[4]

Manchmal verwenden diese Programmierer eine allgemeine Programmiersprache (Turing-Complete), aber versuchen, in einem eingeschränkten Stil zu schreiben-zum Beispiel als Misra c oder FUNKE- Dies erleichtert es leicht zu beweisen, dass die resultierenden Unterprogramme vor der angegebenen Frist enden.

In anderen Fällen wenden diese Programmierer die an Regel der geringsten Macht-Sie verwenden absichtlich eine Computersprache, die nicht ganz vollständig abgeschlossen ist. Häufig sind dies Sprachen, die alle Subroutinen -Finishs garantieren, wie z. Coq.

Häufige Fehler

Die Schwierigkeit beim Anhalten von Problemen liegt in der Anforderung, dass das Entscheidungsverfahren für alle Programme und Eingaben funktionieren muss. Ein bestimmtes Programm hält entweder bei einem bestimmten Eingang an oder hält nicht an. Betrachten Sie einen Algorithmus, der immer "Halt" beantwortet, und einen anderen, der immer antwortet, dass "nicht anhält". Für jedes bestimmte Programm und jede Eingabe antwortet einer dieser beiden Algorithmen richtig, obwohl niemand weiß, welcher. Dennoch löst keiner der Algorithmus das Stoppproblem im Allgemeinen.

Es gibt Programme (Dolmetscher) die die Ausführung des von ihnen angegebenen Quellcodes simulieren. Solche Programme können nachweisen, dass ein Programm anhält, wenn dies der Fall ist: Der Dolmetscher selbst wird letztendlich seine Simulation einstellen, was zeigt, dass das ursprüngliche Programm gestoppt wird. Ein Dolmetscher wird jedoch nicht anhalten, wenn sein Eingabeprogramm nicht anhält, sodass dieser Ansatz das Anhaltsproblem nicht wie angegeben nicht lösen kann. Es wird nicht erfolgreich geantwortet, dass "nicht anhält" für Programme, die nicht anhalten.

Das Stoppproblem ist theoretisch lichtdurchschnittlich für linear begrenzte Automaten (LBAs) oder deterministische Maschinen mit endlichem Speicher. Eine Maschine mit endlichem Speicher verfügt über eine endliche Anzahl von Konfigurationen, und daher muss ein deterministisches Programm irgendwann eine vorherige Konfiguration entweder stoppen oder wiederholen:[5]

...Jede Finite-State-Maschine wird, wenn sie vollständig sich selbst überlassen, schließlich in ein perfekt regelmäßiges Wiederholungsmuster fallen. Die Dauer dieses sich wiederholenden Musters darf die Anzahl der internen Zustände der Maschine nicht überschreiten ...

Ein Computer mit einer Million kleiner Teile mit jeweils zwei Staaten hätte jedoch mindestens 21.000.000 Mögliche Zustände:[6]

Dies ist eine 1, gefolgt von etwa dreihunderttausend Nullen ... selbst wenn eine solche Maschine mit den Häufigkeiten kosmischer Strahlen arbeiten würde, wären die Aeonen der galaktischen Evolution nichts im Vergleich zur Zeit einer Reise durch einen solchen Zyklus:

Obwohl eine Maschine endlich sein kann und endliche Automata "eine Reihe theoretischer Einschränkungen haben":[6]

... Die damit verbundenen Größen sollten dazu führen, dass die Theoreme und Argumente hauptsächlich auf der bloßen Endlichkeit des staatlichen Diagramms basieren.

Es kann auch automatisch festgelegt werden, ob eine nicht deteterministische Maschine mit endlichem Speicher auf keine, einige oder alle möglichen Sequenzen nicht -detterministischer Entscheidungen hält, indem Zustände nach jeder möglichen Entscheidung aufgezählt.

Geschichte

Das Stoppproblem ist historisch wichtig, da es eines der ersten Probleme war, die bewiesen wurden unentscheidbar. Im April 1936, Alonzo -Kirche veröffentlichte seinen Beweis für die Unentscheidbarkeit eines Problems in der Lambda -Kalkül. Turings Beweis wurde später, im Januar 1937, veröffentlicht. Seitdem wurden viele andere unentscheidbare Probleme beschrieben.

Zeitleiste

  • 1900: David Hilbert stellt seine "23 Fragen" (jetzt bekannt als bekannt als Hilberts Probleme) bei der zweiten Internationaler Kongress der Mathematiker in Paris. "Von diesen war der zweite die Bestätigung der Konsistenz der 'Peano -Axiome"Von welchem, wie er gezeigt hatte, hing die Strenge der Mathematik ab".[7]
  • 1920 - 1921: Emil Post untersucht das Stoppproblem für Tag -Systeme, betragen es als Kandidat für Unlösbarkeit.[8] Seine Unlöslichkeit wurde erst viel später durch festgelegt Marvin Minsky.[9]
  • 1928: Hilbert setzt sein "zweites Problem" auf dem Bologna International Congress neu.[10] Er stellte drei Fragen: d. H. #1: war Mathematik Komplett? #2: war Mathematik konsistent? #3: war Mathematik entschlossen?[11] Die dritte Frage ist als die bekannt Entscheidungsproblem (Entscheidungsproblem).[12]
  • 1930: Kurt Gödel kündigt einen Beweis als Antwort auf die ersten beiden von Hilberts Fragen von 1928 an.[13] "Zuerst war er [Hilbert] nur wütend und frustriert, aber dann begann er zu versuchen, konstruktiv mit dem Problem umzugehen ... Gödel selbst fühlte sich - und drückte den Gedanken in seiner Zeitung aus - dass seine Arbeit Hilberts formalistischen Punkt nicht widersprach Aussicht"[14]
  • 1931: Gödel veröffentlicht "über formell unentscheidbare Aussagen von Principia Mathematica und verwandten Systemen i"[15]
  • 19. April 1935: Alonzo -Kirche Veröffentlichung "ein unlösbares Problem der Elementarzahltheorie", das vorschlägt, dass der intuitive Begriff eines effektiv kalkulierbar Funktion kann durch die formalisiert werden Allgemeine rekursive Funktionen oder äquivalent von der Lambda-definierbare Funktionen. Er beweist, dass das Anhaltsproblem für Lambda-Kalkül (d. H. Ob eine gegebene Lambda-Expression a ist Normale Form) ist nicht effektiv kalkulierbar.[16]
  • 1936: Kirche veröffentlicht den ersten Beweis, dass der Entscheidungsproblem ist unlösbar.[17]
  • 7. Oktober 1936: Emil Post's Paper "Finite -Kombinationsprozesse. Formulierung i" wird empfangen. Post fügt zu seinem "Prozess" eine Anweisung "(c) Stopp" hinzu. Er nannte einen solchen Prozess "Typ 1 ... Wenn der Prozess, den er bestimmt, wird für jedes spezifische Problem endet."[18]
  • Mai 1936 - Januar 1937: Alan TuringPapier Auf berechnungsable Zahlen mit einer Anwendung auf das Inentschen -Problem Ging im Mai 1936 zum Presse und erreichte im Januar 1937 den Druck.[19] Der Beweis von Turing geht von der Berechnung durch rekursive Funktionen und führt den Begriff der Berechnung durch Maschine ein. Dies ist eines der "ersten Beispiele für Entscheidungsprobleme als unlösbar".[20][Seite benötigt]
  • 1939: J. Barkley Rosser beobachtet die wesentliche Äquivalenz der durch Gödel, Kirche und Turing definierten "wirksamen Methode"[21]
  • 1943: In einem Papier, Stephen Kleene Gibt an, dass "bei der Einrichtung einer vollständigen algorithmischen Theorie wir ein Verfahren beschreiben ... welches Verfahren notwendigerweise endet und auf eine solche Weise, dass wir aus dem Ergebnis eine bestimmte Antwort" Ja "oder" Nein "auf die lesen können Frage: "Ist der Prädikatwert wahr?". ".
  • 1952: Kleene beinhaltet eine Diskussion über die Unlösbarkeit des Stoppproblems für Turing -Maschinen und formuliert es in Bezug auf Maschinen, die "schließlich aufhören", d. H. Haltestand: "... es gibt keinen Algorithmus für die Entscheidung, ob eine bestimmte Maschine gestartet wird, wenn eine bestimmte Maschine gestartet wird Lage, Halt es schließlich an. "[22]
  • 1952: Martin Davis Verwendet den Begriff "Stoßproblem" in einer Reihe von Vorträgen im Control Systems Laboratory der University of Illinois 1952. Es ist wahrscheinlich, dass dies die erste derartige Verwendung des Begriffs ist.[23]

Etymologie des Ausdrucks "Problem des Problems"

In keinem seiner Arbeit verwendete Turing das Wort "Stoppen" oder "Kündigung". Der Biograf Hodges von Turing hat nicht das Wort "Stoß" oder Wörter "Staltenproblem" in seinem Index. Die früheste aufgezeichnete Verwendung der Wörter "Stoßproblem" ist in einem Beweis von Davis im Jahr 1958:[24]

"Satz 2.2 Es gibt eine Turing -Maschine, deren Anstillungsproblem rekursiv unlösbar ist.
Ein verwandtes Problem ist das Druckproblem Für eine einfache Turing -Maschine Z in Bezug auf ein Symbol si".

Davis fügt keine Zuschreibung für seinen Beweis hinzu, sodass man sich mit ihm original original macht. Aber Davis hat gesagt, dass Kleene den Beweis informell erklärte.[22] Copeland gibt an:[1]

"Das Stoppproblem wurde so benannt (und es scheint, zuerst angegeben)[23] Von Martin Davis ... (es wird oft gesagt, dass Turing den Stillstand in "über berechnungsbare Zahlen" angegeben und bewiesen hat, aber ausschließlich ist dies nicht wahr). "

Formalisierung

In seinem ursprünglichen Beweis formalisierte Turing das Konzept von Algorithmus durch Einführung Turing -Maschinen. Das Ergebnis ist für sie jedoch in keiner Weise spezifisch; es gilt gleichermaßen für jedes andere Modell von Berechnung Das entspricht seiner Rechenleistung für Turing -Maschinen, wie z. Markov -Algorithmen, Lambda -Kalkül, Postsysteme, Maschinen registrieren, oder Tag -Systeme.

Wichtig ist, dass die Formalisierung eine einfache Zuordnung von Algorithmen zu einigen ermöglicht Datentyp dass die Algorithmus kann operieren. Zum Beispiel wenn die Formalismus Lassen Sie Algorithmen Funktionen über Zeichenfolgen (z. B. Turing -Maschinen) definieren, dann sollte es eine Zuordnung dieser Algorithmen zu Zeichenfolgen geben, und wenn der Formalismus Algorithmen über natürliche Zahlen definieren lässt (wie z. berechnungsbare Funktionen) Dann sollte es eine Zuordnung von Algorithmen zu natürlichen Zahlen geben. Die Zuordnung zu Saiten ist normalerweise die einfachste, aber Strings über einem Alphabet mit n Figuren kann auch Zahlen zugeordnet werden, indem sie als Zahlen in einem interpretiert werden n-ary Ziffernungssystem.

Darstellung als Set

Die konventionelle Darstellung von Entscheidungsproblemen ist die Reihe von Objekten, die das fragliche Eigentum besitzen. Das Stoppset

K = {(((i, x) | Programm i hält beim Ausführen der Eingabe an x}

repräsentiert das Stoppproblem.

Dieser Satz ist rekursiv aufgezähltDies bedeutet, dass es eine berechnungsbare Funktion gibt, die alle Paare auflistet (iAnwesendx) es beinhaltet. Die Ergänzung dieses Satzes ist jedoch nicht rekursiv aufgezählt.[25]

Es gibt viele äquivalente Formulierungen des Stoppproblems; Jeder Set, dessen Turing -Abschluss entspricht dem des Stoppproblems ist eine solche Formulierung. Beispiele für solche Sets sind:

  • {i | Programm i Halten schließlich beim Ausführen mit Eingabe 0} an
  • {i | Es gibt einen Eingang x so dieses Programm i Halt schließlich beim Ausführen mit Eingaben an x}.

Beweiskonzept

Christopher Strachey umrissen a Beweis durch Widerspruch Dass das Stoppproblem nicht lösbar ist.[26][27] Der Beweis verläuft wie folgt: Angenommen, es gibt a gesamt berechnungsbare Funktion Halt (f) Das gibt wahr, wenn die Unterroutine f Stoppt (wenn er ohne Eingaben ausgeführt wird) und gibt ansonsten falsche zurück. Betrachten Sie nun die folgende Unterroutine:

def g():  wenn Halt(g):  Loop_forever() 

Halt (g) muss entweder wahr oder falsch zurückgeben, weil Halt wurde angenommen sein gesamt. Wenn Halt (g) Gibt dann wahr zurück g werde anrufen Loop_forever und halt niemals, was ein Widerspruch ist. Wenn Halt (g) Gibt dann false zurück g wird anhalten, weil es nicht anrufen wird Loop_forever; Dies ist auch ein Widerspruch. Gesamt, g tut das Gegenteil von was Halt sagt g sollte so tun, so Halt (g) kann einen Wahrheitswert nicht zurückgeben, der mit der Frage übereinstimmt g Halt. Daher die anfängliche Annahme das Halt ist eine total berechnbare Funktion muss falsch sein.

Skizze von strengen Beweisen

Das obige Konzept zeigt die allgemeine Methode des Beweises, aber die berechnbare Funktion Halt Nimmt keine Unterroutine als Argument direkt; Stattdessen nimmt es den Quellcode eines Programms an. Darüber hinaus die Definition von g ist selbstreferenziell. Ein strenger Beweis befasst sich mit diesen Problemen. Das Gesamtziel ist zu zeigen, dass es keine gibt gesamt berechnungsbare Funktion Das entscheidet, ob ein willkürliches Programm i Halt bei willkürlicher Eingabe x; das heißt die folgende Funktion h (für "Stalten") ist nicht berechnet:[28]

Hier Programm i bezieht sich auf i th Programm in einem Aufzählung von allen Programmen eines festen Turing-Complete Berechnungsmodell.

f(i,j)) i
1 2 3 4 5 6
j 1 1 0 0 1 0 1
2 0 0 0 1 0 0
3 0 1 0 1 0 1
4 1 0 0 1 0 0
5 0 0 0 1 1 1
6 1 1 0 0 1 0
f(i,i)) 1 0 0 1 1 0
g(i)) U 0 0 U U 0

Mögliche Werte für eine total berechnbare Funktion f in einem 2D -Array angeordnet. Die orangefarbenen Zellen sind die Diagonale. Die Werte von f(i,i) und g(i) sind unten angezeigt; U zeigt an, dass die Funktion g ist für einen bestimmten Eingabewert undefiniert.

Der Nachweis erfolgt direkt, indem er direkt feststellt h. Wie in der Skizze des Konzepts angesichts einer gesamten berechnungsbaren Binärfunktion f, folgende Teilfunktion g ist auch von einem Programm berechnet e:

Die Überprüfung das g berechnet berechnet auf den folgenden Konstrukten (oder deren Äquivalenten):

  • Berechnbare Unterprogramme (das Programm, das berechnet wird f ist ein Subprogramm im Programm e),
  • Duplizierung von Werten (Programm e berechnet die Eingänge i,i zum f Aus der Eingabe i zum g),
  • Bedingte Verzweigung (Programm e Wählt zwischen zwei Ergebnissen ab, abhängig vom Wert, für den er berechnet wird f(i,i)),
  • Nicht ein definiertes Ergebnis erzeugen (zum Beispiel durch für immer schleife),
  • Rückgabe eines Wertes von 0.

Folgende Pseudocode zum e veranschaulicht einen einfachen Weg, um zu berechnen g:

Verfahren e(i):  wenn f(i, i) == 0 dann  Rückkehr 0  anders  Schleife bis in alle Ewigkeit 

Da g ist partiell berechnet, es muss ein Programm geben e das berechnet gdurch die Annahme, dass das Berechnungsmodell abgeschlossen ist. Dieses Programm ist eines der Programme, bei denen die Stillstandsfunktion h ist definiert. Der nächste Schritt des Beweises zeigt das h(e,e) hat nicht den gleichen Wert wie f(e,e).

Es folgt aus der Definition von g Das genau einer der folgenden zwei Fälle muss gelten:

  • f(e,e) = 0 und so g(e) = 0. In diesem Fallprogramm e Halt bei der Eingabe e, Also h(e,e) = 1.
  • f(e,e) ≠ 0 und so g(e) ist nicht definiert. In diesem Fallprogramm e hält die Eingabe nicht an e, Also h(e,e) = 0.

In beiden Fällen, f kann nicht die gleiche Funktion sein wie h. Da f war ein willkürlich Die gesamte berechnungsbare Funktion mit zwei Argumenten, von denen alle dieser Funktionen abweichen müssen h.

Dieser Beweis ist analog zu Cantors diagonales Argument. Man kann ein zweidimensionales Array mit einer Spalte und einer Zeile für jede natürliche Zahl visualisieren, wie in der obigen Tabelle angegeben. Der Wert von f(i,j) wird an der Säule platziert i, die Zeile j. Da f Es wird angenommen f. Der Konstruktion der Funktion g kann mit der Hauptdiagonale dieses Arrays sichtbar gemacht werden. Wenn das Array eine 0 an Position hat (i,i), dann g(i) ist 0. Ansonsten, g(i) ist nicht definiert. Der Widerspruch ergibt sich aus der Tatsache, dass es eine Spalte gibt e des Arrays, der entspricht g selbst. Nehmen Sie jetzt an f war die Stoppfunktion h, wenn g(e) ist definiert (g(e) = 0 in diesem Fall),, g(e) hält so an f(e, e) = 1. Aber g(e) = 0 nur wenn f(e, e) = 0, Widerspruch f(e, e) = 1. In ähnlicher Weise, wenn g(e) ist nicht definiert und dann die Funktion anhalten f(e, e) = 0, was zu g(e) = 0 unter g'S Konstruktion. Dies widerspricht der Annahme von g(e) nicht definiert werden. In beiden Fällen entsteht Widerspruch. Daher jede willkürliche berechnungsbare Funktion f Kann nicht die Stoppfunktion sein h.

Computerbarkeitstheorie

Eine typische Methode, um ein Problem zu beweisen, das nicht entscheidbar ist reduzieren es zum Stoppproblem. Zum Beispiel kann es keinen allgemeinen Algorithmus geben, der entscheidet, ob eine bestimmte Aussage über natürliche Zahlen ist wahr oder falsch. Der Grund dafür ist, dass die Vorschlag Die Angabe, dass ein bestimmtes Programm angesichts einer bestimmten Eingabe in eine äquivalente Aussage über natürliche Zahlen umgewandelt werden kann. Wenn ein Algorithmus den Wahrheitswert jeder Aussage über natürliche Zahlen finden könnte, könnte er sicherlich den Wahrheitswert dieses einen finden; Das würde jedoch bestimmen, ob das ursprüngliche Programm anhält.

Reis Satz verallgemeinert den Satz, dass das Anhaltsproblem nicht löslich ist. Es heißt das für irgendein Nicht-triviale Eigenschaft gibt es kein allgemeines Entscheidungsverfahren, das für alle Programme entscheidet, ob die vom Eingabeprogramm implementierte Teilfunktion diese Eigenschaft hat. (Eine Teilfunktion ist eine Funktion, die möglicherweise nicht immer ein Ergebnis erzeugt, und wird daher zum Modellieren von Programmen verwendet, die entweder Ergebnisse erzielen oder nicht anhalten können.) Beispielsweise ist die Eigenschaft "Stopp für die Eingabe 0" unentscheidbar. Hier bedeutet "nicht trivial", dass die Menge der Teilfunktionen, die die Eigenschaft erfüllen, weder der leere Satz noch die Menge aller Teilfunktionen sind. Zum Beispiel gilt "Stopp oder Nichtstörungen bei der Eingabe 0" eindeutig für alle Teilfunktionen, daher ist es eine triviale Eigenschaft und kann von einem Algorithmus entschieden werden, der einfach "wahr" berichtet. Außerdem gilt dieser Satz nur für Eigenschaften der vom Programm implementierten Teilfunktion. Rice's Theorem gilt nicht für Eigenschaften des Programms selbst. Zum Beispiel "In der Eingabe 0 innerhalb von 100 Schritten stehen" ist beispielsweise nicht Eine Eigenschaft der Teilfunktion, die vom Programm implementiert wird - es ist eine Eigenschaft des Programms, das die Teilfunktion implementiert, und ist sehr entzückend.

Gregory Chaitin hat a definiert Wahrscheinlichkeit stoppen, dargestellt durch das Symbol Ω, eine Art realer Zahl, die informell die repräsentieren soll Wahrscheinlichkeit dass ein zufällig produziertes Programm anhält. Diese Zahlen haben das gleiche Turing -Abschluss als stillendes Problem. Es ist ein normal und Transzendentale Nummer welches sein kann definiert kann aber nicht vollständig sein berechnet. Dies bedeutet, dass man beweisen kann, dass es keine gibt Algorithmus Dies erzeugt die Ziffern von ω, obwohl seine ersten Ziffern in einfachen Fällen berechnet werden können.

Während der Beweis von Turing zeigt, dass es keine allgemeine Methode oder keine allgemeine Algorithmus geben kann, um festzustellen, ob Algorithmen anhalten, können einzelne Instanzen dieses Problems sehr gut anfällig für Angriffe sein. Bei einem bestimmten Algorithmus kann man oft zeigen, dass es für jede Eingabe anhalten muss, und tatsächlich Informatiker oft genau das als Teil eines Korrektheitserscheinung. Jeder Beweis muss jedoch speziell für den vorliegenden Algorithmus entwickelt werden. es gibt kein mechanischer, allgemeiner Weg Um festzustellen, ob Algorithmen auf einem Turing -Maschine stehen. Es gibt jedoch einige Heuristik Dies kann automatisch verwendet werden, um einen Beweis zu erstellen, der häufig bei typischen Programmen erfolgreich ist. Dieser Forschungsbereich ist als automatisiert bekannt Terminierungsanalyse.

Da die negative Antwort auf das Stoppproblem zeigt, dass es Probleme gibt, die von einer Turing -Maschine nicht gelöst werden können, ist die These der Kirche und tätige These begrenzt das, was von jeder Maschine erreicht werden kann, die implementiert Wirksame Methoden. Allerdings sind nicht alle Maschinen, die für die menschliche Phantasie denkbar sind, der kirchlichen These unterliegen (z. Orakelmaschinen). Es ist eine offene Frage, ob es tatsächlich deterministisch sein kann physische Prozesse dass auf lange Sicht eine Simulation einer Turing -Maschine und insbesondere, ob ein solcher hypothetischer Prozess sinnvoll in Form einer Berechnungsmaschine (a Hypercomputer) Das könnte das Ansteckproblem für eine Turing -Maschine unter anderem lösen. Es ist auch eine offene Frage, ob solche unbekannten physikalischen Prozesse an der Arbeit des menschliches Gehirn, und ob Menschen das Stoppproblem lösen können.[29]

Gödels unvollständige Theoreme

Die Konzepte, die von erhoben werden von Gödels unvollständige Theoreme sind denjenigen, die durch das Störungsproblem angesprochen werden, sehr ähnlich, und die Beweise sind ziemlich ähnlich. Tatsächlich ist eine schwächere Form des ersten Unvollständigkeitssatzes eine einfache Folge der Unentschlossenheit des Stoppproblems. Diese schwächere Form unterscheidet sich von der Standardaussage des Unvollständigkeitssatzes durch die Behauptung, dass ein Axiomatisierung der natürlichen Zahlen, die sowohl vollständig als auch abgeschlossen sind und Klang ist unmöglich. Der "Schall" -Teil ist die Schwächung: Dies bedeutet, dass wir das betreffende axiomatische System benötigen, um nur nachzuweisen Stimmt Aussagen über natürliche Zahlen. Da impliziert Klang KonsistenzDiese schwächere Form kann als als gesehen werden logische Folge der starken Form. Es ist wichtig zu beachten mathematischer Beweis.

Die schwächere Form des Satzes kann sich aus der Unentschlossenheit des Stoßproblems wie folgt bewiesen. Angenommen, wir haben einen Ton (und damit konsistent) und vollständig Axiomatisierung von allen wahr Logik erster Ordnung Aussagen über natürliche Zahlen. Dann können wir einen Algorithmus erstellen, der all diese Aussagen auflistet. Dies bedeutet, dass es einen Algorithmus gibt N(n) das, bei einer natürlichen Zahl nberechnet eine echte logische Anweisung erster Ordnung über natürliche Zahlen, und für alle wahren Aussagen gibt es mindestens einen n so dass N(n) ergibt diese Aussage. Nehmen wir nun an, wir möchten entscheiden, ob der Algorithmus mit der Darstellung a Halt bei der Eingabe i. Wir wissen, dass diese Aussage mit einer logischen Erklärung erster Ordnung ausgedrückt werden kann, sagen wir H(a, i). Da die Axiomatisierung abgeschlossen ist, folgt, dass es entweder eine gibt n so dass N(n) = H(a, i) oder es gibt eine n' so dass N(n') = ¬ H(a, i). Also wenn wir iterieren gesamt n Bis wir entweder finden H(a, i) oder seine Negation werden wir immer anhalten, und außerdem wird die Antwort, die es uns gibt, wahr sein (nach soliden). Dies bedeutet, dass dies uns einen Algorithmus gibt, um das Stoppproblem zu entscheiden. Da wir wissen, dass es keinen solchen Algorithmus geben kann, folgt die Annahme, dass eine konsistente und vollständige Axiomatisierung aller echten Logikaussagen erster Ordnung zu natürlichen Zahlen falsch sein muss.

Verallgemeinerung

Viele Varianten des Stoppproblems finden Sie in Computerbarkeitslehrbüchern.[30] Normalerweise sind diese Probleme Neu voll auskommen und beschreiben Komplexitätssätze in dem arithmetische Hierarchie, das gleiche wie das Standard -Staltproblem. Die Varianten sind somit unentscheidbar und das Problem der Standard -Stillstände reduziert zu jeder Variante und umgekehrt. Einige Varianten haben jedoch eine höhere Grad der Unlöslichkeit und kann nicht auf das Problem der Standardstapfen reduziert werden. Die nächsten beiden Beispiele sind häufig.

Auf alle Eingänge einstellen

Das universelles Stoppproblemauch bekannt (in Rekursionstheorie) wie Gesamtheit, ist das Problem der Bestimmung, ob ein bestimmtes Computerprogramm wird Halt Für jeden Eingang (der Name Gesamtheit kommt aus der äquivalenten Frage, ob die berechnete Funktion ist gesamt). Dieses Problem ist nicht nur unentscheidbar, wie das Ansteckproblem, sondern auch sehr unentscheidbar. In Bezug auf die arithmetische Hierarchie, es ist -Komplett.[31]

Dies bedeutet insbesondere, dass es nicht mit einem entschieden werden kann Orakel für das Stoppproblem.

Teillösungen erkennen

Es gibt viele Programme, die für einige Eingaben eine korrekte Antwort auf das Stoppproblem zurückgeben, während sie für andere Eingaben überhaupt keine Antwort zurückgeben. Allerdings das Problem "angegebenes Programm p, ist es ein teilweise Stopplöser? "(im beschriebenen Sinne) ist mindestens so schwierig wie das Anstiegsproblem. Um dies zu sehen, gehen Sie davon aus werden verwendet, um das Anhaltsproblem wie folgt zu lösen: zu testen, ob Eingabeprogramm x Halt an ykonstruieren ein Programm p das bei der Eingabe (x,y) Berichte Stimmt und unterteilt alle anderen Eingaben. Dann testen p mit PHSR.

Das obige Argument ist a die Ermäßigung des Stoppproblems zur PHS -Erkennung und auf die gleiche Weise schwierigere Probleme wie z. auf alle Eingänge einstellen kann auch verringert werden, was bedeutet, dass die pHS -Erkennung nicht nur unentscheidbar, sondern auch höher in der ist arithmetische Hierarchie, speziell -Komplett.

Verlustige Berechnung

A Verlustige Turing -Maschine ist eine Turing-Maschine, in der ein Teil des Bandes nicht deterministisch verschwinden kann. Das Stoppproblem ist für eine verlustige Turing-Maschine, aber nicht, entscheidbarprimitive rekursiv.[32]

Orakelmaschinen

Eine Maschine mit einer Orakel Für das Stoppproblem kann feststellen, ob bestimmte Turing -Maschinen bestimmte Eingaben einstellen, aber sie können jedoch im Allgemeinen nicht bestimmen, ob Maschinen, die sich selbst entsprechen, anhalten.

Siehe auch

Anmerkungen

  1. ^ a b Copeland 2004, p. 40.
  2. ^ McConnell, Steve (2004). Code vollständig (2. Aufl.). Pearson Ausbildung. p. 374. ISBN 9780735636972.
  3. ^ Huang, Han-Way (2009). Das HCS12 / 9S12: Eine Einführung in die Software- und Hardware -Schnittstelle. p. 197. ... Wenn das Programm in einer bestimmten Schleife stecken bleibt, ... finde heraus, was los ist.
  4. ^ Simon, David E. (1999). Eine eingebettete Software -Primer. p. 253. Für harte Echtzeitsysteme ist es daher wichtig, Unterprogramme zu schreiben, die immer in der gleichen Zeit ausführen oder einen eindeutig identifizierbaren schlimmsten Fall haben.
  5. ^ Minsky 1967, p. 24. Kursivschrift im Original
  6. ^ a b Minsky 1967, p. 25.
  7. ^ Hodges 1983, p. 83; Davis 'Kommentar in Davis 1965, p. 108
  8. ^ Absolut unlösbare Probleme und relativ unentscheidbare Aussagen - Darstellung einer Vorfreude, nachgedruckt Davis 1965, S. 340–433
  9. ^ Minsky 1967.
  10. ^ Reid 1996, S. 188–189.
  11. ^ Hodges 1983, p. 91.
  12. ^ Hodges 1983, p. 91; Penrose 1989, p. 34.
  13. ^ Reid 1996, p. 198.
  14. ^ Reid 1996, p. 199.
  15. ^ nachgedruckt Davis 1965, p. 5ff
  16. ^ Kirche 1936.
  17. ^ Eine Notiz zum Inent -Problem, nachgedruckt Davis 1965, p. 110
  18. ^ Davis 1965, p. 289ff.
  19. ^ nachgedruckt Davis 1965, p. 115
  20. ^ Kleene 1952.
  21. ^ Rosser, "informelle Darstellung von Beweisen von Gödels Theorem und Theorem der Kirche", nachgedruckt in Davis 1965, p. 223
  22. ^ a b Kleene 1952, p. 382.
  23. ^ a b Brief von Davis nach Copeland, 12. Dezember 2001, Fußnote 61 in Copeland 2004, p. 40
  24. ^ Davis 1958, S. 70–71.
  25. ^ Moore & Mertens 2011, S. 236–237.
  26. ^ Strachey, C. (1. Januar 1965). "Ein unmögliches Programm". Das Computerjournal. 7 (4): 313. doi:10.1093/comjnl/7.4.313.
  27. ^ Tageslicht, Edgar G. (16. April 2021). "Der Sprach-theoretische Ansatz des Stoßproblems und der Sicherheit: Lob und Kritik eines technischen Historikers" (PDF). Berechnbarkeit. 10 (2): 141–158. doi:10.3233/com-180217. S2CID 233329507. Abgerufen 26. August 2021.
  28. ^ Penrose 1989, S. 57–63.
  29. ^ Copeland 2004, p. fünfzehn.
  30. ^ zum Beispiel, SIPser 2006, Davis 1958, Minsky 1967, Hopcroft & Ullman 1979, Börger 1989
  31. ^ Börger 1989, p. 121.
  32. ^ Abdulla & Jonsson 1996, p. 92.

Verweise

Weitere Lektüre

  • C2: StallingProblem
  • Alfred North Whitehead und Bertrand Russell, Principia Mathematica Zu *56, Cambridge an der University Press, 1962. Re: Das Problem der Paradoxien diskutieren die Autoren das Problem eines Satzes kein Objekt in keiner seiner "bestimmenden Funktionen", insbesondere "Einführung", Kap. 1 p. 24 "... Schwierigkeiten, die in der formalen Logik auftreten", und Kap. 2.I. "Das Teufelskreisprinzip" S. 37ff und Kap. 2.VIII. "Die Widersprüche" S. 60ff.
  • Martin Davis, "Was ist eine Berechnung", in Mathematik heute, Lynn Arthur Steen, Vintage Books (Random House), 1980. Ein wunderbares kleines Papier, vielleicht die besten über Turing-Maschinen für den Nicht-Spezialisten. Davis reduziert die Turing-Maschine auf ein weit Simpler-Modell basierend auf dem Postmodell einer Berechnung. Diskutiert Chaitin nachweisen. Beinhaltet kleine Biografien von Emil Post, Julia Robinson.
  • Edward Beltrami, Was ist zufällig? Chance und Ordnung in Mathematik und Leben, Copernicus: Springer-Verlag, New York, 1999. Schön, sanftes Lesen für den mathematisch geneigten Nicht-Spezialisten, setzt am Ende härtere Dinge. Hat ein Turing-Machine-Modell. Diskutiert die Chaitin Beiträge.
  • Ernest Nagel und James R. Newman, Godels Beweis, New York University Press, 1958. Wunderbares Schreiben über ein sehr schwieriges Thema. Für den mathematisch geneigten Nicht-Spezialisten. Diskutiert GentzenDer Beweis für die Seiten 96–97 und Fußnoten. Anhänge diskutieren die Peano -Axiome Kurz gesagt, stellen Sie die Leser sanft in formale Logik ein.
  • Daras, Nicholas J.; Rassias, Themistocles M. (2018). Moderne diskrete Mathematik und Analyse: Mit Anwendungen in Kryptographie, Informationssystem und Modellierung. Cham, Schweiz. ISBN 978-3319743240.. Kapitel 3 Abschnitt 1 enthält eine Qualitätsbeschreibung des Stoppproblems, einen Beweis durch Widerspruch und eine hilfreiche grafische Darstellung des Stoppproblems.
  • Taylor Booth, Sequentielle Maschinen und Automatentheorie, Wiley, New York, 1967. vgl. Kapitel 9, Turing -Maschinen. Schwieriges Buch, das für Elektroingenieure und technische Spezialisten bestimmt ist. Erörtert Rekursion, Teilreziktion unter Bezugnahme auf Turing-Maschinen, das das Problem stoppt. Hat ein Turing Maschine Modell darin. Referenzen am Ende von Kapitel 9 fangen die meisten älteren Bücher (d. H. 1952 bis 1967, einschließlich der Autoren Martin Davis, F. C. Hennie, H. Hermes, S. C. Kleene, M. Minsky, T. Rado) und verschiedenen technischen Papieren. Siehe Anmerkung unter Programmen für geschäftige Beaver.
  • Beschäftigter Biber Programme werden in Scientific American, August 1984, auch März 1985 p. 23. Eine Referenz in Booth führt sie Rado, T. (1962), auf nicht-komputierbare Funktionen zu, Bell Systems Tech. J. 41. Booth definiert auch Rados geschäftiges Biberproblem in den Problemen 3, 4, 5, 6 von Kapitel 9, p. 396.
  • David Bolter, Turings Mann: Westliche Kultur im Computeralter, The University of North Carolina Press, Chapel Hill, 1984. Für den Generalleser. Kann datiert werden. Hat ein weiteres (sehr einfaches) Turing -Maschinenmodell.
  • Sven Köhler, Christian Schindelhauer, Martin Ziegler, Bei der Annäherung an reale Probleme mit dem Stoppen von Problemen, S. 454-466 (2005) ISBN3540281932 Springer Lecture Notes in Informatik Band 3623: Unentschlossenheit des Stoppproblems bedeutet, dass nicht alle Instanzen korrekt beantwortet werden können. Aber vielleicht "einige", "viele" oder "die meisten" können? Einerseits ist die ständige Antwort "Ja" unendlich oft korrekt und auch unendlich falsch. Um die Frage vernünftig zu machen, betrachten Sie die Dichte der Fälle, die gelöst werden können. Dies stellt sich heraus, dass es erheblich von der abhängig ist Programmiersystem unter Berücksichtigung.
  • Logische Einschränkungen der Maschinenethik, mit Konsequenzen für tödliche autonome Waffen - Papier besprochen in: Bedeutet das Stoppproblem keine moralischen Roboter?

Externe Links