24.10.2014 Aufrufe

Einführung in die Informatik II Automaten - Technische Universität ...

Einführung in die Informatik II Automaten - Technische Universität ...

Einführung in die Informatik II Automaten - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong><br />

<strong>Automaten</strong><br />

Prof. Bernd Brügge, Ph.D<br />

Institut für <strong>Informatik</strong><br />

<strong>Technische</strong> Universität München<br />

Sommersemester 2004<br />

1. Juli 2004<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 1 2<br />

Organisatorisches: Planung der restlichen Vorlesungen<br />

! 29. Juni<br />

! UML Zustandsdiagramme, Modell-Sicht-Steuerung Konzept,<br />

" 1.-6 Juli<br />

! <strong>Automaten</strong> und Grammatiken<br />

! 8.-13 Juli: Überleitung zu masch<strong>in</strong>ennaher Programmierung<br />

! Übersetzung von Java <strong>in</strong> e<strong>in</strong>e masch<strong>in</strong>enahe Sprache<br />

! 15. Juli: Masch<strong>in</strong>ennahe Programmierung<br />

! Laufzeitkeller, Unterprogrammaufruf, Halde<br />

! 20. Juli: Co<strong>die</strong>rung<br />

! 20. Juli: Zentralübung: Fragestunde zur Klausur.<br />

! Alle Fragen bis zum 19. Juli per E-Mail an herzog@<strong>in</strong>.tum.de werden<br />

berücksichtigt.<br />

! 22. Juli: Vergleich von Modellierungs-&Programmierkonzepten, Abschluss<br />

! 24. Juli: Klausur, zwischen 13:00 - 16:00,<br />

! Klausurmerkblatt wird am 20. Juli verteilt<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 2


Ziele <strong>die</strong>ser Vorlesung<br />

! Sie können e<strong>in</strong> Objekt mit <strong>in</strong>teressantem dynamischen<br />

Verhalten als endlichen <strong>Automaten</strong> modellieren.<br />

! Sie verstehen, dass UML-Zustandsdiagramme e<strong>in</strong>e<br />

Notation für endliche <strong>Automaten</strong> s<strong>in</strong>d.<br />

! Sie verstehen, dass endliche <strong>Automaten</strong> und reguläre<br />

Grammatiken äquivalente Interpretationen desselben<br />

Konzeptes s<strong>in</strong>d.<br />

! Sie können aus e<strong>in</strong>em endlichen <strong>Automaten</strong> e<strong>in</strong>e<br />

reguläre Grammatik erstellen, <strong>die</strong> <strong>die</strong>selbe Sprache<br />

akzeptiert wie der Automat.<br />

! Sie können für e<strong>in</strong>e gegebene reguläre Grammatik den<br />

entsprechenden endlichen <strong>Automaten</strong> konstruieren.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 3<br />

Modellierung mit endlichen <strong>Automaten</strong><br />

! E<strong>in</strong> Automat ist e<strong>in</strong> Modell, dass zur Modellierung von vielen Problemen<br />

verwendet werden kann. Die Ursprünge für endliche <strong>Automaten</strong> kamen aus<br />

folgenden Anwendungsdomänen:<br />

! Biologie (McCollough & Pitts, "A logical calculus of the ideas immanent <strong>in</strong><br />

nervous activity", 1943)<br />

! Modellierung des menschlichen Gehirns: E<strong>in</strong> Gehirn besteht aus etwa 2 35<br />

Neuronen (ca. 35 Milliarden), und es sollte möglich se<strong>in</strong>, den Zustand jedes<br />

Neurons durch e<strong>in</strong>ige Bits zu beschreiben.<br />

! Elektrotechnik (Mealy, "A method for synthesiz<strong>in</strong>g sequential circuits", 1955)<br />

! Entwurf von Schaltkreisen aus e<strong>in</strong>er endlichen Zahl von Gattern, <strong>die</strong> nur<br />

e<strong>in</strong>en von 2 Werten annehmen können.<br />

! L<strong>in</strong>guistik (Chomsky "Three models for the description of language", 1956)<br />

! Beschreibung von Grammatiken für <strong>die</strong> natürliche Sprache<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 4


Endliche <strong>Automaten</strong> <strong>in</strong> der <strong>Informatik</strong><br />

! Interaktive Systeme:<br />

! Spezifikation der E<strong>in</strong>gaben, <strong>die</strong> <strong>in</strong> e<strong>in</strong>em <strong>in</strong>teraktiven System<br />

akzeptierbar se<strong>in</strong> sollen.<br />

! Compilerbau:<br />

! Zur lexikalischen Analyse von Programmen, d.h zur Erkennung<br />

von Schlüsselwörtern und Bezeichnern<br />

! Softwaretechnik:<br />

! Zur Beschreibung von Systemen, <strong>die</strong> durch <strong>die</strong> dynamischen<br />

Eigenschaften e<strong>in</strong>es e<strong>in</strong>zigen Objektes bestimmt werden.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 5<br />

Endliche <strong>Automaten</strong><br />

! E<strong>in</strong> endlicher Automat ist e<strong>in</strong> gutes Werkzeug zur Modellierung von<br />

Problemen aus der Wirklichkeit, wenn folgende Eigenschaften<br />

vorliegen.<br />

! Diskrete E<strong>in</strong>-/Ausgabe:<br />

# Das System reagiert nur auf diskrete E<strong>in</strong>gabe-Werte und gibt nur diskrete<br />

Werte aus.<br />

! Endliche Anzahl von Zuständen:<br />

# Das System kann nur <strong>in</strong> e<strong>in</strong>er endlichen Zahl von <strong>in</strong>ternen<br />

Konfigurationen se<strong>in</strong>, <strong>die</strong> wir Zustände nennen.<br />

! Gedächtnislosigkeit:<br />

# Der Zustand, <strong>in</strong> dem das System gerade ist, umfasst <strong>die</strong> gesamte<br />

Information über <strong>die</strong> Vergangenheit des Systems<br />

# Nur <strong>die</strong>ser Zustand entscheidet bei der nächsten E<strong>in</strong>gabe, was der nächste<br />

Zustand ist.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 6


Beispiel für e<strong>in</strong>en endlichen <strong>Automaten</strong><br />

! Die Steuerung e<strong>in</strong>es Fahrstuhls kann man mit e<strong>in</strong>em endlichen<br />

<strong>Automaten</strong> modellieren.<br />

! Diskrete E<strong>in</strong>-/Ausgabe:<br />

# E<strong>in</strong>gabe: Welche Knöpfe wurden <strong>in</strong> welchen Etagen gedrückt,<br />

aber noch nicht be<strong>die</strong>nt?<br />

# Ausgabe: In welche Richtung (hoch, runter) und wie weit muss<br />

der Fahrstuhl als nächstes fahren?<br />

! Endliche Anzahl von Zuständen:<br />

# Der Fahrstuhl be<strong>die</strong>nt nur e<strong>in</strong>e endliche Anzahl von Etagen.<br />

! Gedächtnislosigkeit:<br />

# Die Steuerung weiss nicht, welche Etagen der Fahrstuhl bis jetzt<br />

schon besucht hat.<br />

# Wichtig ist der derzeitige Zustand: Wo steht der Fahrstuhl?<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 7<br />

E<strong>in</strong> altes Problem: Wolf, Kohl und Ziege<br />

! E<strong>in</strong>e Hirte steht mit e<strong>in</strong>em Wolf, e<strong>in</strong>er Ziege und<br />

e<strong>in</strong>em Kohlkopf am l<strong>in</strong>ken Ufer e<strong>in</strong>es Flusses.<br />

Sie wollen den Fluss überqueren.<br />

! Es gibt e<strong>in</strong>e Fähre, <strong>die</strong> h<strong>in</strong> und her fährt. Die<br />

Fähre ist allerd<strong>in</strong>gs so kle<strong>in</strong>, dass sie höchstens<br />

den Hirten und e<strong>in</strong>en weiteren Passagier<br />

gleichzeitig transportieren kann.<br />

! Es gibt folgende E<strong>in</strong>schränkungen:<br />

! Alle<strong>in</strong> gelassen, frisst der Wolf <strong>die</strong> Ziege<br />

! Alle<strong>in</strong> gelassen, frisst <strong>die</strong> Ziege den Kohlkopf<br />

! Ziel: Alle sollen den Fluss erfolgreich überqueren,<br />

ohne dass irgend jemand gefressen wird<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 8


Wie modellieren wir das Problem?<br />

! Sollen wir Anwendungsfälle mit Ereignisfolgen probieren?<br />

! Akteure: Wolf, Hirte, Ziege, …<br />

! Ereignisfolge:<br />

# Alle s<strong>in</strong>d am l<strong>in</strong>ken Ufer<br />

# Der Hirte fährt mit der Ziege zum rechten Ufer<br />

# Dort lässt er <strong>die</strong> Ziege,<br />

# Dann fährt er alle<strong>in</strong> zum l<strong>in</strong>ken Ufer<br />

# ...<br />

! Sollen wir e<strong>in</strong> Klassendiagramm erstellen? Das Problem hat viele<br />

Objekte. Abbott's Analyse ergibt: Hirte, Wolf, Ziege, Kohlkopf, Fluss,<br />

Ufer, überqueren, fressen, transportieren, Fähre, Kapazität.<br />

! Brauchen wir dafür e<strong>in</strong> Sequenzdiagramm?<br />

! Oder können wir das ganze Problem alle<strong>in</strong> mit e<strong>in</strong>em<br />

Zustandsdiagramm modellieren?<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 9<br />

Analyse des Hirte-Wolf-Ziege-Kohl-Problems<br />

! Wir führen folgende Bezeichnungen e<strong>in</strong>: H ist der Hirte, W der Wolf, Z <strong>die</strong> Ziege<br />

und K der Kohl. ! bezeichnet <strong>die</strong> leere Menge.<br />

! Wir identifizieren e<strong>in</strong>e Klasse Steuerung mit e<strong>in</strong>em Attribut<br />

Uferverteilung vom Typ Zeichenkette mit Werten wie "HWZK-!", "WK-HZ",<br />

usw. Die Attributwerte modellieren <strong>die</strong> Besetzung der beiden Uferseiten<br />

folgendermaßen:<br />

HWZK-!: Alle Beteiligten s<strong>in</strong>d am l<strong>in</strong>ken Ufer.<br />

WK-HZ: Wolf und Kohl am l<strong>in</strong>ken Ufer, Hirte und Ziege am rechten Ufer.<br />

K-HWZ:<br />

!-HWZK:<br />

Kohl am l<strong>in</strong>ken Ufer, Hirte, Wolf und Ziege am rechten Ufer.<br />

Alle Beteiligten s<strong>in</strong>d am rechten Ufer.<br />

! Insgesamt kann Uferverteilung höchstens 2 4 = 16 verschiedene Werte<br />

annehmen,<br />

! Wir haben also 16 Zustände (davon s<strong>in</strong>d nicht alle erstrebenswert).<br />

! Als Namen für <strong>die</strong> Zustände nehmen wir <strong>die</strong> Werte der Uferverteilung :<br />

# HWZK-! ist unser Anfangszustand, den Endzustand !-HWZK wollen wir<br />

erreichen.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 10


Modellierung des Problems mit UML-Zustandsdiagramm<br />

HKZW-! Z KW-HZ H HKW-Z<br />

W<br />

K<br />

K-HWZ<br />

W-HKZ<br />

E<strong>in</strong>gabe:<br />

ZH W ZK H Z<br />

akzeptiert!<br />

Z<br />

HKZ-W<br />

Z<br />

HWZ-K<br />

ZH KZ W<br />

HZ<br />

ebenfalls akzeptiert!<br />

K<br />

Z-HKW<br />

W<br />

H HZ-KW Z !-HKWZ<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 11<br />

Verfe<strong>in</strong>ert Modellierung des Problems<br />

HKZW-!<br />

Z<br />

KW-HZ<br />

H<br />

HKW-Z<br />

Z<br />

H<br />

W W K K<br />

K-HWZ<br />

W-HKZ<br />

Akzeptierbare E<strong>in</strong>gaben:<br />

ZZZHHHWZKHZ<br />

ZHWZKKKKKKKHZ<br />

ZHWZKKKKKKKKKKKHZ<br />

usw.<br />

Z Z Z Z<br />

HKZ-W HWZ-K<br />

K W<br />

K<br />

W<br />

Z-HKW H<br />

HZ-KW<br />

Z<br />

!-HKWZ<br />

H<br />

Z<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 12


Endlicher Automat<br />

! Def<strong>in</strong>ition: E<strong>in</strong> endlicher Automat ist e<strong>in</strong> 5-Tupel A = ( !, Q, ", q 0 , F):<br />

! ist e<strong>in</strong> endlicher Zeichenvorrat (also e<strong>in</strong> Alphabet)<br />

Q ist e<strong>in</strong>e nichtleere endliche Menge von Zuständen<br />

" : Q # ! $ Q ist e<strong>in</strong>e Übergangsfunktion wobei gilt:<br />

" (q, a) ist e<strong>in</strong> def<strong>in</strong>ierter Zustand für jeden Zustand q und<br />

E<strong>in</strong>gabe a % !<br />

q 0 % Q ist e<strong>in</strong> Anfangszustand<br />

F ist e<strong>in</strong>e Menge von Endzuständen<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 13<br />

Arbeitsweise e<strong>in</strong>es endlichen <strong>Automaten</strong><br />

E<strong>in</strong>gabeband E mit<br />

Symbolen aus !<br />

0 1 1 0 0 1 10 1 0 1<br />

LeseKopf L<br />

S<br />

Steuerung S:<br />

Besteht aus<br />

Zuständen % Q und<br />

Übergangsfunktion "<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 14


Arbeitsweise e<strong>in</strong>es endlichen <strong>Automaten</strong><br />

E<strong>in</strong>gabeband E mit<br />

Symbolen aus !<br />

0 1 1 0 0 1 10 1 0 1<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 15<br />

E<strong>in</strong> endlicher Automat ist e<strong>in</strong> Algorithmus<br />

Unser Modell:<br />

BandendeErreicht() == False<br />

BandendeErreicht() == True<br />

0<br />

1 1 0 0 1 0 1 0 1<br />

LeseKopf L<br />

Steuerung S = "(q q 0 0 ,0)<br />

E<strong>in</strong>gabeband E mit<br />

Symbolen aus !<br />

Der Algorithmus:<br />

Setze <strong>die</strong> Steuerung S auf den Anfangszustand; // S = q 0 ;<br />

Positioniere Lesekopf L am Anfang des E<strong>in</strong>gabebandes E;<br />

akzeptiert = istEndzustand(q 0 );<br />

while not BandendeErreicht() do {<br />

Lies Symbol unter dem Lesekopf L; // L = a i ;<br />

Berechne den neuen Zustand aus S und L;<br />

// S = "(S,L);<br />

Ist der neue Zustand e<strong>in</strong> Endzustand? Wenn ja, akzeptiert = true;<br />

} // while not BandendeErreicht()<br />

return akzeptiert;<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 16


Darstellungsmöglichkeiten für <strong>die</strong> Übergangsfunktion<br />

• Die Übergangsfunktion " e<strong>in</strong>es endlichen <strong>Automaten</strong> lässt sich auf<br />

verschiedene Art und Weise darstellen:<br />

• als Graph & Übergangsgraph (bei der Modellierung)<br />

• als Tabelle & Übergangstabelle<br />

• als Menge & Menge von Produktionen (bei der Beschreibung<br />

von Grammatiken)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 17<br />

Übergangsgraph: Übergangsfunktion " als Graph<br />

! E<strong>in</strong> endlicher Automat kann als gerichteter Graph G dargestellt<br />

werden, wenn wir folgende Zuordnungen festlegen:<br />

! <strong>die</strong> Menge der Zustände Q ist <strong>die</strong> Menge der Knoten des Graphen<br />

mit q 0 als Anfangszustand<br />

! Zwei Knoten q 1 und q 2 im Graphen s<strong>in</strong>d durch e<strong>in</strong>e mit der E<strong>in</strong>gabe<br />

a beschriftete gerichtete Kante verbunden, wenn es e<strong>in</strong>en Übergang<br />

vom Zustand q 1 nach q 2 gibt, d.h. wenn " (q 1 , a) = q 2 gilt.<br />

! Den gerichteten Graphen nennen wir Übergangsgraph<br />

! UML-Zustandsdiagramme s<strong>in</strong>d also Übergangsgraphen.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 18


Beispiel für e<strong>in</strong>en Übergangsgraphen<br />

! Wir wollen e<strong>in</strong>en Prüfer bauen, der e<strong>in</strong>e vorgegebene Zeichenkette<br />

aus '0' und '1' nur dann akzeptiert, wenn <strong>die</strong> Kette e<strong>in</strong>e gerade<br />

Anzahl von 0'en und e<strong>in</strong>e gerade Anzahl 1'en hat.<br />

! Beispiel: 110101 wird akzeptiert,<br />

! Übergangsgraph:<br />

1101011 wird nicht akzeptiert<br />

q0<br />

1<br />

q1<br />

Ungerade:<br />

E<strong>in</strong>e 1 zuviel<br />

Gerade<br />

0<br />

1<br />

0<br />

Ungerade:<br />

E<strong>in</strong>e 0 zuviel<br />

0<br />

q2<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 19<br />

1<br />

1<br />

0<br />

q3<br />

Ungerade:<br />

E<strong>in</strong>e 1 und e<strong>in</strong>e 0 zuviel<br />

Alternative Notation für Übergangsgraphen<br />

! In der Softwaretechnik benutzen wir UML-Zustandsdiagramme für <strong>die</strong><br />

Notation von endlichen <strong>Automaten</strong>.<br />

! In der <strong>Automaten</strong>theorie hat sich vorher schon e<strong>in</strong>e e<strong>in</strong>fachere<br />

Notation etabliert:<br />

! Zustände werden als Kreise gezeichnet<br />

! Der Anfangszustand hat e<strong>in</strong>en kle<strong>in</strong>en gerichteten Pfeil<br />

! Der Endzustand besteht aus 2 konzentrischen Kreisen<br />

Zusätzlicher Pfeil:<br />

Startzustand<br />

Doppelkreis:<br />

Endzustand<br />

0<br />

q0<br />

q2<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 20<br />

1<br />

q1<br />

1<br />

0 0<br />

1<br />

Bei endlichen <strong>Automaten</strong> ohne größere Komplexität werden wir <strong>die</strong>se<br />

Notation öfters benutzen.<br />

1<br />

0<br />

q3<br />

Kreis: Zustand


Übergangsfunktion " als Tabelle<br />

! Def<strong>in</strong>ition Übergangstabelle: Tabellenförmige Darstellung der<br />

Übergangsfunktion e<strong>in</strong>es endlichen <strong>Automaten</strong>.<br />

E<strong>in</strong>gabe aus !<br />

a b ... j ... z<br />

Zustände<br />

q 0<br />

q 1<br />

...<br />

q i<br />

" (q 0 , a) " (q o , b) " (q o , j) " (q o , z)<br />

" (q 1 , a) " (q 1 , b) " (q 1 , j) " (q 1 , z)<br />

... ... ... ...<br />

" (q i a) " (q i , b) " (q i , j) " (q i , z)<br />

... ... ... ... ...<br />

q n<br />

" (q n a) " (q n , b) " (q n , j) " (q n , z)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 21<br />

Übergangstabelle für den Gleichheitsprüfer<br />

E<strong>in</strong>gabe<br />

Zustand<br />

0 1<br />

q 0<br />

q 2 q 1<br />

q 1 q 3 q 0<br />

Erweiterung der<br />

q 0 q 3<br />

q 3 q 1 q 2<br />

*<br />

q 0<br />

Übergangsfunktion "<br />

von e<strong>in</strong>zelnen Zeichen<br />

auf Zeichenketten:<br />

"(q, aw) = "("(q, a), w)<br />

a % ', w % '*<br />

! Anfangszustand: q 0<br />

! Beispiel: E<strong>in</strong>gabe 110101<br />

" (q 0 , 1) = q 1<br />

" (q 1 , 1) = q 0 " (q 0 , 0) = q 2<br />

" (q 2 , 1) = q 3<br />

" (q 3 , 0) = q 1 " (q 1 , 1) = q 0<br />

Für <strong>die</strong>se Folge von Berechnungen schreiben wir auch verkürzt:<br />

" (q 0 , 110101)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 22


Übergangsfunktion " als Produktionenmenge<br />

" (q 0 , a) = q kann man auch als Produktion sehen: q 0 a $ q<br />

Die Übergangsfunktion def<strong>in</strong>iert dann e<strong>in</strong>e Menge von Produktionen<br />

Beispiel: Die eben durchgeführte Folge von Berechnungen<br />

" (q 0 , 1) = q 1<br />

" (q 1 , 1) = q 0 " (q 0 , 0) = q 2<br />

" (q 2 , 1) = q 3<br />

" (q 3 , 0) = q 1 " (q 1 , 1) = q 0<br />

kann als Ableitungsfolge gesehen werden:<br />

q 0 1 $ q 1<br />

q 1 1 $ q 0<br />

q 0 0 $ q 2<br />

q 2 1 $ q 3<br />

q 3 0$ q 1<br />

q 1 1 $ q 0<br />

Für <strong>die</strong>se Ableitungsfolge schreiben wir manchmal verkürzt:<br />

q 0 110101 $* q 0<br />

und sagen, das Wort 110101 wird vom <strong>Automaten</strong> erkannt.<br />

q 0 110101 $ q 1 10101<br />

q 1 10101 $ q 0 0101<br />

q 0 0101 $ q 2 101<br />

q 2 101 $ q 3 01<br />

q 3 01 $ q 1 1<br />

q 1 1 $ q 0<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 23<br />

Sprache e<strong>in</strong>es <strong>Automaten</strong><br />

! Die von e<strong>in</strong>em endlichen <strong>Automaten</strong> A akzeptierte Sprache L(A)<br />

ist def<strong>in</strong>iert als<br />

L(A) = { x | x % !*, q 0 x $ * q f mit q f % F}<br />

Alle E<strong>in</strong>gabeworte, <strong>die</strong> den <strong>Automaten</strong> A vom Anfangszustand <strong>in</strong><br />

e<strong>in</strong>en Endzustand überführen, s<strong>in</strong>d also Teil der Sprache L(A)<br />

Wolf-Kohl-Ziege Automat W:<br />

ZHWZKKKKKKKHZ % L(W), KZHW ( L(W)<br />

Gleichheits-Checker P:<br />

110101 % L(P), 1101011 ( L(P)<br />

Im Übergangsgraphen entspricht e<strong>in</strong> x % L(A) e<strong>in</strong>em Weg vom<br />

Anfangszustand q 0 zu e<strong>in</strong>em Endzustand.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 24


Endliche <strong>Automaten</strong> mit Ausgabe<br />

! Endliche <strong>Automaten</strong>, wie wir sie bis jetzt def<strong>in</strong>iert haben, besitzen nur<br />

e<strong>in</strong>e E<strong>in</strong>gabe, aber ke<strong>in</strong>e richtige Ausgabe:<br />

Die Ausgabe ist e<strong>in</strong> b<strong>in</strong>äres Signal:<br />

"Die E<strong>in</strong>gabe ist akzeptiert" oder "Die E<strong>in</strong>gabe ist nicht akzeptiert"<br />

! Es gibt Probleme, <strong>die</strong> mit endlichen <strong>Automaten</strong> modellierbar s<strong>in</strong>d, bei<br />

denen <strong>die</strong> Ausgabe wichtiger ist als der erreichte Endzustand.<br />

! Beispiel: MVV-Fahrkartenautomat.<br />

! Ich wähle e<strong>in</strong>en Fahrsche<strong>in</strong> aus, z.B. e<strong>in</strong>e Tageskarte.<br />

! Ich werfe den korrekten Geldbetrag <strong>in</strong> den <strong>Automaten</strong>.<br />

! Jetzt erwarte ich, dass der Fahrsche<strong>in</strong> ausgegeben wird.<br />

! Ob der Automat dabei <strong>in</strong> e<strong>in</strong>em Endzustand ist, <strong>in</strong>teressiert mich absolut nicht.<br />

! Es gibt viele Arten von <strong>Automaten</strong>, <strong>die</strong> Ausgabe ermöglichen.<br />

! Wichtige Varianten s<strong>in</strong>d <strong>die</strong> Mealy-, Moore- und Harel-<strong>Automaten</strong>.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 25<br />

Moore-Automat<br />

! E<strong>in</strong> Moore-Automat ist e<strong>in</strong> 6-Tupel M = (Q, ), T, ", *, q o ), wobei<br />

Q, ), " und q o wie beim endlichen <strong>Automaten</strong> def<strong>in</strong>iert s<strong>in</strong>d.<br />

T ist das Ausgabealphabet, und * ist e<strong>in</strong>e Abbildung von Q nach T.<br />

! In e<strong>in</strong>em Zustand wird also e<strong>in</strong> Zeichen t % T ausgegeben.<br />

! Jeder MVV-Kartenautomat enthält zwei Moore-<strong>Automaten</strong>, wobei das<br />

E<strong>in</strong>gabealphabet immer aus erlaubten Geldstücken besteht:<br />

! Fahrsche<strong>in</strong>ausgabe F: Wenn der korrekte Geldbetrag e<strong>in</strong>gegeben<br />

worden ist, wird e<strong>in</strong> Zustand erreicht, <strong>in</strong> dem der Fahrsche<strong>in</strong><br />

ausgegeben wird.<br />

! Wechselgeldausgabe W: Wenn mehr als der korrekte Geldbetrag<br />

e<strong>in</strong>geben wurde, muss e<strong>in</strong> Zustand erreicht werden, <strong>in</strong> dem das<br />

zuviel e<strong>in</strong>gezahlte Geld ausgegeben wird.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 26


Mealy-Automat<br />

! E<strong>in</strong> Mealy-Automat ist e<strong>in</strong> 6-Tupel M = (Q, ), T, ", *, q o ) wobei<br />

Q, ), T, " und q o wie beim Moore-<strong>Automaten</strong> def<strong>in</strong>iert s<strong>in</strong>d.<br />

* ist allerd<strong>in</strong>gs e<strong>in</strong>e Abbildung von Q # ) nach T.<br />

! Beim Übergang von e<strong>in</strong>em Zustand zu e<strong>in</strong>em anderen Zustand<br />

wird also bei E<strong>in</strong>gabe a % ) e<strong>in</strong> Zeichen t % T ausgegeben.<br />

! Jeder MVV-Kartenautomat enthält e<strong>in</strong>en Mealy-<strong>Automaten</strong>:<br />

! E<strong>in</strong>gabealphabet s<strong>in</strong>d wieder <strong>die</strong> erlaubten Geldstücke.<br />

! Anzeige des fehlenden Betrages F: Nach dem E<strong>in</strong>wurf jedes<br />

Geldstückes wird der noch fehlende Betrag auf dem Bildschirm<br />

angezeigt.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 27<br />

Harel-Automat<br />

! Die durch UML-Zustandsdiagramme beschreibbaren <strong>Automaten</strong><br />

nennen wir Harel-<strong>Automaten</strong>.<br />

! E<strong>in</strong> Harel-Automat hat<br />

! e<strong>in</strong>e Zustandsmenge Q, <strong>die</strong> hierarchisch organisiert se<strong>in</strong> kann<br />

(durch Superzustände)<br />

! e<strong>in</strong>e E<strong>in</strong>gabemenge ) von Ereignissen<br />

! e<strong>in</strong>e Ausgabemenge T<br />

! e<strong>in</strong>e Menge von Prädikaten + für Wächter<br />

! e<strong>in</strong>en Anfangszustand q 0<br />

! Zwei Funktionen mit Ausgabe:<br />

# Übergangsfunktion " : Q # ) # + $ T # Q<br />

# Zustandsausgabe *: Q $ T<br />

Ereignis ) [Wächter] + /Aktion T<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 28


Endliche <strong>Automaten</strong> vs Harel-<strong>Automaten</strong><br />

! Die E<strong>in</strong>gabe <strong>in</strong> e<strong>in</strong>em endlichen <strong>Automaten</strong> entspricht den Ereignissen<br />

<strong>in</strong> e<strong>in</strong>em Harel-<strong>Automaten</strong>. Die Ereignisse kommen dabei aus der<br />

Modellierung der Anwendungsdomäne.<br />

! Die Ausgabe <strong>in</strong> e<strong>in</strong>em endlichen <strong>Automaten</strong> ist äquivalent zu e<strong>in</strong>er<br />

Aktion oder e<strong>in</strong>er Aktivität im entsprechenden Harel-<strong>Automaten</strong>.<br />

! E<strong>in</strong> UML-Zustandsdiagramm beschreibt e<strong>in</strong>en Mealy-<strong>Automaten</strong>,<br />

wenn es ke<strong>in</strong>e Wächter und ke<strong>in</strong>e Aktivitäten enthält, sondern nur<br />

Aktionen der Form a/t.<br />

! E<strong>in</strong> UML-Zustandsdiagramm beschreibt e<strong>in</strong>en Moore-<strong>Automaten</strong>,<br />

wenn es ke<strong>in</strong>e Wächter und ke<strong>in</strong>e Aktionen enthält, sondern nur<br />

Aktivitäten der Form do/pr<strong>in</strong>t(t)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 29<br />

<strong>Automaten</strong> mit ,-Übergängen<br />

! E<strong>in</strong> endlicher Automat kann auch Transitionen ohne spezifische<br />

E<strong>in</strong>gabe ausführen. In <strong>die</strong>sem Fall verallgeme<strong>in</strong>ern wir <strong>die</strong><br />

Übergangsfunktion " folgendermaßen:<br />

" : Q # (! - {,}) $ Q, wobei gilt:<br />

" (q, a) ist e<strong>in</strong> def<strong>in</strong>ierter Zustand für jeden Zustand q und jede<br />

E<strong>in</strong>gabe a % ! - {,}.<br />

Erstaunlich: Die Sprachen von <strong>Automaten</strong> mit ,-Übergängen s<strong>in</strong>d<br />

nicht mächtiger als <strong>die</strong> von endlichen <strong>Automaten</strong>.<br />

Satz: Jeder Automat mit ,-Übergängen kann <strong>in</strong> e<strong>in</strong>en äquivalenten<br />

endlichen <strong>Automaten</strong> (ohne ,-Übergänge) transformiert werden.<br />

Beweis & Hauptstudium (<strong>Automaten</strong>theorie)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 30


Beispiel für e<strong>in</strong>en <strong>Automaten</strong> mit ,-Übergängen<br />

,<br />

HKZW-!<br />

Z<br />

KW-HZ<br />

H<br />

HKW-Z<br />

Z<br />

H<br />

W W K K<br />

,-Übergang<br />

K-HWZ<br />

W-HKZ<br />

,-Übergang<br />

Z Z Z Z<br />

HKZ-W<br />

HWZ-K<br />

Im allgeme<strong>in</strong>en wird <strong>in</strong><br />

UML-Zustandsdiagrammen<br />

das leere Wort nicht gezeigt<br />

K<br />

K<br />

W<br />

Z-HKW<br />

W<br />

H<br />

H<br />

HZ-KW<br />

Z<br />

Z<br />

,<br />

!-HKWZ<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 31<br />

Nichtdeterm<strong>in</strong>istischer endlicher Automat<br />

! Bisher haben wir angenommen, dass " : Q # ! $ Q für <strong>die</strong> Berechnung<br />

von Zustandsübergängen e<strong>in</strong>e Funktion ist.<br />

• Für jedes Paar Zustand/E<strong>in</strong>gabe gibt es nur e<strong>in</strong>en neuen Zustand.<br />

• Solche <strong>Automaten</strong> nennen wir determ<strong>in</strong>istisch.<br />

• Im allgeme<strong>in</strong>en Fall kann man von e<strong>in</strong>em gegebenen Zustand q bei<br />

E<strong>in</strong>gabe e<strong>in</strong>es Zeichens mehr als e<strong>in</strong>en Zustand bekommen.<br />

• Beispiel: " (q 1 , a) = q 3 und " (q 1 , a) = q 4<br />

• " ist dann ke<strong>in</strong>e Funktion, sondern e<strong>in</strong>e Relation. E<strong>in</strong> endlicher Automat,<br />

bei dem " e<strong>in</strong>e Relation ist, heißt nichtdeterm<strong>in</strong>istisch.<br />

Erstaunlich: Die Sprachen, <strong>die</strong> von nichtdeterm<strong>in</strong>istischen endlichen<br />

<strong>Automaten</strong> akzeptiert werden, s<strong>in</strong>d nicht mächtiger als <strong>die</strong> von<br />

determ<strong>in</strong>istischen endlichen <strong>Automaten</strong>.<br />

• Satz: Jeder nichtdeterm<strong>in</strong>istische endliche Automat kann <strong>in</strong> e<strong>in</strong>en<br />

äqui-valenten determ<strong>in</strong>istischen endlichen <strong>Automaten</strong> transformiert<br />

werden.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 32


E<strong>in</strong> weiteres Beispiel: Erkennung von Zahlen<br />

! Wir wollen e<strong>in</strong>en endlichen <strong>Automaten</strong> konstruieren, der Bezeichner<br />

akzeptiert. E<strong>in</strong> Bezeichner muss mit e<strong>in</strong>em Buchstaben anfangen,<br />

gefolgt von beliebig vielen Buchstaben oder Ziffern.<br />

! Endlicher Automat A:<br />

! E<strong>in</strong>gabealphabet ) = { b, z }<br />

wobei b e<strong>in</strong> Buchstabe ist und z e<strong>in</strong>e Ziffer<br />

! Übergangsdiagramm:<br />

q b<br />

0<br />

q 1<br />

z<br />

b<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 33<br />

Grammatik für Bezeichner<br />

! Für <strong>die</strong> eben def<strong>in</strong>ierten Bezeichner können wir auch e<strong>in</strong>e<br />

Grammatik entwickeln, und zwar mit den Produktionen P:<br />

{ Bezeichner $ 'b' ZahlBuchstabe | 'b'<br />

ZahlBuchstabe $ 'b' ZahlBuchstabe | 'b'<br />

ZahlBuchstabe $ 'z' ZahlBuchstabe | 'z'<br />

}<br />

! Diese Grammatik akzeptiert <strong>die</strong>selbe Sprache wie der eben<br />

entwickelte Automat !<br />

! Dies ist ke<strong>in</strong> Zufall, sondern liegt an e<strong>in</strong>em tieferen Zusammenhang<br />

zwischen <strong>Automaten</strong> und Grammatiken, den wir jetzt genauer<br />

herausarbeiten.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 34


E<strong>in</strong>schub: Reguläre Grammatik (Chomsky-3-Grammatik)<br />

! Gegeben sei e<strong>in</strong>e Chomsky-Grammatik G = (T, N, P, Z).<br />

Seien A und B Nichtterm<strong>in</strong>ale aus N und a e<strong>in</strong> Term<strong>in</strong>al aus T.<br />

! Wir def<strong>in</strong>ieren e<strong>in</strong>e Rechtsl<strong>in</strong>eare Produktion als e<strong>in</strong>e Produktion der<br />

Form A $ aB<br />

! Wir def<strong>in</strong>ieren e<strong>in</strong>e L<strong>in</strong>ksl<strong>in</strong>eare Produktion als e<strong>in</strong>e Produktion der<br />

Form A $ Ba<br />

! Def<strong>in</strong>ition: E<strong>in</strong>e Grammatik ist e<strong>in</strong>e reguläre Grammatik oder auch<br />

Chomsky-3-Grammatik, wenn sie neben term<strong>in</strong>ierenden Produktionen<br />

entweder nur l<strong>in</strong>ks- oder nur rechtsl<strong>in</strong>eare Produktionen enthält.<br />

Beispiele:<br />

P = {A $ aB, A $ a, B $ aB}<br />

P = {A $ Ba, B $ a, B $ Ba}<br />

P = {A $ Ba, B $ a, B $ aB}<br />

P = {A $ BA, B $ a, B $ aB}<br />

& G ist regulär<br />

& G ist regulär<br />

& G ist nicht regulär<br />

& G ist nicht regulär<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 35<br />

Regulär oder nicht regulär?<br />

P = {A $ aB, A $ a, B $ aB}<br />

P = {A $ Ba, B $ a, A $ ,}<br />

P = {A $ Ba, B $ a, B $ aB}<br />

P = {A $ BA, B $ a, B $ aB}<br />

Grammatik ist regulär<br />

(Produktionen s<strong>in</strong>d term<strong>in</strong>al oder<br />

rechtsl<strong>in</strong>ear)<br />

Grammatik ist nicht regulär<br />

(hat e<strong>in</strong>e sog. ,-Produktion, <strong>die</strong><br />

weder rechts- noch l<strong>in</strong>ksl<strong>in</strong>ear ist)<br />

Grammatik ist nicht regulär<br />

(hat sowohl rechts- als auch<br />

l<strong>in</strong>ksl<strong>in</strong>eare Produktionen)<br />

Grammatik ist nicht regulär<br />

(hat e<strong>in</strong>e Produktion, <strong>die</strong> weder<br />

rechts- noch l<strong>in</strong>ksl<strong>in</strong>ear ist)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 36


<strong>Automaten</strong> und Grammatiken<br />

! Wir hatten L(A) als <strong>die</strong> Sprache def<strong>in</strong>iert, <strong>die</strong> von e<strong>in</strong>em <strong>Automaten</strong> A<br />

akzeptiert wird.<br />

! Für e<strong>in</strong>e gegebene Chomsky-Grammatik G = (), N, P, Z) hatten wir<br />

L(G) als <strong>die</strong> Sprache def<strong>in</strong>iert, <strong>die</strong> von G erzeugt wird<br />

(siehe Info I - Vorlesung 4, Folie 32).<br />

! Satz über Äquivalenz zwischen endlichen <strong>Automaten</strong> und<br />

regulären Grammatiken<br />

! E<strong>in</strong>e Menge L . )* ist genau dann <strong>die</strong> Sprache L = L(A) e<strong>in</strong>es<br />

endlichen <strong>Automaten</strong> A, wenn es e<strong>in</strong>e reguläre Grammatik<br />

G = (), N, P, Z) gibt, so dass L = L(G).<br />

! Die Äquivalenz ist beschränkt auf <strong>die</strong> nichtleeren Worte aus L:<br />

E<strong>in</strong>e reguläre Grammatik kann , nicht im Sprachschatz haben, es<br />

gibt aber endliche <strong>Automaten</strong>, <strong>die</strong> , erkennen (Welche?)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 37<br />

Endliche <strong>Automaten</strong> und reguläre Grammatiken<br />

• Zurück zu unserem Satz:<br />

• Immer wenn wir e<strong>in</strong>en endlichen <strong>Automaten</strong> haben, der e<strong>in</strong>e<br />

Sprache L(A) akzeptiert, können wir e<strong>in</strong>e reguläre Grammatik<br />

konstruieren, <strong>die</strong> denselben Sprachschatz akzeptiert.<br />

• Dasselbe gilt auch umgekehrt.<br />

• Wir führen den Beweis <strong>in</strong> beiden Richtungen.<br />

1. Gegeben e<strong>in</strong>e reguläre Grammatik & endlicher Automat<br />

2. Gegeben e<strong>in</strong> endlicher Automat & reguläre Grammatik<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 38


Reguläre Grammatik & Endlicher Automat<br />

! Der Beweis ist konstruktiv, d.h. wir zeigen, wie für e<strong>in</strong>e beliebige<br />

vorgegebene reguläre Grammatik der entsprechende Automat<br />

konstruiert werden kann.<br />

! Sei e<strong>in</strong>e reguläre Grammatik G = (T, N, P, Z) gegeben.<br />

! Die Produktionen <strong>in</strong> P haben also alle <strong>die</strong> Form A $ aB, A $ a<br />

Für rechtsl<strong>in</strong>eare Produktionen wird der Beweis analog geführt<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 39<br />

Reguläre Grammatik & Endlicher Automat (3)<br />

Aus der Grammatik G = (T, N, P, Z) konstruieren wir den <strong>Automaten</strong><br />

A = (), Q, ", q 0 , F) folgendermaßen:<br />

) = T<br />

Q = N - {q f }<br />

q 0 = Z<br />

E<strong>in</strong>gabealphabet ) : Alle Term<strong>in</strong>ale T<br />

Zustandsmenge Q: Alle Nichtterm<strong>in</strong>ale N<br />

plus e<strong>in</strong> neuer Endzustand q f<br />

Anfangszustand q 0 : Das Axiom Z<br />

F = {q f }<br />

"(A, a) = B wenn A $ aB % P<br />

"(A, a) = q f wenn A $ a % P<br />

Endzustandsmenge F: Neu e<strong>in</strong>geführter Zustand q f<br />

Für jede Produktion aus P<br />

berechnen wir e<strong>in</strong>en Wert für<br />

<strong>die</strong> Übergangsfunktion "<br />

(Der Rest von " ist undef<strong>in</strong>iert)<br />

Das heißt: Für jede reguläre Grammatik können wir e<strong>in</strong>en endlichen<br />

<strong>Automaten</strong> konstruieren, der <strong>die</strong>selbe Sprache akzeptiert.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 40


Endlicher Automat & Reguläre Grammatik<br />

Aus dem <strong>Automaten</strong> A = (), Q, ", q 0 , F) konstruieren wir <strong>die</strong><br />

Grammatik G = (T, N, P, Z) folgendermaßen:<br />

T = ) Term<strong>in</strong>ale T: Alle Elemente aus dem E<strong>in</strong>gabealphabet )<br />

N = Q<br />

P:<br />

Nichtterm<strong>in</strong>ale N s<strong>in</strong>d alle Zustände von Q<br />

1. Für jedes "(A, a) = B def<strong>in</strong>ieren wir e<strong>in</strong>e Produktion A $ aB<br />

2. Für jedes E<strong>in</strong>gabesymbol a, das aus Zustand A zu e<strong>in</strong>em<br />

Endzustand q f % F führt, d.h. "(A, a) = q f , def<strong>in</strong>ieren wir e<strong>in</strong>e<br />

Produktion A $ a<br />

Z = q 0 Als Axiom Z nehmen wir den Anfangszustand q 0<br />

Das heißt: Für jeden endlichen <strong>Automaten</strong> können wir e<strong>in</strong>e reguläre<br />

Grammatik konstruieren, <strong>die</strong> <strong>die</strong>selbe Sprache (bis auf ,) akzeptiert.<br />

q.e.d.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 41<br />

Beispiel: Konvertierung e<strong>in</strong>er Grammatik <strong>in</strong> endlichen<br />

<strong>Automaten</strong><br />

! G = (T, N, P, Z), wobei gilt:<br />

T = { 'b', 'z'}<br />

N = { Bezeichner, ZahlBuchstabe}<br />

P = {<br />

Bezeichner $ 'b' ZahlBuchstabe | 'b'<br />

ZahlBuchstabe $ 'b' ZahlBuchstabe | 'b'<br />

ZahlBuchstabe $ 'z' ZahlBuchstabe | 'z'<br />

}<br />

Z = Bezeichner<br />

bzzzz, bzbz % L(G),<br />

z, zb ( L(G)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 42


Konstruktion des <strong>Automaten</strong><br />

) = T = {b, z}<br />

Q = N - q f = {Bezeichner, ZahlBuchstabe, q f }<br />

q 0 = Z = Bezeichner<br />

F = q f<br />

"(A, a) = B wenn A $ aB % P<br />

" (Bezeichner, b) = {ZahlBuchstabe, q f }<br />

// Bezeichner $ 'b' ZahlBuchstabe<br />

" (ZahlBuchstabe, b) = {ZahlBuchstabe, q f } // ZahlBuchstabe $ 'b‘ZahlBuchstabe<br />

" (ZahlBuchstabe, z) = {ZahlBuchstabe, q f } // ZahlBuchstabe $ 'z' ZahlBuchstabe<br />

Bezeichner<br />

b<br />

b<br />

z<br />

ZahlBuchstabe<br />

b<br />

q f<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 43<br />

b<br />

z<br />

Zusammenfassung (1)<br />

Mealy-Automat:<br />

Ausgabe nur bei<br />

Zustandsübergängen<br />

Moore-Automat<br />

Ausgabe nur<br />

bei Zuständen<br />

Endlicher Automat:<br />

Ke<strong>in</strong>e Ausgabe,<br />

Endzustände<br />

Harel-Automat<br />

Übergänge haben Ereignis,<br />

Wächter und Operation,<br />

Zustände haben Ausgabe<br />

Zeichnen wir als<br />

UML-Zustandsdiagramm<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 44


Zusammenfassung (2)<br />

! Endlicher Automat zur Modellierung von dynamischen Aspekten <strong>in</strong><br />

Systemen<br />

! Verschiedene Darstellungen für <strong>die</strong> Übergangsfunktion:<br />

! Übergangsgraph, Übergangstabelle, Produktionenmenge<br />

! Wichtige <strong>Automaten</strong> mit Ausgabe: Mealy, Moore, und Harel<br />

! UML-Zustandsdiagramme s<strong>in</strong>d Übergangsgraphen für Harel-<br />

<strong>Automaten</strong>.<br />

! Endliche <strong>Automaten</strong> und reguläre Grammatiken s<strong>in</strong>d verschiedene<br />

Interpretationen desselben Sachverhaltes<br />

! Viele E<strong>in</strong>sichten über <strong>Automaten</strong> erhalten wir, weil wir zwischen<br />

<strong>die</strong>sen Interpretationen h<strong>in</strong> und her wechseln können.<br />

! Da e<strong>in</strong> Übergangsgraph e<strong>in</strong> Graph ist, können wir auch Kenntnisse aus<br />

der Graphentheorie zum Verständnis der Eigenschaften von endlichen<br />

<strong>Automaten</strong> verwenden.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 45<br />

E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong><br />

<strong>Automaten</strong><br />

Prof. Bernd Brügge, Ph.D<br />

Institut für <strong>Informatik</strong><br />

<strong>Technische</strong> Universität München<br />

Sommersemester 2004<br />

6. Juli 2004<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 462


Ziele <strong>die</strong>ses Vorlesungsabschnitts<br />

! Sie können e<strong>in</strong>en nichtdeterm<strong>in</strong>istischen endlichen <strong>Automaten</strong><br />

<strong>in</strong> e<strong>in</strong>en endlichen <strong>Automaten</strong> transformieren<br />

! mit dem Myhill-Verfahren<br />

! Sie können zeigen, dass e<strong>in</strong>e gegebene Sprache nicht regulär<br />

ist<br />

! mit dem Pump<strong>in</strong>g-Lemma<br />

! Sie verstehen, dass es Sprachen gibt, <strong>die</strong> man mit endlichen<br />

<strong>Automaten</strong> nicht erkennen kann<br />

! Chomsky-2-Sprachen<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 47<br />

Wiederholung: Alternative Notation für Übergangsgraphen<br />

! In der Softwaretechnik benutzen wir UML-Zustandsdiagramme für<br />

<strong>die</strong> Notation von endlichen <strong>Automaten</strong>.<br />

! In der <strong>Automaten</strong>theorie hatte sich schon vorher e<strong>in</strong>e e<strong>in</strong>fachere<br />

Notation etabliert:<br />

! Zustände werden als Kreise gezeichnet<br />

! Der Anfangszustand hat e<strong>in</strong>en kle<strong>in</strong>en gerichteten Pfeil<br />

! Der Endzustand besteht aus 2 konzentrischen Kreisen<br />

Zusätzlicher Pfeil:<br />

Startzustand<br />

Doppelkreis:<br />

Endzustand<br />

0<br />

q0<br />

q2<br />

0<br />

1<br />

1<br />

1<br />

1<br />

0<br />

q1<br />

q3<br />

0<br />

Kreis: Zustand<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 48


Übung: Welche Sprache akzeptiert <strong>die</strong>ser Automat?<br />

1<br />

1<br />

1<br />

0<br />

1 1<br />

0 0 1<br />

q 2<br />

q 0<br />

0 0<br />

q 3<br />

q 4<br />

q 1<br />

0<br />

Der Automat akzeptiert 0011, denn <strong>die</strong><br />

Folge von Zuständen q 0 , q 3 , q 4 , q 4 , q 4<br />

endet <strong>in</strong> q 4 , e<strong>in</strong>em Endzustand<br />

Allgeme<strong>in</strong> akzeptiert der Automat<br />

alle E<strong>in</strong>gaben, <strong>die</strong> entweder mit 00 oder<br />

mit 11 anfangen.<br />

Beispiele: 001, 0001, 11, 110, 1101<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 49<br />

Und welche Sprache akzeptiert <strong>die</strong>ser Automat?<br />

1<br />

1<br />

0 1 0 0<br />

1<br />

0<br />

1<br />

0<br />

1<br />

q 2<br />

q 0<br />

0 0<br />

q 3<br />

q 4<br />

?<br />

q 1<br />

1<br />

0<br />

E<strong>in</strong>gabebeispiel:<br />

01001<br />

Der Automat akzeptiert 01001: Es gibt<br />

e<strong>in</strong>e Folge von Zuständen q 0 , q 0 , q 0 , q 3 , q 4 , q 4<br />

<strong>die</strong> <strong>in</strong> q 4 , e<strong>in</strong>em Endzustand, endet<br />

Allgeme<strong>in</strong> akzeptiert der Automat<br />

alle E<strong>in</strong>gaben, <strong>die</strong> m<strong>in</strong>destens 2<br />

konsekutive E<strong>in</strong>sen oder Nullen enthalten.<br />

Beispiele: 001, 0001, 11, 110, 1101, ...<br />

In welcher Reihenfolge f<strong>in</strong>den <strong>die</strong> Zuständsübergänge statt?<br />

• Was machen wir z.B <strong>in</strong> Zustand q 0<br />

, wenn wir e<strong>in</strong>e 0 lesen?<br />

• Bleiben wir <strong>in</strong> q 0 oder gehen wir nach q 3 ?<br />

• Blieben wir immer <strong>in</strong> q 0 , würde 01001 nicht akzeptiert werden.<br />

• Wann tun wir was?<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 50


Nichtdeterm<strong>in</strong>istische endliche <strong>Automaten</strong><br />

! Endliche <strong>Automaten</strong> mit Zuständen, <strong>die</strong> für <strong>die</strong>selbe E<strong>in</strong>gabe mehr als<br />

e<strong>in</strong>en Übergang erlauben, hatten wir nichtdeterm<strong>in</strong>istisch genannt.<br />

! Das Konzept der nichtdeterm<strong>in</strong>istischen endlichen <strong>Automaten</strong> spielt<br />

e<strong>in</strong>e große Rolle <strong>in</strong> mehreren Gebieten der <strong>Informatik</strong>, <strong>in</strong>sbesondere<br />

im Übersetzerbau und beim Beweisen von Theoremen.<br />

! Wir hatten schon erwähnt, dass nichtdeterm<strong>in</strong>istische endliche<br />

<strong>Automaten</strong> ke<strong>in</strong>e mächtigeren Sprachen akzeptieren, als<br />

determ<strong>in</strong>istische endliche <strong>Automaten</strong>.<br />

! Das werden wir nun im folgenden beweisen.<br />

! E<strong>in</strong>e solche Äquivalenz gilt nicht für alle Arten von <strong>Automaten</strong> (gilt<br />

nicht für unendliche <strong>Automaten</strong> und Kellerautomaten).<br />

& Hauptstudium<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 51<br />

Gedankenmodell: E<strong>in</strong> nicht-determ<strong>in</strong>istischer endlicher<br />

Automat hat mehrere Steuerungen<br />

E<strong>in</strong>gabeband E mit<br />

Symbolen aus !<br />

0 1 1 0<br />

LeseKopf L<br />

0<br />

1 0 1 0 1<br />

Steuerung<br />

S = S1q 0<br />

Steuerung<br />

S2<br />

Algorithmus:<br />

Setze <strong>die</strong> Steuerung S auf den Anfangszustand; // S = q 0<br />

;<br />

P = "(q 0 , 0) =<br />

{S1, S2}<br />

Akzeptiert = istEndzustand(S);<br />

While not BandendeErreicht() do {<br />

Lies Symbol unter dem Lesekopf // L = a 1<br />

;<br />

Berechne <strong>die</strong> Menge P aller Zustände aus S und L;<br />

// P = "(S,L); = {S1, S2, …Sn} ;<br />

//P enthält e<strong>in</strong>e Menge von Steuerungen S i<br />

. Alle Steuerungen zeigen auf dasselbe E<strong>in</strong>gabesymbol,<br />

können aber <strong>in</strong> verschiedenen Zuständen se<strong>in</strong><br />

// In e<strong>in</strong>er Java-Implementation können <strong>die</strong> Steuerungen als Threads implementiert werden<br />

Ist e<strong>in</strong>e der Steuerungen <strong>in</strong> P <strong>in</strong> e<strong>in</strong>em Endzustand? Wenn ja, Akzeptiert = true;<br />

} // while not Akzeptiert<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 52


Zustandsbaum e<strong>in</strong>es nicht-determ<strong>in</strong>istischen endlichen <strong>Automaten</strong><br />

1<br />

1<br />

0<br />

0<br />

0<br />

0<br />

q 0<br />

q 3<br />

q 4<br />

1<br />

q 1<br />

1<br />

1<br />

0<br />

q 2<br />

Wurzel des<br />

Zustandsbaums für<br />

<strong>die</strong> E<strong>in</strong>gabe 01001<br />

Zustandsbaum: Gerichteter Graph für e<strong>in</strong>e gegebene E<strong>in</strong>gabe,<br />

wobei <strong>die</strong> Zustände <strong>die</strong> Knotenwerte s<strong>in</strong>d, und <strong>die</strong> Kanten mit<br />

dem jeweiligen E<strong>in</strong>gabesymbol beschriftet s<strong>in</strong>d.<br />

• Der Anfangszustand ist <strong>die</strong> Wurzel des Zustandsbaumes.<br />

q 0<br />

0<br />

0<br />

1<br />

q 0<br />

1<br />

q 3<br />

0<br />

q 0<br />

0<br />

q 1<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 53<br />

q 0<br />

0<br />

q 3<br />

0<br />

0<br />

1<br />

q 0<br />

1<br />

q 3<br />

q 1<br />

1<br />

q 4 q 4<br />

q 0<br />

E<strong>in</strong> nicht-determ<strong>in</strong>istischer endlicher Automat kann also<br />

immer <strong>in</strong> mehr als e<strong>in</strong>em Zustand se<strong>in</strong><br />

0<br />

q 0<br />

0<br />

1<br />

q 0<br />

1<br />

q 3<br />

0<br />

q 0<br />

0<br />

q 1<br />

q 0<br />

0<br />

q 3<br />

0<br />

0<br />

1<br />

q 0<br />

1<br />

q 3<br />

q 1<br />

1<br />

q 4<br />

q 4<br />

q 0<br />

{q 0 , q 3 } {q 0 , q 1 } {q 0 , q 3 }<br />

{q 0 ,q 3 ,q 4 } {q 0 ,q 1 ,q 4 }<br />

Alles Elemente der Potenzmenge von Q,<br />

<strong>die</strong> wir mit P(Q) bezeichnen<br />

! Wir verallgeme<strong>in</strong>ern <strong>die</strong> Übergangsfunktion " : Q # ! $ Q deshalb zu " : Q # ! $ P(Q)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 55


Nicht-determ<strong>in</strong>istischer Endlicher Automat: Def<strong>in</strong>ition<br />

! Def<strong>in</strong>ition: E<strong>in</strong> nichtdeterm<strong>in</strong>istischer endlicher Automat ist e<strong>in</strong> 5-Tupel<br />

A = (!, Q, " nea , q 0 , F), wobei gilt:<br />

! !, Q, q 0 und F (E<strong>in</strong>gabe, Zustände, Anfangszustand und<br />

Endzustände) s<strong>in</strong>d wie beim determ<strong>in</strong>istischen <strong>Automaten</strong> def<strong>in</strong>iert.<br />

• Die Übergangsfunktion " nea : Q # ! $ P(Q) bildet dabei Tupel<br />

(Zustand, E<strong>in</strong>gabe) auf e<strong>in</strong>e Teilmenge der Potenzmenge von Q ab.<br />

• " nea ist e<strong>in</strong>e Erweiterung von " wie folgt:<br />

" nea (q, ,) = {q}<br />

" nea (q, wa) = {p | / r % " nea (q,w) & " (r,a) = p}<br />

d.h. ausgehend von e<strong>in</strong>em Zustand q lesen wir <strong>die</strong> Zeichenkette w.<br />

Dann gibt es e<strong>in</strong>en Zustand r, von dem wir aus mit dem E<strong>in</strong>gabezeichen a<br />

zum Zustand p gehen können.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 56<br />

Die Äquivalenz von nicht-determ<strong>in</strong>istischen und<br />

determ<strong>in</strong>istischen endlichen <strong>Automaten</strong><br />

! Satz: Sei L e<strong>in</strong>e von e<strong>in</strong>em nicht-determ<strong>in</strong>istischen endlichen<br />

<strong>Automaten</strong> akzeptierte Sprache. Dann existiert e<strong>in</strong><br />

determ<strong>in</strong>istischer endlicher Automat, der L auch akzeptiert.<br />

! Beweisidee: Der Beweis baut darauf auf, dass wir für e<strong>in</strong>en<br />

gegebenen nicht-determ<strong>in</strong>istischen endlichen <strong>Automaten</strong> NEA<br />

e<strong>in</strong>en determ<strong>in</strong>istischen endlichen <strong>Automaten</strong> DEA bauen<br />

können, der NEA simuliert.<br />

! Jeder Zustand im DEA wird dabei re<strong>in</strong> syntaktisch aus den<br />

Zustandsteilmengen (<strong>die</strong> "Ellipsen" auf Folie 55) von NEA<br />

konstruiert.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 57


Äquivalenz-Beweis<br />

! Wir beg<strong>in</strong>nen mit e<strong>in</strong>em nicht-determ<strong>in</strong>istischen endlichen <strong>Automaten</strong><br />

NEA = (!, Q, " nea , q 0 , F). Aus <strong>die</strong>sem konstruieren wir e<strong>in</strong>en determ<strong>in</strong>istischen<br />

endlichen <strong>Automaten</strong> DEA = (!', Q', "', q 0 ', F') wie folgt:<br />

! !' = !<br />

! Q' = P(Q) . Die Zustände <strong>in</strong> DEA s<strong>in</strong>d also Elemente der<br />

Potenzmenge der Zustände von NEA.<br />

# Elemente von Q' bezeichnen wir als DEA-Zustand [q 1, q 2 ,…, q n ].<br />

# E<strong>in</strong> Zustand ist e<strong>in</strong> DEA-Zustand [q 1 , q 2 , …, q n ], wenn der NEA <strong>in</strong> e<strong>in</strong>em der<br />

korrespon<strong>die</strong>renden Zustände q 1 , q 2 , …oder q n ist.<br />

! q 0 '= [ q 0 ]<br />

! F' ist <strong>die</strong> Menge aller DEA-Zustände [q 1 …, q i ,..., q n ] <strong>in</strong> Q', bei denen<br />

m<strong>in</strong>destens e<strong>in</strong> Element q i aus F ist.<br />

! Jetzt müssen wir "nur noch" <strong>die</strong> Übergangsfunktion "' des<br />

determ<strong>in</strong>istischen <strong>Automaten</strong> aus " nea konstruieren.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 58<br />

Äquivalenz-Beweis (2)<br />

! Wir def<strong>in</strong>ieren <strong>die</strong> Übergangsfunktion des determ<strong>in</strong>istischen <strong>Automaten</strong><br />

DEA wie folgt:<br />

"'([q 1, q 2 ,…, q n ], a) = [p 1, p 2 ,…, p n ]<br />

genau dann wenn<br />

" nea ({q 1, q 2 ,…, q n }, a) = {p 1, p 2 ,…, p n }<br />

"' für DEA-Zustand [q 1, q 2 ,…, q n ] bei E<strong>in</strong>gabe a wird so berechnet:<br />

! Wir wenden <strong>die</strong> " nea vom NEA auf jeden der NEA-Zustände<br />

q 1, q 2 ,…, q n für a an, was mehrere Zustandsmengen ergibt.<br />

! Diese Zustandsmengen vere<strong>in</strong>igen wir dann zur Menge<br />

{p 1, p 2 ,...,p n }, woraus wir den DEA-Zustand [p 1, p 2 ,...,p n ] erhalten.<br />

! Illustratives Beispiel:<br />

NEA: " nea (q 1 ,a)={p 1 }, " nea (q 2 ,a)={p 2 , p 7 }, " nea (q 3 ,a)={p 2 , p 3 , p 12 }<br />

{p 1 p 2 , p 3 , p 7 ,p 12 } => [p 1 p 2 , p 3 , p 7 ,p 12 ]<br />

DEA: "'([q 1, q 2, q 3 ]), a) = [p 1 p 2 , p 3 , p 7 ,p 12 ]<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 59


Äquivalenz-Beweis (3)<br />

! Jetzt s<strong>in</strong>d wir soweit, den Beweis der Äquivalenz zu machen. Wir benutzen<br />

dabei vollständige Induktion über <strong>die</strong> Länge der E<strong>in</strong>gabe-Zeichenkette x.<br />

D.h. für alle x beliebiger Länge gilt:<br />

"'(q 0 ', x) = [p 1, p 2 ,…, p n ] genau dann, wenn " nea (q 0 , x) = {p 1, p 2 ,…, p n }<br />

! Induktionsanfang: |x| = 0. Als E<strong>in</strong>gabe ist also nur das leere Wort ,<br />

möglich. Beide <strong>Automaten</strong> akzeptieren , genau dann, wenn q 0 e<strong>in</strong><br />

Endzustand ist ("'(q 0 ', ,) = " nea (q 0 , ,) , aufgrund der Konstruktion von DEA<br />

(siehe Folie 59), wo q 0 '= [ q 0 ]. Also L(DEA) = L(NEA).<br />

! Induktionsschritt: Annahme: Für alle E<strong>in</strong>gaben der Länge |x| ! m<br />

akzeptieren <strong>die</strong> <strong>Automaten</strong> <strong>die</strong>selbe Sprache L(DEA) = L(NEA).<br />

"'(q 0 ', x) = [p 1, p 2 ,…, p n ] genau dann, wenn" nea (q 0 , x) = {p 1, p 2 ,…, p n }<br />

! Nun betrachten wir E<strong>in</strong>gaben der Länge m+1, d.h. alle xa, wobei a e<strong>in</strong><br />

beliebiges Element aus ! ist.Wir müssen jetzt zeigen, dass genau dann,<br />

wenn xa vom nichtdeterm<strong>in</strong>istischen endlichen <strong>Automaten</strong> erkannt wird, es<br />

auch vom determ<strong>in</strong>istischen endlichen <strong>Automaten</strong> erkannt wird.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 60<br />

Äquivalenz-Beweis (4)<br />

(1) Aufgrund der Induktionshypothese gilt für |x| ! m :<br />

"'(q 0 ', x) = [p 1, p 2 ,…, p n ] genau dann, wenn " nea (q 0 , x) = {p 1, p 2 ,…, p n }<br />

! d.h. <strong>die</strong> E<strong>in</strong>gabe von x wird von DEA genau dann erkannt, wenn sie<br />

auch von NEA erkannt wird.<br />

(2) Zur Er<strong>in</strong>nerung: Die Übergangsfunktion "' von DEA war def<strong>in</strong>iert als:<br />

"'([p 1, p 2 ,…, p n ], a) = [r 1, r 2 ,…, r n ] genau dann, wenn<br />

" nea ({p 1, p 2 ,…, p n }, a) = {r 1, r 2 ,…, r n }<br />

(3) Außerdem gilt: "'(q 0 ' , xa) = "' ("'(q 0 ' , x), a)<br />

Aus <strong>die</strong>sen 3 Gleichungen erhalten wir:<br />

"'(q 0 ', xa) = [r 1 ,r 2 ,…, r n ] genau dann, wenn<br />

" nea (q 0 , xa) = {r 1 ,r 2 ,…, r n }<br />

d.h. <strong>die</strong> E<strong>in</strong>gabe von xa führt auf e<strong>in</strong>en DEA-Zustand genau dann, wenn<br />

<strong>die</strong> E<strong>in</strong>gabe von xa e<strong>in</strong>en der korrespon<strong>die</strong>renden Zustände im NEA<br />

ergibt.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 61


Äquivalenz-Beweis (5)<br />

! Um <strong>die</strong>se Richtung des Beweises zu beenden, müssen wir nur noch<br />

sicherstellen, dass "'(q 0 ', x) genau dann <strong>in</strong> F' ist, wenn beim<br />

nichtdeterm<strong>in</strong>istischen endlichen <strong>Automaten</strong> <strong>die</strong> Berechnung "(q 0 , x)<br />

e<strong>in</strong>en Zustand ergibt, der <strong>in</strong> F ist.<br />

! Für den vollständigen Beweis der Äquivalenz von NEA und DEA<br />

muss noch gezeigt werden, wie aus e<strong>in</strong>em DEA e<strong>in</strong> NEA konstruiert<br />

wird:<br />

! nichts zu tun, da jeder DEA bereits e<strong>in</strong> NEA ist<br />

! Damit gilt also: L(NEA) = L(DEA)<br />

! q.e.d<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 62<br />

Beispiel: Konstruktion e<strong>in</strong>es DEA aus e<strong>in</strong>em NEA<br />

! Gegeben sei e<strong>in</strong> NEA = (!, Q, " nea , q 0 , F) mit<br />

! E<strong>in</strong>gabealphabet ! ={0,1}<br />

! Zustandsmenge Q ={q 0 , q 1 }<br />

! Übergangsfunktion " nea<br />

" nea (q 0 , 0) = {q 0 , q 1 }<br />

" nea (q 0 , 1) = {q 1 }<br />

" nea (q 1 , 0) = !<br />

" nea (q 1 , 1) = {q 0 , q 1 }<br />

0 0 1<br />

1<br />

q 0<br />

q 1<br />

1<br />

! Anfangszustand q 0<br />

! Endzustandsmenge F = {q 1 }<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 63


Beispiel: Konstruktion e<strong>in</strong>es DEA aus e<strong>in</strong>em NEA (2)<br />

! Wir konstruieren nun den DEA= (!', Q', "', [q 0 ], F') wie folgt:<br />

! E<strong>in</strong>gabealphabet: !'= ! = {0, 1}<br />

! Zustandsmenge: Q' = {[q 0 ], [q 1 ], [q 0 ,q 1 ]}<br />

denn <strong>die</strong> Potenzmenge von Q={q 0 , q 1 } ist P(Q) = {!, {q 0 }, {q 1 }, {q 0 ,q 1 }}<br />

! Übergangsfunktion "':<br />

"'([q 0 ], 0) = [q 0 , q 1 ] denn " nea (q 0 , 0) = {q 0 , q 1 }<br />

"'([q 0 ], 1) = [q 1 ] denn " nea (q 0 , 1) = {q 1 }<br />

"'([q 1 ], 0) = ! denn " nea (q 1 , 0) = !<br />

"'([q 1 ], 1) = [q 0 , q 1 ] denn " nea (q 1 , 1) = {q 0 , q 1 }<br />

"'([q 0 , q 1 ], 0) = [q 0 , q 1 ] denn " nea<br />

({q 0<br />

, q 1<br />

}, 0)= " nea<br />

(q 0<br />

, 0) - " nea<br />

(q 1<br />

, 0) =<br />

{q 0<br />

, q 1<br />

} - ! = {q 0<br />

, q 1<br />

}<br />

"'([q 0 , q 1 ], 1) = [q 0 , q 1 ] denn " nea<br />

({q 0<br />

, q 1<br />

}, 1)= " nea<br />

(q 0<br />

, 1) - " nea<br />

(q 1<br />

, 1) =<br />

{q 1<br />

} - {q 0<br />

, q 1<br />

} = {q 0<br />

, q 1<br />

}<br />

! Anfangszustand: [q 0 ]<br />

! Endzustände: F' = {[q 1 ], [q 0 , q 1 ]} (denn q 1 ist e<strong>in</strong> Endzustand <strong>in</strong> NEA)<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 64<br />

Myhill-Verfahren: E<strong>in</strong>fachere Konstruktion des DEA<br />

! Wenn der NEA als Übergangsgraph vorliegt, lässt sich der korrespon<strong>die</strong>rende<br />

DEA relativ leicht konstruieren.<br />

0 0 1<br />

1<br />

q 0<br />

q 1<br />

1<br />

Die Übergangsfunktion "' für DEA konstruieren wir, <strong>in</strong>dem wir <strong>die</strong> Zustände der<br />

Übergangstabelle schrittweise nur nach Bedarf erstellen.<br />

Wir fangen mit dem Anfangszustand [q 0<br />

] an.<br />

E<strong>in</strong>gabe<br />

Zustände 0 1<br />

3: [q 1<br />

] ist neu<br />

2: [q 0<br />

, q 1<br />

] wird<br />

h<strong>in</strong>zugefügt<br />

4: [q 1<br />

] wird h<strong>in</strong>zugefügt<br />

[q 0 ]<br />

[q 0 , q 1 ]<br />

[q 0 , q 1 ] [q 0 , q 1 ] [q 0 , q 1 ]<br />

Neue Zustände werden also nur dann <strong>in</strong> <strong>die</strong> Spalte Zustände h<strong>in</strong>zugefügt, wenn sie als<br />

Resultat e<strong>in</strong>er Zustandsberechnung <strong>in</strong> der Übergangstabelle auftauchen.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 65<br />

[q 1 ]<br />

[q 1 ] ! [q 0 , q 1 ]<br />

1: [q 0<br />

, q 1<br />

] ist neu


Myhill-Verfahren (2): Aus der Übergangstabelle erzeugen<br />

wir dann den Übergangsgraph von DEA<br />

E<strong>in</strong>gabe aus !'<br />

0 1<br />

[q 0 ]<br />

[q 0 , q 1 ]<br />

[q 1 ]<br />

Zustände<br />

[q 0 , q 1 ]<br />

[q 0 , q 1 ] [q 0 , q 1 ]<br />

[q 1 ] [q 0 , q 1 ]<br />

!<br />

0<br />

0<br />

1<br />

[q 0 ] [q 1 ]<br />

1<br />

[q 0 , q 1 ]<br />

1<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 66<br />

Sprachen erzeugen <strong>in</strong>teressante Probleme<br />

! Wenn wir Sprachen durch e<strong>in</strong>e Grammatik oder durch e<strong>in</strong>en <strong>Automaten</strong><br />

spezifizieren, gibt es viele <strong>in</strong>teressante Fragen.<br />

! S<strong>in</strong>d zwei Sprachen, <strong>die</strong> wir mit verschiedenen Grammatiken<br />

spezifiziert haben, äquivalent? (Beispiel: Ist Java äquivalent mit C++?)<br />

! S<strong>in</strong>d zwei Sprachen, <strong>die</strong> von verschiedenen <strong>Automaten</strong> akzeptiert<br />

werden, äquivalent? (Beispiel: Zwei Java-Compiler auf verschiedenen<br />

Plattformen)<br />

! Ist <strong>die</strong> Sprache, <strong>die</strong> von e<strong>in</strong>em endlichen <strong>Automaten</strong> akzeptiert wird,<br />

endlich oder unendlich?<br />

! Ist <strong>die</strong> Sprache regulär oder nicht?<br />

! Wir nennen e<strong>in</strong>e Sprache regulär, wenn sie von e<strong>in</strong>em endlichen<br />

<strong>Automaten</strong> erkannt wird, oder von e<strong>in</strong>er regulären Grammatik erzeugt<br />

wird.<br />

! Im Rest <strong>die</strong>ses Vorlesungsabschnitts beschäftigen wir uns mit e<strong>in</strong>em<br />

wichtigen Werkzeug, mit dem wir zeigen können, dass bestimmte<br />

Sprachen nicht regulär s<strong>in</strong>d.<br />

=> Pump<strong>in</strong>g Lemma<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 67


Pump<strong>in</strong>g-Lemma: Vorbereitungen<br />

! Gegeben sei e<strong>in</strong> endlicher Automat A = (!, Q, ", q 0 , F) mit n Zuständen.<br />

! Als E<strong>in</strong>gabe nehmen wir e<strong>in</strong>e Zeichenkette a 1 a 2 ….a m , wobei m # n gilt. Die<br />

Zeichenkette hat also m<strong>in</strong>destens <strong>die</strong> Länge n.<br />

! Wir konstruieren jetzt e<strong>in</strong>e ganz spezielle Übergangsfunktion ":<br />

"(q 0 , a 1 a 2 ….a m ) = q i für i = 1, 2, ..., m,<br />

d.h. " ist so konstruiert, dass folgendes gilt:<br />

"(q 0 , a 1 ) = q 1<br />

"(q 0 , a 1 a 2 ) = q 2<br />

"(q 0 , a 1 a 2 a 3 ) = q 3<br />

…<br />

"(q 0 , a 1 a 2 ….a m ) = q m<br />

! Erkenntnis: Da der Automat nur n Zustände hat und m # n ist, ist es nicht möglich,<br />

dass <strong>die</strong> Zustände q 0 , q 1 , q 2 , q 3 , …, q m <strong>in</strong> der Übergangsfunktion alle verschieden<br />

s<strong>in</strong>d!<br />

! Diese Erkenntnis ist das Kernstück des Pump<strong>in</strong>g-Lemmas.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 68<br />

Pump<strong>in</strong>g-Lemma: Vorüberlegungen (2)<br />

! Schauen wir uns unsere Übergangsfunktion e<strong>in</strong>mal im Übergangsgraphen für <strong>die</strong><br />

E<strong>in</strong>gabe a 1 a 2 …a m der Länge m an:<br />

q 0<br />

a 1 a 2 ….a j<br />

a j+1 a j+2 ….a k<br />

a k+1 a k+2 ….a m<br />

q j =q k<br />

q m<br />

Da <strong>die</strong> E<strong>in</strong>gabe m " n Zeichen enthält und wir daher m<strong>in</strong>destens n+1 Zustände q 0 , …,<br />

q m durchlaufen, wir aber nur n verschiedene Zustände haben, muss es zwei Indizes j<br />

und k geben, 0 " j < k " m, für <strong>die</strong> gilt: q j = q k<br />

Das Teilwort a j+1 a j+2 ….a k hat dabei m<strong>in</strong>destens <strong>die</strong> Länge 1.<br />

Im Weiteren gehen wir davon aus, dass wir <strong>die</strong> kle<strong>in</strong>sten Indizes j, k f<strong>in</strong>den (d.h. <strong>die</strong><br />

Länge des Teilworts a 1 a 2 …a k ist kle<strong>in</strong>er gleich n).<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 69


Pump<strong>in</strong>g-Lemma: Vorüberlegungen (3)<br />

q 0<br />

a 1 a 2 ….a j<br />

a j+1 a j+2 ….a k<br />

a k+1 a k+2 ….a m<br />

q i =q k<br />

q m<br />

! Da q m e<strong>in</strong> Endzustand ist, ist a 1 a 2 …a m <strong>in</strong> L(A), d.h. <strong>in</strong> der von A akzeptierten Sprache.<br />

Es ist aber auch a 1 a 2 …a j a k+1 a k+2 …a m <strong>in</strong> L(A), also <strong>die</strong> E<strong>in</strong>gabe, <strong>die</strong> <strong>die</strong> Schleife<br />

a j+1 a j+2 ….a k beim Zustand q i =q k vermeidet.<br />

Und es ist a 1 a 2 …a j a j+1 a j+2 …a k a j+1 a j+2 …a k a k+1 a k+2 …a m <strong>in</strong> L(A), d.h. <strong>die</strong> E<strong>in</strong>gabe, <strong>die</strong><br />

zweimal über <strong>die</strong> Schleife beim Zustand q i =q k geht.<br />

Dies können wir natürlich verallgeme<strong>in</strong>ern.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 70<br />

Pump<strong>in</strong>g-Lemma: Vorüberlegungen (4)<br />

q 0<br />

a 1 a 2 ….a j<br />

a j+1 a j+2 ….a k<br />

a k+1 a k+2 ….a m<br />

q i =q k<br />

q m<br />

! Es gilt für e<strong>in</strong> beliebiges i # 0:<br />

! Wenn q m e<strong>in</strong> Endzustand ist und a 1 a 2 ….a m <strong>in</strong> L(A), dann ist auch a 1 a 2 ….a j<br />

(a j+1 a j+2 ….a k ) i a k+1 a k+2 ….a m <strong>in</strong> L(A), d.h. e<strong>in</strong>e E<strong>in</strong>gabe, <strong>die</strong> i-mal über <strong>die</strong> Schleife<br />

bei q i =q k geht.<br />

! Wir haben also folgendes:<br />

! Gegeben sei e<strong>in</strong>e lange E<strong>in</strong>gabezeichenkette E, <strong>die</strong> von e<strong>in</strong>em endlichen<br />

<strong>Automaten</strong> A akzeptiert wird<br />

! Dann können wir immer e<strong>in</strong>e Teilzeichenkette <strong>in</strong> E f<strong>in</strong>den, <strong>die</strong> wir "aufpumpen"<br />

können.<br />

! Die daraus resultierende Zeichenkette wird auch von A akzeptiert.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 71


Pump<strong>in</strong>g-Lemma für reguläre Sprachen<br />

! Lemma: Sei L(A) e<strong>in</strong>e von e<strong>in</strong>em endlichen <strong>Automaten</strong> akzeptierte Sprache, also<br />

e<strong>in</strong>e reguläre Sprache. Dann gibt es e<strong>in</strong>e Konstante n >0, mit der folgendes gilt:<br />

! Sei z e<strong>in</strong> beliebiges Wort mit der Länge |z| # n.<br />

Dann ist es möglich, z als Konkatenation von Teilwörtern u, v und w zu<br />

schreiben: z = uvw, wobei |uv| " n und |v| # 1.<br />

! Damit ist dann auch uv i w <strong>in</strong> L(A) für e<strong>in</strong> beliebiges i # 0.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 72<br />

Pump<strong>in</strong>g-Lemma für reguläre Sprachen: Beweis<br />

z = uvw <strong>in</strong> L(A) => uv i w <strong>in</strong> L(A) für e<strong>in</strong> beliebiges i # 0<br />

Beweis: Ausgangspunkt ist der Übergangsgraph aus unseren<br />

Vorüberlegungen.<br />

Wir belegen z, u, v und w e<strong>in</strong>fach wie folgt:<br />

z = a 1 a 2 ….a m<br />

u = a 1 a 2 ….a j<br />

v = a j+1 a j+2 ….a k<br />

w = a k+1 a k+2 ….a m<br />

q.e.d<br />

v=<br />

q 0<br />

a j+1 a j+2 ….a k<br />

u=a 1 a 2 ….a j<br />

w = a k+1 a k+2 ….a m<br />

q i =q k<br />

q m<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 73


Anwendungen des Pump<strong>in</strong>g-Lemmas<br />

! Wir benutzen das Pump<strong>in</strong>g-Lemma mit Vorliebe dann. wenn wir<br />

zeigen wollen, dass e<strong>in</strong>e bestimmte Sprache nicht von e<strong>in</strong>em<br />

endlichen <strong>Automaten</strong> erkannt werden kann.<br />

! Wir benutzen dabei <strong>die</strong> Beweismethode "Beweis durch Widerspruch":<br />

! Wir nehmen an, <strong>die</strong> Sprache ist regulär, d.h. von e<strong>in</strong>em endlichen<br />

<strong>Automaten</strong> erkennbar.<br />

! Dann wählen wir geschickt e<strong>in</strong>e h<strong>in</strong>reichend lange Zeichenkette z.<br />

! Wir zeigen, dass es für jede mögliche Zerlegung z = uvw e<strong>in</strong>e<br />

aufgepumpte Zeichenkette uv i w gibt, <strong>die</strong> nicht <strong>in</strong> der Sprache liegt.<br />

! Das ist e<strong>in</strong> Widerspruch zur Annahme, denn nach dem Pump<strong>in</strong>g-<br />

Lemma müssen alle aufgepumpten Zeichenketten <strong>in</strong> der Sprache<br />

liegen.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 74<br />

"Algorithmus" für das Ausführen von Beweisen mit dem<br />

Pump<strong>in</strong>g-Lemma<br />

2-Personenspiel: Kontrahent behauptet, <strong>die</strong> Sprache L ist regulär.<br />

Sie behaupten, dass <strong>die</strong> Sprache L nicht regulär ist.<br />

1) Der Kontrahent behauptet, dass L regulär ist, also muss das Pump<strong>in</strong>g-Lemma<br />

gelten.<br />

2) Sie bitten Ihren Kontrahenten, e<strong>in</strong>e beliebige endliche Zahl n auszuwählen. n ist<br />

beliebig, aber e<strong>in</strong>mal ausgewählt ist n fest.<br />

3) Sie wählen nun geschickt e<strong>in</strong>e Zeichenkette z aus L mit |z| # n.<br />

Die Wahl von z ist im allgeme<strong>in</strong>en von n abhängig.<br />

4) Sie bitten Ihren Kontrahenten, z <strong>in</strong> u, v und w aufzubrechen, wobei <strong>die</strong><br />

E<strong>in</strong>schränkungen |uv| " n und |v| # 1 aus dem Pump<strong>in</strong>g-Lemma e<strong>in</strong>zuhalten s<strong>in</strong>d.<br />

5) Dann zeigen Sie, dass für m<strong>in</strong>destens e<strong>in</strong> i <strong>die</strong> nach dem Pump<strong>in</strong>g-Lemma<br />

aufgepumpte Zeichenkette uv i w nicht <strong>in</strong> L ist.<br />

Das ist e<strong>in</strong> Widerspruch zur Annahme 1), denn es würde bedeuten, dass das<br />

Pump<strong>in</strong>g-Lemma nicht gilt.<br />

6) Wenn der Kontrahent alle möglichen Zerlegungen ausprobiert hat, haben Sie<br />

gewonnen: L kann nicht regulär se<strong>in</strong>.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 75


Beispiel für e<strong>in</strong>e nicht-reguläre Sprache<br />

! Gegeben sei <strong>die</strong> Sprache L = { a k b k | k > 0 }<br />

! Beispiel für L: a =( und b = ). Dann gilt unter anderem<br />

! In L: (), (()), ((())), (((())))<br />

! Nicht <strong>in</strong> L: (, ), ((, ())), (()(, ))((<br />

! Kontrahent behauptet, L ist regulär. Sie behaupten, L ist nicht regulär. Kontrahent<br />

wählt n = 4. Sie wählen <strong>die</strong> Zeichenkette z = (((()))) % L<br />

! Kontrahent hat jetzt pr<strong>in</strong>zipiell drei Möglichkeiten, z <strong>in</strong> u, v und w aufzubrechen:<br />

u v w<br />

1. Er wählt v weit l<strong>in</strong>ks <strong>in</strong> z = (((()))), so dass es nur öffnende Klammern, z.B.<br />

((, besitzt: Dann hat uv 2 w = (((((())))zwar genau so viele schließende<br />

Klammern wie z, aber m<strong>in</strong>destens e<strong>in</strong>e öffnende Klammer mehr & uv 2 w liegt<br />

nicht <strong>in</strong> L.<br />

2. Er wählt v weit rechts <strong>in</strong> z, so dass es nur schließende Klammern besitzt:<br />

Dann hat uv 2 w zwar genau so viele öffnende Klammern wie z, aber m<strong>in</strong>destens<br />

e<strong>in</strong>e schließende Klammer mehr & uv 2 w liegt nicht <strong>in</strong> L.<br />

3. Er wählt v <strong>in</strong> der Mitte von z, so dass es aus öffnenden und schließenden<br />

Klammern besteht: Dann liegt <strong>in</strong> uv 2 w m<strong>in</strong>destens e<strong>in</strong>e öffnende Klammer h<strong>in</strong>ter<br />

e<strong>in</strong>er schließenden Klammer ...(...( )...) (...( )...)... & uv 2 w liegt<br />

nicht <strong>in</strong> L.<br />

! Wegen des Pump<strong>in</strong>g-Lemmas muss uv 2 w aber <strong>in</strong> L liegen.<br />

Widerspruch für jede Zerlegung! & L kann nicht regulär se<strong>in</strong>. q.e.d.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 76<br />

Alternativer Beweis<br />

! Gegeben sei <strong>die</strong> Sprache L = { a k b k | k > 0 }<br />

! Beispiel für L: a =( und b = ). Dann gilt unter anderem<br />

! In L: (), (()), ((())), (((())))<br />

! Nicht <strong>in</strong> L: (, ), ((, ())), (()(, ))((<br />

! Kontrahent behauptet, L ist regulär. Sie behaupten, L ist nicht regulär. Kontrahent<br />

wählt n = 4. Sie wählen <strong>die</strong> Zeichenkette z = (((()))) % L<br />

! Wegen der Bed<strong>in</strong>gung |uv| " n aus dem Pump<strong>in</strong>g-Lemma kann der Kontrahent z nur<br />

so <strong>in</strong> u, v und w aufbrechen, dass v nur aus öffnenden Klammern (...( besteht.<br />

Dann hat uv 2 w zwar genau so viele schließende Klammern wie z, aber m<strong>in</strong>destens<br />

e<strong>in</strong>e öffnende Klammer mehr als z & uv 2 w liegt nicht <strong>in</strong> L.<br />

! Wegen des Pump<strong>in</strong>g-Lemmas muss uv 2 w aber <strong>in</strong> L liegen.<br />

Widerspruch für jede Zerlegung! & L kann nicht regulär se<strong>in</strong>. q.e.d.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 77


Es gibt e<strong>in</strong>e Grammatik für L = { a k b k | k > 0}<br />

! Die Chomsky-Grammatik G = (T, N, P, Z) mit<br />

N = {Z},<br />

T = {a, b} und<br />

P = { Z$ aZb,<br />

Z$ ab}<br />

erkennt <strong>die</strong> Sprache L = { a k b k | k > 0 }<br />

! Beispiel e<strong>in</strong>er Ableitung:<br />

Z & aZb & aaZbb & a 3 Zb 3 & ....& a k-1 Zb k-1 & a k b k<br />

! G ist nicht regulär, denn <strong>die</strong> Produktion Z$ aZb ist weder l<strong>in</strong>ksl<strong>in</strong>ear noch<br />

rechtsl<strong>in</strong>ear.<br />

! Man bezeichnet solche Produktion als kontextfrei.<br />

! E<strong>in</strong>e Grammatik, <strong>die</strong> kontextfreie Produktionen enthält, bezeichnet man als Chomsky-<br />

2 oder kontextfreie Grammatik<br />

=> mehr über Grammatiken <strong>in</strong> Info IV<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 78<br />

Zusammenfassung<br />

! Für jede Sprache, <strong>die</strong> von e<strong>in</strong>em nichtdeterm<strong>in</strong>istischen endlichen<br />

<strong>Automaten</strong> akzeptiert wird, gibt es e<strong>in</strong>en äquivalenten<br />

determ<strong>in</strong>istischen endlichen <strong>Automaten</strong>.<br />

! Wir brauchen daher zwischen determ<strong>in</strong>istischen und nichtdeterm<strong>in</strong>istischen<br />

endlichen <strong>Automaten</strong> nicht zu unterscheiden und<br />

sprechen deshalb nur von endlichen <strong>Automaten</strong>.<br />

! Das Pump<strong>in</strong>g-Lemma ist e<strong>in</strong> wichtiges Werkzeug, wenn man zeigen<br />

möchte, dass e<strong>in</strong>e bestimmte Sprache nicht regulär ist, also von<br />

e<strong>in</strong>em endlichen <strong>Automaten</strong> nicht erkannt werden kann.<br />

Copyright 2004 Bernd Brügge E<strong>in</strong>führung <strong>in</strong> <strong>die</strong> <strong>Informatik</strong> <strong>II</strong> TUM Sommersemester 2004 79

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!