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 ...
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