André Vratislavsky

Übungsgruppe vom 16.11.99

Erzeugen eines regulären Ausdrucks durch dynamische Programmierung.

Wir wollten beweisen, daß die  regulären Sprachen den dfa-Sprachen entsprechen.
Dazu haben wir gezeigt, daß jede reguläre Sprache auch dfa-Sprache ist (Satz 1.9 der Vorlesung), d.h für jede reguläre Sprache gibt es einen endlichen Automaten, der sie erkennt.
Nun bleibt noch die andere Richtung zu zeigen: Jede dfa-Sprache ist regulär (Satz 1.15 der Vorlesung), d. h. jeder endliche Automat M erkennt eine reguläre Sprache.
Gegeben sei also ein endlicher Automat M. Dann ist ein regulärer Ausdruck zu konstruieren, der die von M erkannte Sprache darstellt.

Die Beweisidee:

Erzeugen eines regulären Ausdrucks durch dynamische Programmierung.
Dazu werden die in der Vorlesung definierten Teilsprachen Lr,i,t verwendet:
Lr,i,t sind alle Teilworte, die entstehen, wenn man vom Zustand qr zum Zustand qt in der Maschine läuft, wobei man auf dem Weg von qr nach qt nur
Zwischenzustände aus {q1,q2,...,qi} benutzen darf. Diese können auch mehrfach verwendet werden. qr und qt zählen nicht zu den Zwischenzuständen (es sei
denn, r=i oder t=i).
Lr,0,t sind alle Teilworte, die entstehen, wenn man vom Zustand qr zum Zustand qt in der Maschine läuft, wobei man auf dem von qr nach qt keinen Zwischenzustand benutzen darf.
Lr,0,t ist nach Definition regulär.
Ls,n,f = L(M) wird durch folgende Rekursionsformel aufgebaut:
Lr,i+1,t = Lr,i,t v Lr,i,i+1 . (Li+1,i,i+1)* . Li+1,i,t

Für Lr,i+1,t werden nur Operationen verwendet, die reguläre Ausdrücke erzeugen. Also ist Ls,n,f = L(M) für n Zustände, Startzustand s und Endzustand f regulär.

Zustandsminimierung bei endlichen Automaten

Gegeben ein dfa A. Gesucht ist der zu A äquivalente Äquivalensklassenautomat, der minimale Zustandszahl hat.

Zwei Zustände heißen äquivalent <=> ( für alle Wörter w gilt: delta(p,w) aus F gdw delta(q,w) aus F )

Idee: Alle äquivalenten Zustände zusammenfassen, denn von dort aus gelangt man zu demselben Ergebnis (akzeptiert bzw. nicht akzeptiert).

Algorithmus zur Minimierung eines dfa

  1. Tabelle aller Zustandspaare {qi, qj}, i#j aufstellen.
  2. Markieren aller Paare {qi, qj}, für die gilt: (qi aus F und qj nicht aus F) oder umgekehrt. Diese sind nicht äquivalent, denn mit dem leeren Wort als Zeuge gelangt man zu einem akzeptierenden und einem nicht akzeptierenden Zustand.
  3. Für jedes unmarkierte Paar {qi, qj} teste für alle a aus Sigma, ob {delta(qi,a),delta(qj,a)} in Tabelle markiert. Wenn ja, markiere {qi,qj}. Denn es gibt ein Wort, mit dem man rekursiv zu einem akzeptierenden und zu einem nicht akzeptierenden Zustand gelangt.
  4. Wiederhole 3. solange, bis keine Änderung mehr in der Tabelle vorgenommen wurde.
  5. Alle nicht markierten Paare sind teilweise untereinander äquivalent.