19.11.2014 Aufrufe

Inhaltsverzeichnis - Automaten und Formale Sprachen

Inhaltsverzeichnis - Automaten und Formale Sprachen

Inhaltsverzeichnis - Automaten und Formale Sprachen

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.

L(i, k, k)L(k, k, k) ∗ L(k, j, k). ⊇“: Es ist klar, dass L(i, j, k) ⊆ L(i, j, k + 1) gilt. Liegt<br />

”<br />

ein Wort w ∈ L(i, k, k)L(k, k, k) ∗ L(k, j, k) vor, so kann man w = xy 1 · · · y l z schreiben für<br />

ein l ≥ 0, x ∈ L(i, k, k), y 1 , . . . , y l ∈ L(k, k, k), z ∈ L(k, j, k). Diesen Wörtern entsprechen<br />

Wege von v i nach v k bzw. v k nach v k bzw. v k nach v j , die nur Zwischenknoten in<br />

{v 0 , . . . , v k−1 } benutzen. Hängen wir diese l + 2 Wege hintereinander, erhalten wir einen<br />

Weg von v i nach v j mit Zwischenknoten in {v 0 , . . . , v k }, der w als Kantenbeschriftung<br />

hat; also ist w ∈ L(i, j, k + 1). Damit ist (1.4) bewiesen.]<br />

Mit Hilfe der Aussagen (1.1), (1.2), (1.4) konstruieren wir (durch Induktion über k) reguläre<br />

Ausdrücke r i,j,k für L(i, j, k), 0 ≤ i, j < s, 0 ≤ k ≤ s.<br />

(1.1’) r i,j,0 := a 1 + · · · + a s + ∅, wo L(i, j, 0) = {a 1 , · · · , a s } ⊆ Σ, i ≠ j.<br />

(1.2’) r i,i,0 := a 1 + · · · + a s + ε, wo L(i, i, 0) = {a 1 , . . . , a s } ∪ {ε}.<br />

(1.4’) r i,j,k+1 := r i,j,k + r i,k,k (r ∗ k,k,k )r k,j,k, für 0 ≤ i, j < s, 0 ≤ k < s.<br />

Aus der Konstruktion <strong>und</strong> (1.1), (1.2), (1.4) folgt sofort (technisch: per Induktion über<br />

k), dass<br />

L(i, j, k) = L(r i,j,k ), für 0 ≤ i, j < s, 0 ≤ k ≤ s.<br />

Schließlich setzen wir<br />

es ist dann klar (mit (1.3)), dass<br />

r j := r 0,j,s , für 0 ≤ j < s;<br />

L(0, j) = L(0, j, s) = L(r 0,j,s ) = L(r j ).<br />

Damit kann die Konstruktion von r M beendet werden, wie ganz am Anfang des Beweises<br />

angegeben.<br />

□<br />

Der Beweis liefert auch eine konstruktive Methode, um r M zu erzeugen. Unglücklicherweise<br />

werden selbst für kleine <strong>Automaten</strong> die entstehenden Ausdrücke schnell unhandlich.<br />

Man achte daher auf Vereinfachungsmöglichkeiten (Ersetzen von Teilausdrücken durch<br />

äquivalente einfachere). Weiter kann es Arbeit sparen, wenn man nicht alle r i,j,k konstruiert,<br />

sondern nur die, die man zur Konstruktion von r 0,j,s , j ∈ F , wirklich braucht.<br />

Man kann beweisen, dass es eine Familie (M n ) n≥2 von DFS’s gibt, wo M n = (Q n , Σ n , . . . )<br />

mit |Q n | = n, |Σ n | = n 2 , <strong>und</strong> wo der kleinste reguläre Ausdruck r n für L Mn mindestens<br />

2 n−1 Symbole hat (vgl. Wegener-Buch, S. 132). Das bedeutet, dass im allgemeinen ein<br />

Explodieren der Größe des entstehenden regulären Ausdrucks unvermeidlich ist.<br />

1.3.4 Beispiel Wir wollen einen regulären Ausdruck für den NFA<br />

Start<br />

0<br />

0<br />

1<br />

1<br />

1<br />

konstruieren. Zur Übung erzeugen wir alle r i,j,k .<br />

29

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!