Epsilon-Entfernung in NEAs - TAGH
Epsilon-Entfernung in NEAs - TAGH
Epsilon-Entfernung in NEAs - TAGH
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Entfernung</strong> von ε-Übergängen aus endlichen Automaten<br />
Thomas Hanneforth<br />
Institut für L<strong>in</strong>guistik<br />
Universität Potsdam<br />
May 31, 2013<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 1 / 6<br />
Algorithmus<br />
ε-<strong>Entfernung</strong>salgorithmus<br />
E<strong>in</strong>gabe: E<strong>in</strong> NEA A = 〈Q, Σ, q0, F, δ〉<br />
Ausgabe: E<strong>in</strong> ε-freier NEA A ′ = 〈Q ′ , Σ, q0, F ′ , δ ′ 〉 mit<br />
1: A ′ ← A<br />
2: δ ′ ← δ ′ \ {q ε −→ q | q ∈ Q ′ }<br />
3: for ∀p ε −→ q ∈ δ ′ mit q ∈ F ′ do<br />
4: F ′ ← F ′ ∪ {p}<br />
5: end for<br />
6: for ∀p, q, r ∈ Q ′ , a ∈ Σ : p ε −→ q ∈ δ ′ ∧ q a −→ r ∈ δ ′ do<br />
7: δ ′ ← δ ′ ∪ {p a −→ r}<br />
8: end for<br />
9: δ ′ ← δ ′ \ {p ε −→ q | p, q ∈ Q ′ }<br />
10: Entferne alle nicht erreichbaren Zustände und Übergänge aus A ′<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 3 / 6<br />
E<strong>in</strong>führung<br />
Die <strong>Entfernung</strong> von ε-Übergängen aus nichtdeterm<strong>in</strong>istischen endlichen<br />
Automaten (NEAen) ist e<strong>in</strong>e wichtige Optimierungstransformation und<br />
Voraussetzung der Determ<strong>in</strong><strong>in</strong>isierung von NEAen.<br />
Es gibt e<strong>in</strong>e ganze Reihe von Verfahren hierzu:<br />
1 ε-<strong>Entfernung</strong> auf der Basis von ε-Hüllen<br />
2 ε-<strong>Entfernung</strong> durch Schleifenreduktion<br />
3 ε-<strong>Entfernung</strong> durch “Überbrücken” von ε-Übergängen.<br />
Im folgenden wird das letzte Verfahren näher beschrieben.<br />
Notation<br />
Wir verwenden die Schreibweise p a −→ q wenn q ∈ δ(p, a) (für a ∈ Σ ∪ {ε}).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 2 / 6<br />
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
a
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
a<br />
a<br />
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
a<br />
a
Erläuterung des ε-<strong>Entfernung</strong>s-Algorithmus’<br />
Zeile 1 setzt A ′ gleich A<br />
Zeile 2 entfernt alle direkten ε-Schleifen q ε −→ q aus A ′<br />
Die Schleife <strong>in</strong> den Zeilen 3 bis 5 “vererben” den Endzustandsstatus<br />
weiter nach vorne:<br />
p<br />
ε<br />
q<br />
p<br />
ε<br />
q<br />
wird zu<br />
−−−→<br />
Die Schleife <strong>in</strong> den Zeilen 6 bis 8 “überbrückt” die noch vorhandenen<br />
ε-Übergänge:<br />
p<br />
ε<br />
q<br />
a<br />
r<br />
p<br />
ε<br />
q<br />
a<br />
wird zu r −−−→<br />
(Man beachte, dass q = r oder p = r gelten kann).<br />
Zeile 9 entfernt nun alle ε-Übergänge aus A ′<br />
Zeile 10 entfernt alle nicht vom Startzustand aus erreichbaren Zustände<br />
(samt Übergängen).<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 4 / 6<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
q4 q6<br />
b<br />
q3 q5<br />
<strong>Entfernung</strong> der ε-Schleife an q5 (Zeile 2 des Algorithmus)<br />
ε<br />
ε<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
a<br />
c<br />
ε<br />
ε<br />
ε<br />
q7<br />
q8<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
q4<br />
q3<br />
Gegebener ε-NEA<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
b<br />
q6<br />
ε<br />
q5<br />
ε<br />
q4 q6<br />
b<br />
q3 q5<br />
q5 wird Endzustand (Schleife 3–5 des A.)<br />
ε<br />
ε<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
c<br />
ε<br />
ε<br />
c<br />
ε<br />
ε<br />
ε<br />
q7<br />
q8<br />
ε<br />
q7<br />
q8
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
q4 q6<br />
b<br />
q3 q5<br />
q7 wird Endzustand (Schleife 3–5 des A.)<br />
ε<br />
ε<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
b<br />
ε<br />
q4 q6<br />
q3<br />
q5<br />
p = q1, q = q2, r = q5 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
b<br />
b<br />
c<br />
ε<br />
ε<br />
c<br />
ε<br />
ε<br />
ε<br />
ε<br />
q7<br />
q8<br />
q7<br />
q8<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
ε<br />
q4 q6<br />
b<br />
q3 q5<br />
p = q2, q = q3, r = q5 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
b<br />
b<br />
q4<br />
q3<br />
p = q4, q = q6, r = q7 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
b<br />
ε<br />
b<br />
q6<br />
c<br />
q5<br />
c<br />
ε<br />
ε<br />
c<br />
ε<br />
ε<br />
ε<br />
q7<br />
q8<br />
ε<br />
q7<br />
q8
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
b<br />
q4<br />
q3<br />
p = r = q7, q = q6 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
b<br />
b<br />
c<br />
ε<br />
b<br />
q6<br />
c<br />
q5<br />
ε<br />
q4 q6<br />
q3<br />
q5<br />
p = q1, q = q2, r = q7 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
b<br />
c<br />
b<br />
c<br />
c<br />
ε<br />
ε<br />
c<br />
ε<br />
ε<br />
ε<br />
c<br />
q7<br />
q8<br />
ε<br />
c<br />
q7<br />
q8<br />
Example<br />
a<br />
q0 q1<br />
ε<br />
q2<br />
ε<br />
ε<br />
b<br />
ε<br />
q4 q6<br />
q3<br />
b<br />
c<br />
b<br />
c<br />
q5<br />
p = q2, q = q4, r = q7 (Schleife 6–8 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
Example<br />
a<br />
q0 q1<br />
q2<br />
b<br />
c<br />
q4 q6<br />
q3<br />
q5<br />
Entferne alle ε-Übergänge (Zeile 9 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
b<br />
c<br />
b<br />
c<br />
ε<br />
c<br />
ε<br />
c<br />
ε<br />
c<br />
q7<br />
q8<br />
c<br />
q7<br />
q8
Example<br />
a<br />
q0 q1<br />
b<br />
Entferne alle nicht erreichbaren Zustände (Zeile 10 des A.)<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 5 / 6<br />
c<br />
q5<br />
c<br />
q7<br />
Versionen<br />
25.05.2013: Erste Version 0.1.<br />
Thomas Hanneforth (Universität Potsdam) May 31, 2013 6 / 6