Kapitel 2: Formale Sprachen Gliederung

Kapitel 2: Formale Sprachen Gliederung 0. Einleitung und Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitäts...
Author: Bertold Flater
9 downloads 1 Views 215KB Size
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