Wir kodieren den Bandinhalt der Turing-Maschine in sententialen Formen. Ein spezieller Satz von Nicht-Terminals codiert den aktuellen Status. Es kann zu jedem Zeitpunkt nur eine davon in der sententialen Form geben, die rechts neben dem Symbol steht, auf das das TM gerade zeigt.
Die zweite wichtige Idee ist, dass wir den Prozess umkehren müssen: TMs nehmen das Wort als Eingabe und wandeln es in oder , oder sie enden nicht. Die Grammatik muss jedoch das Wort erzeugen. Glücklicherweise sind Grammatiken von Natur aus nicht deterministisch, so dass wir einfach davon ausgehen können, woher die akzeptierende stammt. Alle Wörter, die das TM akzeptieren lassen, können dann generiert werden.0 1101
Es sei die Menge von Zustands-Nicht-Endpunkten; wlog Sei das Startzustands- Nicht-Endgerät und die Menge der Akzeptanzzustands-Nicht-Endgeräte. Zunächst benötigen wir Startregeln, die alle möglichen akzeptierenden Konfigurationen generieren:Q 0 Q F ⊆ QQ ={ Q0, … , Qk}Q.0Q.F⊆ Q
S→ # 1 Qf# für alle .Q.f∈ QF
Ebenso beenden wir, wenn wir den Ausgangszustand in der richtigen Position "erreichen", nämlich auf dem ersten Symbol:
# a Q0→ # a für alle .a & egr ; & Sgr;
Das Übersetzen der tatsächlichen Zustandsübergänge ist einfach:
ein Qa Q ba b Q→ c Q′ für a , c ∈ Σ ∧ ( a , Q , N) ∈ δ( c , Q′)→ a c Q′ für einen , b , c ∈ & Sigma; ∧ ( B , Q , L ) ∈ & dgr;( c , Q′)→ c Q′b für a , b , c ∈ Σ ∧ ( a , Q , R ) ∈ δ( c , Q′)
Es gibt einige technische Probleme, die behoben werden müssen. Zum Beispiel müssen Sie die Begrenzungsmarkierungen am Ende entfernen . Dies können Sie tun, indem Sie zwei spezielle Nichtterminals erzeugen, anstatt sie zu beenden, diese an die Enden tauschen und dann das mit ihnen entfernen . Darüber hinaus müssen mehr auf Anfrage erstellt werden; das erfordert einiges hacken der regeln mit .# # d = ####d=#
Außerdem wird die Konstruktion etwas komplizierter, wenn das TM Symbole ohne Eingabe verwendet. In diesem Fall können die Beendigungsregeln falsch sein: Wenn sich irgendwo auf dem Band nicht eingegebene Symbole befinden, haben wir kein richtiges Wort generiert. Dies kann ähnlich wie das Entfernen von : Spawn eines speziellen Nicht-Terminals aus , das nach rechts vertauscht und nur dann entfernt wird, wenn alle Symbole aus .Q 0 Σ#Q0Σ