Unentscheidbarkeit der Diagonalsprache
In der theoretischen Informatik betrachtet man häufig formale Sprachen. Eine formale Sprache ist im Grunde nichts weiter als eine (abzählbare) Menge von Wörtern über einem endlichen Alphabet . Ist also die Menge aller Wörter, die man über bilden kann, so ist eine formale Sprache eine Teilmenge von .
Die Frage ob eine formale Sprache (semi-)entscheidbar ist, ist die Frage danach, ob es eine Turingmaschine gibt, die für alle Wörter akzeptiert (also in einem akzeptierenden Endzustand hält), und alle Wörter ablehnt (also nicht in einen akzeptierenden Zustand gelangt). Für die Entscheidbarkeit verlangen wir noch strikter, dass die Turingmaschine immer hält, also auch für Wörter (natürlich in dem Fall in einem nicht-Endzustand).
Die Diagonalsprache
Die Diagonalsprache ist eine eher theoretisch konstruierte Sprache, für die man sehr elegant zeigen kann, dass sie nicht entscheidbar ist. Es gibt also keine Turingmaschine, die selbst für die Wörter immer hält.
Da Turingmaschinen endliche Modelle sind, und sich somit durch endlich viele Symbole beschreiben lassen, kann man eine Turingmaschine über dem Alphabet kodieren (Gödelnummerierung). Die Gödelnummer einer Turingmaschine sei mit bezeichnet. Da die Gödelnummern Wörter über sind, können wir natürlich auch die umgekehrte Richtung einschlagen. Wir betrachten ein Wort , und fragen uns welche Turingmaschine durch dieses Wort kodiert wird. Es ist offensichtlich, dass es viele Wörter geben wird, die keinen sinnvollen Gödelkode darstellen, und damit eigentlich keine Turingmaschine definieren. Wir wollen für diese Wörter vereinbaren, dass sie die Turingmaschine beschreiben, die nichts (also die leere Sprache ) akzeptiert.
Um ein wenig System einzubringen, wollen wir die Wörter über in kanonischer Reihenfolge ordnen. Wir sagen für , falls oder, im Falle dass , soll lexikographisch vor stehen. Mit Hilfe dieser Ordnung können wir ab jetzt vom -ten Wort aus sprechen.
Nun wird es etwas haarig. Wir betrachten zum Wort die Turingmaschine , die durch die Gödelnummer beschrieben wird. Es ist also . Wir konstruieren uns eine (unendlich große) Tabelle mit den Einträgen „ja“ und „nein“ wie folgt:
Anschaulich bedeutet das, dass der Eintrag an der Stelle genau dann ein „ja“ enthält, wenn die Turingmaschine (die durch das -te Wort (gödel-)beschrieben wird), bei Eingabe des -ten Wortes akzeptiert.
Die Diagonalsprache enthält nun genau die Wörter , bei denen auf der Diagonalen, also im Eintrag ein „nein“ steht. Formal:
Wir können uns fragen ob diese Sprache entscheidbar ist!
Die Unentscheidbarkeit
Die Sprache ist unentscheidbar, und wir führen Beweis durch Widerspruch.
Nehmen wir also an, die Sprache wäre entscheidbar. Dann muss es eine Turingmaschine geben, die entscheidet. Ferner lässt sich diese Turingmaschine gödelkodieren, so dass es ein Wort über dem Alphabet geben muss, das die Gödelnummer dieser Maschine ist. Mit Hilfe unserer Ordnung können wir sagen, dass diese Turingmaschine, nennen wir sie , durch das Wort kodiert wird.
Was passiert, wenn wir jetzt mit der Eingabe (also sich selbst!) laufen lassen? Da wir annehmen, dass die Diagonalsprache entscheiden kann, muss das Wort entweder akzeptieren, woraus folgt, oder ablehnen, was bedeutet.
- Nehmen wir an es ist , also akzeptiert . Dies führt uns aber direkt auf einen Widerspruch zur Definition der Diagonalsprache, denn enthält ja gerade die Wörter , die von der entsprechenden Turingmaschine (in unserem Fall ist das ) nicht akzeptiert werden.
- Nehmen wir also an, es ist . lehnt das Wort somit ab. Mit der gleichen Argumentation führt das wieder auf einen Widerspruch zur Definition von , denn würde das Wort ablehnen, so muss es in vorhanden sein!
Es folgt mit dem Prinzip des Beweises durch Widerspruch, dass unsere Annahme nicht haltbar ist: ist also unentscheidbar.