Kapitel 2: Formale Sprachen Gliederung 0. Einleitung und Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie
2.1. Chomsky-Grammatiken 2.2. Reguläre Sprachen • Reguläre Grammatiken, ND-Automaten • Abgeschlossenheit • Reguläre Ausdrücke 2.3. Kontextfreie Sprachen
2/4, Folie 1
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Reguläre Ausdrücke ( in der Theoretischen Informatik ) •
Es sei Σ das zugrunde liegende Alphabet.
Einfache reguläre Ausdrücke: • • •
Das Zeichen ∅ ist ein regulärer Ausdruck. [ Das Zeichen ε ist ein regulärer Ausdruck. ]1 Jedes Zeichen a ∈ Σ ist ein regulärer Ausdruck. 1) beliebt, aber durch (∅)* ersetzbar.
Operatoren zum Bilden komplexerer regulärer Ausdrücke: Es seien α und β reguläre Ausdrücke. Dann ist … • • •
die Zeichenkette (αβ) ein regulärer Ausdruck ( Verkettung ), die Zeichenkette (α+β) ein regulärer Ausdruck2 ( Auswahl ), die Zeichenkette α* ein regulärer Ausdruck3 ( Kleene-Hülle ). 2)
2/4, Folie 2
oft auch (α|β).
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Reguläre Ausdrücke ( in der Praxis ) … werden oft abgespeckt: • • •
äußerste Klammern weglassen, z.B. (α+β)*β für ((α+β)*β) n-fache simultane Verkettungen, z.B. β*α*β für β*(α*β) Priorität: * vor Verkettung, z.B. αβ* für „α(β*)“
... kommen vor zur Definition von „Mustern“ in: • • • • • •
2/4, Folie 3
Unix Java PHP Perl Python ...
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Beispiele für reguläre Ausdrücke •
Es sei Σ = { 0,1 } das zugrunde liegende Alphabet.
Beispiele (mit induktivem Aufbau): ((01)0) 0
(01) 0
( ) ( )
2/4, Folie 4
1
((0+1)*(010)*)*
(0(10)) 0
((0+1)*(010)*)
(10) 1
0
entbehrliche äußerste Klammern entbehrliche Verkettungsklammern
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
(0+1)*
(010)*
(0+1)
010
0
h _da/FbI
1
-
vgl. links
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Einschub: Operationen über Sprachen (/* später wichtig */) •
Es seien Σ das zugrunde liegende Alphabet und L1, L2 ⊆ Σ* . Dann definieren wir: (L1L2) = { uv | u ∈ L1, v ∈ L2 }
( Verkettung von L1 und L2 )
L1* = { ε } ∪ { u1...uk | k ≥ 1, u1 ∈ L1,..., uk ∈ L1 } ( Kleene-Hülle von L1 ) Klammereinsparung wie bei regulären Ausdrücken möglich.
2/4, Folie 5
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Durch reguläre Ausdrücke beschriebene Sprachen • •
Es sei Σ das zugrunde liegende Alphabet. Zu jedem regulären Ausdruck γ bezeichnet L(γ) die von γ beschriebene Sprache.
Einfache reguläre Ausdrücke ( a ∈ Σ ): • • ( •
L(∅) L(a) L(ε)
= ∅ = {a} = {ε} )
Komplexere regulärer Ausdrücke ( α, β reg. Ausdr. ): • • • 2/4, Folie 6
L( (αβ) ) = L(α)L(β) L( (α+β) ) = L(α) ∪ L(β) L( α* ) = L(α)*
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
( Verkettung ) ( Auswahl ) ( Hülle )
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Beispiele für die durch reguläre Ausdrücke beschriebenen Sprachen •
Es sei Σ = { 0,1 } das zugrunde liegende Alphabet.
•
α = 010 ⇒ L(α) = { 010 }
•
β = (0+1)*1 ⇒ L(β) = { w1 | w ∈ Σ* }
•
γ = ((00)*(11)*)* ⇒ L(γ) = { ε } ∪ { u1...uk | k ≥ 1, u1,..., uk ∈ { 00,11 } }
... denn es gilt für γ ′ = ((00+11))* : L(γ ′) = L(γ ) .
2/4, Folie 7
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Zwischenbilanz • •
•
Reguläre Ausdrücke sind ein in der Praxis weit verbreitetes Mittel, um formale Sprachen zu beschreiben. Reguläre Ausdrücke lassen sich oft „einfacher“ notieren als Grammatiken ( ein wenig Übung vorausgesetzt ... ). Noch zu klären bleibt ... • •
2/4, Folie 8
welche formalen Sprachen sich mit Hilfe von regulären Ausdrücken beschreiben lassen; ob man das Wortproblem für diese Sprachen lösen kann und, wenn ja, wie effizient das möglich ist.
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
zentrales Resultat ( die Antwort auf beide Fragen ) Es seien Σ ein endliches Alphabet und L ⊆ Σ*. Dann sind die folgenden Aussagen äquivalent: 1. 2.
L ist eine reguläre Sprache. Es gibt einen regulären Ausdruck α mit L(α) = L.
Es handelt sich wieder um zwei Implikationen.
2/4, Folie 9
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation reg. Ausdruck
2/4, Folie 10
reg. Sprache (Überblick)
•
Das ist der einfachere Teil, da wir beim Beweis davon Gebrauch machen können, dass die Menge der regulären Ausdrücke induktiv definiert ist.
•
Grundidee: •
Wir zeigen, dass jede durch einen einfachen regulären Ausdruck α definiert Sprache L(α) regulär ist ( trivial, wie wir gleich sehen ).
•
Beim Nachweis, dass die durch einen komplexeren regulären Ausdruck γ = αβ, γ = (α+β) bzw. γ = (α)* definierte Sprache L(γ) regulär ist, benutzen wir dann, dass L(α) und L(β) regulär sind.
•
Es würde genügen, wenn für beliebige reguläre Sprachen L1 und L2 die Sprachen L = L1L2, L = L1∪ L2 und L = L1* regulär wären. Da wir die Abgeschlossenheit gegenüber Vereinigung bereits gezeigt haben, ist diese letzlich nur noch gegenüber Verkettung und Hüllenoperation zu zeigen.
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
... für (einfache) reguläre Ausdrücke •
2/4, Folie 11
nichtdeterministischer endlicher Automat für …
•
ε:
z0
•
∅:
z0
•
a mit a ∈ Σ:
z0
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
a
z1
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Verkettung − am Beispiel •
Es seien Σ = { 0,1 } ,
•
L1 = { 1°w | w ∈ Σ* }, die Wörter mit Präfix 1, und
•
L2 = { w°0 | w ∈ Σ* } , die Wörter mit Präfix 0.
Frage:
2/4, Folie 12
Ist die Sprache L1L2 auch regulär? ( L1L2 enthält alle Wörter aus Σ*, die das Präfix 1 und das Suffix 0 haben. )
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Verkettung − am Beispiel nichtdet. endl. Automat B mit L(B) = L1L2
A1 mit L(A1) = L1 1,0 a0
1
a1
1,0
1,0
a2
0
Was geschieht hier?
1 0
1
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
1 b0
b1 0
2/4, Folie 13
a2
1
A2 mit L(A2) = L2
b0
a1
1,0
0
1
1
a0
1,0
0
b1 0
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Verkettung − am Beispiel nichtdet. endl. Automat B mit L(B) = L1L2
A1 mit L(A1) = L1 1,0 a0
1
a1
1,0
1,0
a2
1 0
b1 0
2/4, Folie 14
a2
0 1
A2 mit L(A2) = L2
b0
a1
1,0
0
1
1
a0
1,0
In A1 wird nicht mehr akzeptiert, in A2 nicht mehr gestartet. Was in A1 zum Akzeptieren führte, führt nun auch zum ehemaligen Start von A2.
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
1
1 b0
0
b1 0
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Exkurs: Elegante Alternative nichtdet. endl. Automat B mit L(B) = L1L2
A1 mit L(A1) = L1 1,0 a0
1
a1
1,0
1,0
a2
1
a0
0
0
b0
b1
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
1
1
0
2/4, Folie 15
a2
0
sog. ε-Automat, macht evtl. spontane Übergänge, ohne ein Zeichen zu verarbeiten
1 b0
a1
ε
A2 mit L(A2) = L2 1
1,0
0
b1 0
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Exkurs: Reguläre Ausdrücke
Beweisidee für die Operation Verkettung • • •
Sei A1 = [Z,Σ,z0,F1,δ1] ein (deterministischer) endlicher Automat für L1 Sei A2 = [Q,Σ,q0,F2,δ2] ein (deterministischer) endlicher Automat für L2 Es gelte Z ∩ Q = ∅.
•
Definiere den nichtdeterministischen endlichen Automaten A‘ = [Z‘,Σ,z‘0,F‘,∆‘] wie folgt: • • • •
Z‘ = Z ∪ Q z‘0 = z0 F‘ = F2 ∆‘ = ∆‘1 ∪ ∆‘2 ∪ ∆‘3 mit: • • •
•
2/4, Folie 16
∆‘1 = { (z,a,δ1(z,a)) | z ∈ Z und a ∈ Σ } ∆‘2 = { (q,a,δ2(q,a)) | q ∈ Q und a ∈ Σ } ∆‘3 = { (z,a,q0) | z ∈ Z, a ∈ Σ und δ1(z,a) ∈ F2 }
Man kann sich nun leicht überlegen, dass L(A‘) = L(A1) °L(A2) gilt.
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Kleenesche Hülle − am Beispiel • • •
Es sei Σ = { 0,1 } . Es sei L = { 12n-1°0 | n ≥ 1 }, die Wörter aus ungerade vielen Einsen plus einer Null am Ende. Ein Automat für L
Für L* würde man gerne 1
•
•
2/4, Folie 17
evtl. gleich am Start ε akzeptieren (aber nicht im z0 rechts),
z1
0
z2
0
evtl. vom akzeptierenden z2 aus sofort wieder bei z0 beginnen.
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
1
z0
0,1
z4 1,0
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Kleenesche Hülle − am Beispiel • • •
Es sei Σ = { 0,1 } . Es sei L = { 12n-1°0 | n ≥ 1 }, die Wörter aus ungerade vielen Einsen plus einer Null am Ende. Ein ε-Automat für L*
ε Jetzt würde man gerne •das gleiche ohne ε-Übergänge erreichen, wozu man
1 z‘0
ε
1
z0
z1
0
z2
0
•Die ε-Übergänge evtl. „überspringt“.
0,1
z4 1,0
2/4, Folie 18
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Kleenesche Hülle − vom Beispiel zur Konstruktionsvorschrift • • •
Es sei Σ = { 0,1 } . Es sei L = { 12n-1°0 | n ≥ 1 }, die Wörter aus ungerade vielen Einsen plus einer Null am Ende. Ein ND-Automat für L* 0
Rezept Vom endlichen Automaten A = [Z,Σ,z0,F,δ] zum NDA A‘ = [Z‘,Σ,z‘0,F‘, ∆‘] mit L(A‘)=L(A)* Z′ := Z ∪ { z′0 } neuer Startzustand := z′0 F′ := F ∪ { z′0 } ∆′ := ∆′1 ∪ ∆′2 ∪ ∆′3 mit: ∆′1 = { (z,a,δ(z,a)) | z ∈ Z und a∈Σ } ∆′2 = { (z′0,a,δ(z0,a)) | a ∈ Σ } ∆′3 = { (z,a,z′0) | z ∈ Z, a ∈ Σ und δ(z,a) ∈ F } 2/4, Folie 19
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
1 1
z0
z‘0 1 0
z1
0
z2
0 0,1
z4 1,0
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation reg. Sprache
reg. Ausdruck
•
Das ist der kompliziertere Teil …
•
… wenn man nicht bereits aus der Graphentheorie das ZwischenknotenLemma für Wege kennt.
•
Trotzdem bleibt die manuelle algorithmische Umsetzung i.a. langwierig. Es sei A eine endlicher Automat für eine reguläre Sprache L . Wir werden zeigen, dass man die Menge der akzeptierten Wörter, die also Pfade vom Anfangszustand zu einem akzeptierenden Zustand markieren, mit Hilfe von regulären Ausdrücken beschreiben kann.
2/4, Folie 20
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation reg. Sprache
reg. Ausdruck ( Hilfsbegriff )
•
Es sei Σ das zugrunde liegende Alphabet.
•
Es sei A ein endlicher Automat mit der Zustandsmenge Z = { 1,...,n }, dem Anfangszustand 1 und der Zustandsüberführungsfunktion δ(.,.).
•
Es seien i,j,k mit 1 ≤ i,j ≤ n und 0 ≤ k ≤ n R i,j,k = { w ∈ Σ* | δ*(i,w) = j und bei der Verarbeitung von w wird kein „Zwischenzustand“ > k besucht }
... d.h. es gibt in A einen mit w markierten Weg vom Zustand i zum Zustand j, in dem nur die „Zwischenzustände“ 1,...,k vorkommen … also im Falle von k=0: gar keiner
2/4, Folie 21
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( warum der Hilfsbegriff sinnvoll ist ) • •
Es sei Σ das zugrunde liegende Alphabet. Es sei A ein endlicher Automat mit der Zustandsmenge Z = { 1,...,n }, dem Anfangszustand 1 und der Zustandsüberführungsfunktion δ(.,.) und F ⊆ Z als Menge der akzeptierenden Zustände von A.
Beobachtung 1: Es gilt: L(A) =
∪ j∈F
R1,j,n .
Beobachtung 2: Falls es für jede Menge R1,j,n auf der rechten Seite einen regulären Ausdruck α′ mit L(α′) = R1,j,n gibt, so gibt es auch einen regulären Ausdruck α mit L(α) = L(A).
2/4, Folie 22
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( warum der Hilfsbegriff sinnvoll ist ) •
Es seien i,j,k mit 1 ≤ i,j ≤ n und 0 ≤ k ≤ n-1 .
Beobachtung 3: Es gilt Ri,j,k+1 = Ri,j,k ∪ Ri,k+1,k (Rk+1,k+1,k)* Rk+1,j,k
Wie beim Zwischenknoten-Lemma ist ein „Wort von i nach j“ mit Zwischenzuständen ≤ k+1 entweder • •
2/4, Folie 23
ein „Wort von i nach j“ mit „Zwischenzuständen“ ≤ k oder zerlegbar in a) ein „Wort von i nach k+1“ mit „Zwischenzuständen“ ≤ k, b) eine (eventuell leere) Folge von „Worten von k+1 nach k+1“ mit „Zwischenzuständen“ ≤ k und c) ein „Wort von k+1 nach j“ mit „Zwischenzuständen“ ≤ k .
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( warum der Hilfsbegriff sinnvoll ist ) •
Es seien i,j,k mit 1 ≤ i,j ≤ n und 0 ≤ k ≤ n-1 .
Beobachtung 3: Es gilt Ri,j,k+1 = Ri,j,k ∪ Ri,k+1,k (Rk+1,k+1,k)* Rk+1,j,k Beobachtung 4: Falls es für jede Menge R′ auf der rechten Seite einen regulären Ausdruck α′ mit L(α′) = R′ gibt, so gibt es auch einen regulären Ausdruck α mit L(α) = Ri,j,k+1. Beobachtung 5: Wiederholte Anwendung auf die rechten Seiten („Auflösung“) führt zu elementaren regulären Ausdrücken. 2/4, Folie 24
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( Beispiel für Auflösung ) • •
Es sei Σ = { a,b } . Es sei L3 = L(A3)
L(A) = R1,2,3 = R1,2,2 ∪ R1,3,2 (R3,3,2 )*R3,2,2 = R1,2,2 ( da R3,2,2 = ∅ ! )
A3 b 1
a
a
2 b
a,b
b 3
2/4, Folie 25
R1,2,2 = R1,2,1 ∪ R1,2,1 (R2,2,1 )*R2,2,1
R1,2,1 = R1,2,0 ∪ R1,1,0 (R1,1,0 )*R1,2,0 R2,2,1 = R2,2,0 ∪ R2,1,0 (R1,1,0 )*R1,2,0
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( Beispiel für Auflösung ) • •
Es sei Σ = { a,b } . Es sei L3 = L(A3)
R1,1,0 = { ε }
R1,2,0 = { a }
R2,1,0 = { b }
R2,2,0 = { ε,a }
A3 b 1
a
a
2 b
a,b
b
R1,2,1 = R1,2,0 ∪ R1,1,0 (R1,1,0 )*R1,2,0 = { a } ∪ { ε } ({ ε })* { a } = { a } R2,2,1 = R2,2,0 ∪ R2,1,0 (R1,1,0 )*R1,2,0 = { ε,a } ∪ { b } ({ ε })* {a } = { ε,a,ba }
3
L(A) = R1,2,2 = R1,2,1 ∪ R1,2,1 (R2,2,1 )*R2,2,1 = { a } ∪ { a }({ ε,a,ba })*{ ε,a,ba } 2/4, Folie 26
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik
Kapitel 2: Formale Sprachen Reguläre Ausdrücke
Implikation a) ( Beispiel für Auflösung, Vereinfachen, Umwandeln ) • •
Es sei Σ = { a,b } . Es sei L3 = L(A3)
A3 b 1
a
a
a,b
b 3
2/4, Folie 27
Es gilt L(α) = L(A) für α = a ((a + ba))* .
2 b
L(A) = R1,2,2 = R1,2,1 ∪ R1,2,1 (R2,2,1 )*R2,2,1 = { a } ∪ { a }({ ε,a,ba })*{ ε,a,ba } = { a } ({ a,ba })*
Beobachtung 6: Ohne die Abkürzungen und Vereinfachungen zwischendurch ... • Wie viele Folien mehr hätten wir gebraucht? • Wie lange wäre der reg. Ausdruck geworden?
© 2015 Prof. Steffen Lange, Dr. Bernd Baumgarten
-
h _da/FbI
-
Theoretische Informatik