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 Σ\Sigma. Ist also Σ\Sigma^* die Menge aller Wörter, die man über Σ\Sigma bilden kann, so ist eine formale Sprache LΣL \subseteq \Sigma^* eine Teilmenge von Σ\Sigma^*.

Die Frage ob eine formale Sprache LL (semi-)entscheidbar ist, ist die Frage danach, ob es eine Turingmaschine T\mathcal{T} gibt, die für alle Wörter wLw \in L akzeptiert (also in einem akzeptierenden Endzustand hält), und alle Wörter wLw \notin L 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 wLw \notin L (natürlich in dem Fall in einem nicht-Endzustand).

Die Diagonalsprache

Die Diagonalsprache LdL_d 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 wLdw \in L_d immer hält.

Da Turingmaschinen endliche Modelle sind, und sich somit durch endlich viele Symbole beschreiben lassen, kann man eine Turingmaschine T\mathcal{T} über dem Alphabet Σ:={0,1}\Sigma := \{0,1\} kodieren (Gödelnummerierung). Die Gödelnummer einer Turingmaschine T\mathcal{T} sei mit T\langle \mathcal{T} \rangle bezeichnet. Da die Gödelnummern Wörter über {0,1}\{0,1\} sind, können wir natürlich auch die umgekehrte Richtung einschlagen. Wir betrachten ein Wort w{0,1}w \in \{0,1\}^*, 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 \emptyset) akzeptiert.

Um ein wenig System einzubringen, wollen wir die Wörter über {0,1}\{0,1\} in kanonischer Reihenfolge ordnen. Wir sagen i<ji < j für wi,wj{0,1}w_i,w_j \in \{0,1\}^*, falls wi<wj|w_i| < |w_j| oder, im Falle dass wi=wj|w_i| = |w_j|, soll wiw_i lexikographisch vor wjw_j stehen. Mit Hilfe dieser Ordnung können wir ab jetzt vom ii-ten Wort wiw_i aus {0,1}\{0,1\}^* sprechen.

Nun wird es etwas haarig. Wir betrachten zum Wort wiw_i die Turingmaschine Ti\mathcal{T}_i, die durch die Gödelnummer wiw_i beschrieben wird. Es ist also Ti=wi\langle \mathcal{T}_i \rangle = w_i. Wir konstruieren uns eine (unendlich große) Tabelle mit den Einträgen „ja“ und „nein“ wie folgt:

(i,j):={jafalls Tj das Wort wi akzeptiertneinsonst(i,j) := \left\{ \begin{array}{lc} \text{ja} & \text{falls $\mathcal{T}_j$ das Wort $w_i$ akzeptiert} \\ \text{nein} & \text{sonst} \end{array}\right.

Anschaulich bedeutet das, dass der Eintrag an der Stelle (i,j)(i,j) genau dann ein „ja“ enthält, wenn die Turingmaschine Tj\mathcal{T}_j (die durch das jj-te Wort (gödel-)beschrieben wird), bei Eingabe des ii-ten Wortes akzeptiert.

Die Diagonalsprache enthält nun genau die Wörter wiw_i, bei denen auf der Diagonalen, also im Eintrag (i,i)(i,i) ein „nein“ steht. Formal:

Ld:={wi    Ti akzeptiert bei Eingabe wi nicht}L_d := \{ w_i \;|\; \text{$\mathcal{T}_i$ akzeptiert bei Eingabe $w_i$ \text{nicht}} \}

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 LdL_d entscheidet. Ferner lässt sich diese Turingmaschine gödelkodieren, so dass es ein Wort über dem Alphabet {0,1}\{0,1\} geben muss, das die Gödelnummer dieser Maschine ist. Mit Hilfe unserer Ordnung können wir sagen, dass diese Turingmaschine, nennen wir sie Mi\mathcal{M}_i, durch das Wort wiw_i kodiert wird.

Was passiert, wenn wir jetzt Mi\mathcal{M}_i mit der Eingabe wiw_i (also sich selbst!) laufen lassen? Da wir annehmen, dass Mi\mathcal{M}_i die Diagonalsprache entscheiden kann, muss Mi\mathcal{M}_i das Wort entweder akzeptieren, woraus wiLdw_i \in L_d folgt, oder ablehnen, was wiLdw_i \notin L_d bedeutet.

Es folgt mit dem Prinzip des Beweises durch Widerspruch, dass unsere Annahme nicht haltbar ist: LdL_d ist also unentscheidbar. \square