Unterprogrammtech-nick (Unterprogrammtechnik & Berechenbarkeitsbeweise)
| Back to OverviewBerechenbarkeit & Diagonalsprache
Der Grundstein unserer Beweiskette ist die Diagonalsprache. Sie zu verstehen hilft vielleicht und ich kann mir schon vorstellen, dass sie abgefragt werden kann.
Heißt eine TM M ist genau dann in , wenn sie (also ihre eigene Gödelnummer) nicht akzeptiert.
Warum ergibt dass dann ein Paradox?
Wiederspruchsbeweis, nehme an D ist entscheidbar.
Also gibt es eine TM M, die D entscheidet, heißt sie akzeptiert alles in D und verwirft alles . Nehmen wir nun als Eingabe so gibt es zwei Möglichkeiten:
-
Fall akzeptiert , da ja entscheidet (akzeptiert alles in ), , durch die Definition von .
-
Fall akzeptiert nicht, da ja entscheidet (verwirft alles nicht in ), , durch die Definition von .
Somit kann nicht entscheidbar sein.
Das Komplement von unentscheidbaren Problemen, ist selber unentscheidbar. Beispiel .
Unterprogrammtechnik
Mit der Unterprogrammtechnik lässt sich außerhalb vom Satz von Rice zeigen, dass eine Sprache unentscheidbar ist. Wie funktioniert es genau hier für das Beispiel des Halteproblems :
Wir nehmen an das es eine TM gibt, die entscheidet.
Jetzt haben wir eine TM die was unmögliches kann, also müssen wir jetzt diese Funktion nutzen um zu zeigen, dass diese Funktion wieder ein anderes Problem (von dem wir schon die Unentscheidbarkeit wissen) lösen kann !ohne weitere Annahmen!.
Wir nutzen hierfür , bauen also eine TM , die entscheidet und nutzen hierfür .
Unsere TM funktioniert folgendermaßen:
-
Teste ob die Eingabe eine Gödelnummer ist, wenn nicht, verwerfe, falls ja sei nun die TM mit .
-
Starte mit der Eingabe , also teste ob auf der Eingabe seiner eigenen Gödelnummer hält, oder nicht.
-> Falls akzeptiert, heißt hält, simuliere mittels Universelle Turingmaschine auf der Eingabe . Wir wissen dies hält an, also können wir es simulieren. -> Falls verwirft, verwerfe selber.
Also warum ist das hier jetzt ein Beweis.
Falls ist, dann akzeptiert , heißt es hält an und akzeptiert dann beim simulieren.
Falls ist, dann akzeptiert nicht, heißt es hält nicht an (verwirft) oder verwirft beim simulieren.
Wir können gleich nochmal ein anderes Problem per Unterprogrammtechnik beweisen, aber hier erstmal ein paar Tipps und Warnungen:
- Meistens muss man das Format einer Eingabe prüfen, es dann die Eingabe ggf. verändern (mit einer berechenbaren Funktion) und dann das Ergebnis in unsere Angenommene Eingabe pumpen.
- Mehr Tips muss ich mir noch überlegen :D