Ich hatte vorher keine Zeit, dies zu schreiben, aber ich fand eine Antwort. Folgendes habe ich getan:
Sei der ursprüngliche . Wir werden einen neuen konstruieren , ihn ( steht für modifiziert).P D A P D A M M.OPDAPDAM.M.
Um das Komplement von , können wir Endzustände in Nicht-Endzustände umkehren und umgekehrt. Es ist das gleiche Verfahren wie für endliche Automaten. Es gibt jedoch eine Subtilität. Das Hauptproblem besteht darin, dass im ursprünglichen PDA die Eingabe zu einem Zustand führen kann, der kein Endzustand ist, aber eine ausführen und in einen akzeptierenden Zustand . Das Umdrehen von Zuständen, wie oben erwähnt, würde dazu führen, dass in mit der Eingabe endet, was ein Endzustand wäre (was dazu führt, dass die Eingabe akzeptiert), obwohl es später eine nachO w S ε - m o v e S ' M S W M ε - m o v e S ' O M w S S ' S ε - m o v eÖÖwSϵ−moveS′MSwMϵ−moveS′, ein nicht akzeptierender Zustand. Daher akzeptieren sowohl als auch . Ähnliches passiert, wenn ein Endzustand und ein Nicht-Endzustand war, der von durch eine .OMwSS′Sϵ−move
Um dieses Problem zu lösen, müssen wir sicherstellen, dass alle Bewegungen ausgeführt werden, bevor wir das nächste Symbol lesen. Das heißt, wir werden nur dann in einen Lesezustand eintreten, wenn einem Pfad von -moves gefolgt wird und wir einen Zustand erreichen, in dem kein -move verfügbar ist. Wir nennen diese letzteren Zustände Lesezustände , da sie ein tatsächliches Symbol benötigen, um einen neuen Übergang durchzuführen.ϵ ϵϵϵϵ
Definieren Sie die Zustände von als Tupel der Form wobei ( ist die Menge der Zustände des ursprünglichen ) und .< q , n > q ≤ Q Q P D A n ≤ { 1 , 2 , 3 , 4 }M<q,n>q∈QQPDAn∈{1,2,3,4}
Wenn in , sei in wenn .O δ ( < q , 3 > , ε , X ) = < < q ' , 2 > , α > M q ∈ F Oδ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,2>,α>Mq∈FO
Wenn in , sei in wenn .O δ ( < q , 3 > , ε , X ) = < < q ' , 3 > , α > M q ∉ F Oδ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,3>,α>Mq∉FO
Wenn in , sei in .O δ ( < q , 2 > , ε , X ) = < < q ' , 2 > , α > Mδ(q,ϵ,X)=<q′,α>Oδ(<q,2>,ϵ,X)=<<q′,2>,α>M
Wenn ist in , inu n d e f i n e d O δ ( < q , 2 > , ε , X ) = < < q , 1 > , X > Mδ(q,ϵ,X)undefinedOδ(<q,2>,ϵ,X)=<<q,1>,X>M
Wenn ist in , inu n d e f i n e d O δ ( < q , 3 > , ε , X ) = < < q , 4 > , X > Mδ(q,ϵ,X)undefinedOδ(<q,3>,ϵ,X)=<<q,4>,X>M
In diesen Definitionen lassen wir Zustände der Form und Bewegungen verbrauchen, die Bewegungen von imitieren, bis keine mehr vorhanden sind. Führen Sie dann eine Bewegung in einen Lesezustand durch. Nun zu den Lesezuständen:< q , 3 > ϵ ϵ O ϵ<q,2><q,3>ϵϵOϵ
- Wenn in , sei in .O δ ( < q , 1 > , a , X ) = δ ( < q , 4 > , a , X ) = < < q ' , 3 > , α > M.δ(q,a,X)=<q′,α>Oδ(<q,1>,a,X)=δ(<q,4>,a,X)=<<q′,3>,α>M
Durch diese Definition verbrauchen wir ein Symbol der Eingabe und wechseln in einen Zustand der Form , um eine neue Reihe von Bewegungen zu beginnen .ϵ<q,3>ϵ
Schließlich lassen Sie Zustände der Form Zustände von akzeptieren, wenn . Machen Sie auch zum Anfangszustand von wenn der Anfangszustand von .<q,4>Mq∉FO<q0,3>Mq0O
Was wir getan haben, ist Folgendes:
Erstellen Sie 4 "Stockwerke" von Zuständen (das zweite Element des Tupels in Zuständen von bestimmt, in welchem Stockwerk wir uns befinden). Etage 3 imitiert Bewegungen von möglicherweise einen akzeptierenden Zustand von . Wenn dies der Fall ist, gehen wir zu Etage 2; Andernfalls bleiben wir in Etage 3. Wenn von keine Bewegungen mehr folgen , definieren wir Bewegungen von , um einen Lesezustand zu erreichen. Die Etagen 1 und 4 entsprechen den Lesezuständen. Wenn wir uns in Etage 3 befanden, gingen wir zu Etage 4. Wenn wir uns in Etage 2 befanden, erreichten wir Etage 1. Nur Zustände (Zustände in Etage 4) akzeptieren Zustände vonϵMϵOqOϵOϵM<q,4>M , mit der Maßgabe , dass nicht ein akzeptierende Zustand ist .qO
Bitte lassen Sie mich wissen, wenn ich beim Schreiben einen Tippfehler gemacht habe. Ich hätte mich leicht irren können. Außerdem ist mein Englisch nicht sehr gut, also zögern Sie nicht, die Dinge besser zu bearbeiten und neu zu formulieren.