05.08.2013 Aufrufe

Epsilon-Entfernung in NEAs - TAGH

Epsilon-Entfernung in NEAs - TAGH

Epsilon-Entfernung in NEAs - TAGH

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!