• Keine Ergebnisse gefunden

Sommersemester2007 BernhardBeckert GrundlagenderTheoretischenInformatik/EinführungindieTheoretischeInformatikI Vorlesung

N/A
N/A
Protected

Academic year: 2021

Aktie "Sommersemester2007 BernhardBeckert GrundlagenderTheoretischenInformatik/EinführungindieTheoretischeInformatikI Vorlesung"

Copied!
59
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Bernhard Beckert

Institut für Informatik

Sommersemester 2007

(2)

Diese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen von

Katrin Erk (gehalten an der Universität Koblenz-Landau) Jürgen Dix (gehalten an der TU Clausthal)

Ihnen beiden gilt mein herzlicher Dank.

– Bernhard Beckert, April 2007

(3)

Lemma 5.15 (PDAcf-Grammatik)

Zu jedem Push-Down-Automaten M gibt es eine kontextfreie Grammatik G mit L ( G ) = L ( M )

Beweis

Sei M ein PDA, der eine Sprache L über leeren Keller akzeptiert.

Wir konstruieren aus dem Regelsatz von M eine kontextfreie Grammatik,

die L erzeugt.

(4)

Lemma 5.15 (PDAcf-Grammatik)

Zu jedem Push-Down-Automaten M gibt es eine kontextfreie Grammatik G mit L ( G ) = L ( M )

Beweis

Sei M ein PDA, der eine Sprache L über leeren Keller akzeptiert.

Wir konstruieren aus dem Regelsatz von M eine kontextfreie Grammatik,

die L erzeugt.

(5)

Beweis (Forts.) Idee:

Die Variablen der Grammatik sind 3-Tupel der Form [ q , A , p ]

Bedeutung:

Grammatik kann Wort x aus Variablen [ q , A , p ] ableiten gdw

M kann vom Zustand q in den Zustand p übergehen,

dabei A vom Keller entfernen (sonst den Keller unveränder lassen) und das Wort x lesen:

[ q , A , p ] = ⇒ x

gdw ( q , x , A γ) ` ( p ,ε,γ)

(6)

Beweis (Forts.) Idee:

Die Variablen der Grammatik sind 3-Tupel der Form [ q , A , p ]

Bedeutung:

Grammatik kann Wort x aus Variablen [ q , A , p ] ableiten gdw

M kann vom Zustand q in den Zustand p übergehen,

dabei A vom Keller entfernen (sonst den Keller unveränder lassen) und das Wort x lesen:

[ q , A , p ] = ⇒ x

gdw ( q , x , A γ) ` ( p ,ε,γ)

(7)

Beweis (Forts.) Idee:

Die Variablen der Grammatik sind 3-Tupel der Form [ q , A , p ]

Bedeutung:

Grammatik kann Wort x aus Variablen [ q , A , p ] ableiten gdw

M kann vom Zustand q in den Zustand p übergehen,

dabei A vom Keller entfernen (sonst den Keller unveränder lassen) und das Wort x lesen:

[ q , A , p ] = ⇒ x

gdw ( q , x , A γ) ` ( p ,ε,γ)

(8)

Beweis (Forts.) Formale Konstruktion:

Sei

M = ( K ,Σ,Γ, ∆, s 0 , Z 0 , F ) ein PDA.

Daraus konstruiert man die Grammatik

G = ( V , T , R , S ) mit

V := {[ q , A , p ] | q , p ∈ K , A ∈ Γ} ∪ { S } T := Σ

und . . .

(9)

. . . folgenden Regeln in R:

S → [ s

0

, Z

0

, q ] für alle q ∈ K ,

[ q , A , q

m

+ 1 ] → a [ q 1 , B 1 , q 2 ][ q 2 , B 2 , q 3 ] . . . [ q

m

, B

m

, q

m

+ 1 ] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 , B 1 . . . B

m

) und für jede beliebige Kombination q 2 , . . . , q

m

+ 1 ∈ K , [ q , A , q 1 ] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 ,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

(10)

Beweis (Forts.)

. . . folgenden Regeln in R:

S → [ s 0 , Z 0 , q ] für alle q ∈ K ,

[ q , A , q

m

+

1

] → a [ q

1

, B

1

, q

2

][ q

2

, B

2

, q

3

] . . . [ q

m

, B

m

, q

m

+

1

] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q

1

, B

1

. . . B

m

) und für jede beliebige Kombination q

2

, . . . , q

m

+

1

∈ K , [ q , A , q 1 ] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 ,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

woraus sofort L ` (M) = L ( G ) folgt.

(11)

. . . folgenden Regeln in R:

S → [ s 0 , Z 0 , q ] für alle q ∈ K ,

[ q , A , q

m

+ 1 ] → a [ q 1 , B 1 , q 2 ][ q 2 , B 2 , q 3 ] . . . [ q

m

, B

m

, q

m

+ 1 ] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 , B 1 . . . B

m

) und für jede beliebige Kombination q 2 , . . . , q

m

+ 1 ∈ K , [ q , A , q

1

] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q

1

,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

(12)

Beweis (Forts.)

. . . folgenden Regeln in R:

S → [ s 0 , Z 0 , q ] für alle q ∈ K ,

[ q , A , q

m

+ 1 ] → a [ q 1 , B 1 , q 2 ][ q 2 , B 2 , q 3 ] . . . [ q

m

, B

m

, q

m

+ 1 ] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 , B 1 . . . B

m

) und für jede beliebige Kombination q 2 , . . . , q

m

+ 1 ∈ K , [ q , A , q 1 ] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 ,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

woraus sofort L ` (M) = L ( G ) folgt.

(13)

. . . folgenden Regeln in R:

S → [ s 0 , Z 0 , q ] für alle q ∈ K ,

[ q , A , q

m

+ 1 ] → a [ q 1 , B 1 , q 2 ][ q 2 , B 2 , q 3 ] . . . [ q

m

, B

m

, q

m

+ 1 ] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 , B 1 . . . B

m

) und für jede beliebige Kombination q 2 , . . . , q

m

+ 1 ∈ K , [ q , A , q 1 ] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 ,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

(14)

Beweis (Forts.)

. . . folgenden Regeln in R:

S → [ s 0 , Z 0 , q ] für alle q ∈ K ,

[ q , A , q

m

+ 1 ] → a [ q 1 , B 1 , q 2 ][ q 2 , B 2 , q 3 ] . . . [ q

m

, B

m

, q

m

+ 1 ] für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 , B 1 . . . B

m

) und für jede beliebige Kombination q 2 , . . . , q

m

+ 1 ∈ K , [ q , A , q 1 ] → a

für jeden ∆ -Übergang ( q , a , A ) ∆ ( q 1 ,ε) Dabei ist a ∈ Σ ∪ {ε} .

Siehe Buch für Beweis, dass die Konstruktion das gewünschte Ergebnis liefert:

[ q , A , p ] = ⇒ x

gdw ( q , x , A ) ` ( p ,ε,ε)

woraus sofort L ` (M) = L ( G ) folgt.

(15)

Beispiel 5.16 Sprache:

L

ab

= { a

n

b

n

| n ∈ N 0 } L

ab

wird über leeren Keller akzeptiert von dem PDA

M = ({ s 0 , s 1 },{ a , b },{ Z 0 , A }, s 0 , Z 0 , 0) / mit den Regeln

1 . ( s 0 , ε, Z 0 ) ∆ ( s 0 ,ε)

2 . ( s 0 , a , Z 0 ) ∆ ( s 0 , A )

3 . ( s 0 , a , A ) ∆ ( s 0 , AA )

4 . ( s 0 , b , A ) ∆ ( s 1 ,ε)

5 . ( s 1 , b , A ) ∆ ( s 1 ,ε)

(16)

Beispiel 5.16 Sprache:

L

ab

= { a

n

b

n

| n ∈ N 0 } L

ab

wird über leeren Keller akzeptiert von dem PDA

M = ({ s 0 , s 1 },{ a , b },{ Z 0 , A }, s 0 , Z 0 , 0) / mit den Regeln

1 . ( s 0 , ε, Z 0 ) ∆ ( s 0 ,ε)

2 . ( s 0 , a , Z 0 ) ∆ ( s 0 , A )

3 . ( s 0 , a , A ) ∆ ( s 0 , AA )

4 . ( s 0 , b , A ) ∆ ( s 1 ,ε)

5 . ( s 1 , b , A ) ∆ ( s 1 ,ε)

(17)

Beispiel 5.16 Sprache:

L

ab

= { a

n

b

n

| n ∈ N 0 } L

ab

wird über leeren Keller akzeptiert von dem PDA

M = ({ s 0 , s 1 },{ a , b },{ Z 0 , A }, s 0 , Z 0 , 0) / mit den Regeln

1 . ( s 0 , ε, Z 0 ) ∆ ( s 0 ,ε)

2 . ( s 0 , a , Z 0 ) ∆ ( s 0 , A )

3 . ( s 0 , a , A ) ∆ ( s 0 , AA )

4 . ( s 0 , b , A ) ∆ ( s 1 ,ε)

5 . ( s 1 , b , A ) ∆ ( s 1 ,ε)

(18)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(19)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(20)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(21)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(22)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(23)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(24)

Beispiel (Forts.)

Die Transformation ergibt folgende Grammatik-Regeln:

S → [ s 0 , Z 0 , s 0 ] | [ s 0 , Z 0 , s 1 ] 1. [ s 0 , Z 0 , s 0 ] → ε

2. [ s 0 , Z 0 , s 0 ] → a [ s 0 , A , s 0 ] [ s 0 , Z 0 , s 1 ] → a [ s 0 , A , s 1 ]

3. [ s 0 , A , s 0 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 0 ] [ s 0 , A , s 0 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 0 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 0 ][ s 0 , A , s 1 ] [ s 0 , A , s 1 ] → a [ s 0 , A , s 1 ][ s 1 , A , s 1 ] 4. [ s 0 , A , s 1 ] → b

5. [ s 1 , A , s 1 ] → b

(25)

Beispiel (Forts.)

Lesbarer haben wir damit folgende Grammatik:

S → A | B A → aC | ε B → aD

C → aCC | aDE D → aCD | aDF | b F → b

Man sieht jetzt:

Variable E ist nutzlos, und damit auch die Variable C.

Die Grammatik enthält Kettenproduktionen und nullbare Variablen.

(26)

Beispiel (Forts.)

Lesbarer haben wir damit folgende Grammatik:

S → A | B A → aC | ε B → aD

C → aCC | aDE D → aCD | aDF | b F → b

Man sieht jetzt:

Variable E ist nutzlos, und damit auch die Variable C.

Die Grammatik enthält Kettenproduktionen und nullbare Variablen.

(27)

Beispiel (Forts.)

Lesbarer haben wir damit folgende Grammatik:

S → A | B A → aC | ε B → aD

C → aCC | aDE D → aCD | aDF | b F → b

Man sieht jetzt:

Variable E ist nutzlos, und damit auch die Variable C.

Die Grammatik enthält Kettenproduktionen und nullbare Variablen.

(28)

Beispiel (Forts.)

Nach Entfernung der überflüssigen Elemente:

S → ε | aD D → aDF | b F → b

Mit dieser Grammatik kann man z.B. folgende Ableitung ausführen:

S = ⇒ aD = ⇒ aaDF = ⇒ aaaDFF = ⇒ aaabFF

= ⇒ aaabbF = ⇒ aaabbb

(29)

Beispiel (Forts.)

Nach Entfernung der überflüssigen Elemente:

S → ε | aD D → aDF | b F → b

Mit dieser Grammatik kann man z.B. folgende Ableitung ausführen:

S = ⇒ aD = ⇒ aaDF = ⇒ aaaDFF = ⇒ aaabFF

= ⇒ aaabbF = ⇒ aaabbb

(30)

Beispiel (Forts.)

Nach Entfernung der überflüssigen Elemente:

S → ε | aD D → aDF | b F → b

Mit dieser Grammatik kann man z.B. folgende Ableitung ausführen:

S = ⇒ aD = ⇒ aaDF = ⇒ aaaDFF = ⇒ aaabFF

= ⇒ aaabbF = ⇒ aaabbb

(31)

1

Ableitungsbäume

2

Umformung von Grammatiken

3

Normalformen

4

Pumping-Lemma für kontextfreie Sprachen

5

Pushdown-Automaten (PDAs)

6

Abschlusseigenschaften

7

Wortprobleme

8

Der CYK-Algorithmus

(32)

1

Ableitungsbäume

2

Umformung von Grammatiken

3

Normalformen

4

Pumping-Lemma für kontextfreie Sprachen

5

Pushdown-Automaten (PDAs)

6

Abschlusseigenschaften

7

Wortprobleme

8

Der CYK-Algorithmus

(33)

Theorem 6.1 (Abschlusseigenschaften von L

2

) L 2 ist abgeschlossen gegen:

Vereinigung ∪ Konkatenation ◦ Kleene-Stern

Beweis Seien

G

i

= ( V

i

, T

i

, R

i

, S

i

) ( i ∈ { 1 , 2 })

zwei cf-Grammatiken mit V

1

∩ V

2

= 0 / . Sei

L

i

= L ( G

i

)

(34)

Theorem 6.1 (Abschlusseigenschaften von L

2

) L 2 ist abgeschlossen gegen:

Vereinigung ∪ Konkatenation ◦ Kleene-Stern

Beweis Seien

G

i

= ( V

i

, T

i

, R

i

, S

i

) ( i ∈ { 1 , 2 }) zwei cf-Grammatiken mit V 1 ∩ V 2 = 0 / .

Sei

L

i

= L ( G

i

)

(35)

Theorem 6.1 (Abschlusseigenschaften von L

2

) L 2 ist abgeschlossen gegen:

Vereinigung ∪ Konkatenation ◦ Kleene-Stern

Beweis Seien

G

i

= ( V

i

, T

i

, R

i

, S

i

) ( i ∈ { 1 , 2 }) zwei cf-Grammatiken mit V 1 ∩ V 2 = 0 / .

Sei

L

i

= L ( G

i

)

(36)

Beweis (Forts.) zu:

( V

1

∪ V

2

∪ { S

neu

}, T

1

∪ T

2

, R

1

∪ R

2

∪ { S

neu

→ S

1

| S

2

}, S

neu

)

erzeugt gerade L

1

∪ L

2

zu:

( V 1 ∪ V 2 ∪ { S

neu

}, T 1 ∪ T 2 , R 1 ∪ R 2 ∪ { S

neu

→ S 1 S 2 }, S

neu

)

erzeugt gerade L 1 ◦ L 2

zu :

( V 1 ∪ { S

neu

}, T 1 , R 1 ∪ { S

neu

→ S 1 S

neu

| ε}, S

neu

)

erzeugt gerade L 1 .

(37)

Beweis (Forts.) zu:

( V 1 ∪ V 2 ∪ { S

neu

}, T 1 ∪ T 2 , R 1 ∪ R 2 ∪ { S

neu

→ S 1 | S 2 }, S

neu

) erzeugt gerade L 1 ∪ L 2

zu:

( V

1

∪ V

2

∪ { S

neu

}, T

1

∪ T

2

, R

1

∪ R

2

∪ { S

neu

→ S

1

S

2

}, S

neu

)

erzeugt gerade L

1

◦ L

2

zu :

( V 1 ∪ { S

neu

}, T 1 , R 1 ∪ { S

neu

→ S 1 S

neu

| ε}, S

neu

)

erzeugt gerade L 1 .

(38)

Beweis (Forts.) zu:

( V 1 ∪ V 2 ∪ { S

neu

}, T 1 ∪ T 2 , R 1 ∪ R 2 ∪ { S

neu

→ S 1 | S 2 }, S

neu

) erzeugt gerade L 1 ∪ L 2

zu:

( V 1 ∪ V 2 ∪ { S

neu

}, T 1 ∪ T 2 , R 1 ∪ R 2 ∪ { S

neu

→ S 1 S 2 }, S

neu

) erzeugt gerade L 1 ◦ L 2

zu :

( V

1

∪ { S

neu

}, T

1

, R

1

∪ { S

neu

→ S

1

S

neu

| ε}, S

neu

)

erzeugt gerade L

1

.

(39)

Theorem 6.2 (Abschlusseigenschaften von L

2

) L 2 ist nicht abgeschlossen gegen:

Durchschnitt ∩

Komplement ¬

(40)

Beweis Zu „ ∩ “:

L 1 = { a

n

b

n

c

m

| n , m ∈ N } L 2 = { a

m

b

n

c

n

| n , m ∈ N }

wird erzeugt von G

i

= ({ S , S 0 , T },{ a , b , c }, R

i

, S ) mit

R 1 = { S → S 0 T S 0 → aS 0 b | ab

T → cT | c } R 2 = { S → TS 0

S 0 → bS 0 c | bc T → aT | a }

Sowohl L 1 als auch L 2 sind cf, nicht aber L 1 ∩ L 2 = { a

n

b

n

c

n

| n ∈ N } .

(41)

Zu „ ∩ “:

L 1 = { a

n

b

n

c

m

| n , m ∈ N } L 2 = { a

m

b

n

c

n

| n , m ∈ N }

wird erzeugt von G

i

= ({ S , S 0 , T },{ a , b , c }, R

i

, S ) mit R 1 = { S → S 0 T

S 0 → aS 0 b | ab T → cT | c } R 2 = { S → TS 0

S 0 → bS 0 c | bc T → aT | a }

∩ {

n n n

| ∈ }

(42)

Beweis Zu „ ∩ “:

L 1 = { a

n

b

n

c

m

| n , m ∈ N } L 2 = { a

m

b

n

c

n

| n , m ∈ N }

wird erzeugt von G

i

= ({ S , S 0 , T },{ a , b , c }, R

i

, S ) mit R 1 = { S → S 0 T

S 0 → aS 0 b | ab T → cT | c } R 2 = { S → TS 0

S 0 → bS 0 c | bc T → aT | a }

Sowohl L 1 als auch L 2 sind cf, nicht aber L 1 ∩ L 2 = { a

n

b

n

c

n

| n ∈ N } .

(43)

Beweis Zu „ ¬ “:

Angenommen, L 2 wäre abgeschlossen gegen ¬ . Wegen

L 1 ∩ L 2 = ¬(¬ L 1 ∪ ¬ L 2 )

wäre L 2 dann auch abgeschlossen gegen ∩ – Widerspruch

(44)

Beweis Zu „ ¬ “:

Angenommen, L 2 wäre abgeschlossen gegen ¬ . Wegen

L 1 ∩ L 2 = ¬(¬ L 1 ∪ ¬ L 2 )

wäre L 2 dann auch abgeschlossen gegen ∩ – Widerspruch

(45)

Beweis Zu „ ¬ “:

Angenommen, L 2 wäre abgeschlossen gegen ¬ . Wegen

L 1 ∩ L 2 = ¬(¬ L 1 ∪ ¬ L 2 )

wäre L 2 dann auch abgeschlossen gegen ∩ – Widerspruch

(46)

1

Ableitungsbäume

2

Umformung von Grammatiken

3

Normalformen

4

Pumping-Lemma für kontextfreie Sprachen

5

Pushdown-Automaten (PDAs)

6

Abschlusseigenschaften

7

Wortprobleme

8

Der CYK-Algorithmus

(47)

1

Ableitungsbäume

2

Umformung von Grammatiken

3

Normalformen

4

Pumping-Lemma für kontextfreie Sprachen

5

Pushdown-Automaten (PDAs)

6

Abschlusseigenschaften

7

Wortprobleme

8

Der CYK-Algorithmus

(48)

Problem

Gegeben: eine cf-Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ

Frage: Ist w ∈ L ( G ) ?

(49)

Problem

Gegeben: eine cf-Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ

Frage: Ist w ∈ L ( G ) ?

(50)

Lösung des Wortproblems für L

3

Gegeben eine rechtslineare Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ .

Konstruiere aus G einen ε -NDEA A

1

. Konstruiere aus A 1 einen NDEA A 2 . Konstruiere aus A 2 einen DEA A 3 .

Probiere aus, ob A 3 das Wort w akzeptiert.

Dazu braucht der Automat A 3 genau | w | Schritte.

(51)

Lösung des Wortproblems für L

3

Gegeben eine rechtslineare Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ .

Konstruiere aus G einen ε -NDEA A 1 . Konstruiere aus A

1

einen NDEA A

2

. Konstruiere aus A 2 einen DEA A 3 .

Probiere aus, ob A 3 das Wort w akzeptiert.

Dazu braucht der Automat A 3 genau | w | Schritte.

(52)

Lösung des Wortproblems für L

3

Gegeben eine rechtslineare Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ .

Konstruiere aus G einen ε -NDEA A 1 . Konstruiere aus A 1 einen NDEA A 2 . Konstruiere aus A

2

einen DEA A

3

.

Probiere aus, ob A 3 das Wort w akzeptiert.

Dazu braucht der Automat A 3 genau | w | Schritte.

(53)

Lösung des Wortproblems für L

3

Gegeben eine rechtslineare Grammatik G, so daß L ( G ) eine Sprache ist über Σ , und ein Wort w ∈ Σ .

Konstruiere aus G einen ε -NDEA A 1 . Konstruiere aus A 1 einen NDEA A 2 . Konstruiere aus A 2 einen DEA A 3 .

Probiere aus, ob A

3

das Wort w akzeptiert.

Dazu braucht der Automat A

3

genau | w | Schritte.

(54)

Das Wortproblem für L

2

Zu jeder cf-Grammatik G kann man einen PDA konstruieren

Aber ein Pushdown-Automat kann ε -Übergänge machen, in denen er das Wort nicht weiter liest.

Wie kann man dann garantieren, daß der Automat in endlich vielen Schritten das Wort w zu Ende gelesen hat?

Deshalb: verwende anderes Verfahren:

Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus)

Auch: Chart-Parsing

(55)

Das Wortproblem für L

2

Zu jeder cf-Grammatik G kann man einen PDA konstruieren

Aber ein Pushdown-Automat kann ε -Übergänge machen, in denen er das Wort nicht weiter liest.

Wie kann man dann garantieren, daß der Automat in endlich vielen Schritten das Wort w zu Ende gelesen hat?

Deshalb: verwende anderes Verfahren:

Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus)

Auch: Chart-Parsing

(56)

Das Wortproblem für L

2

Zu jeder cf-Grammatik G kann man einen PDA konstruieren

Aber ein Pushdown-Automat kann ε -Übergänge machen, in denen er das Wort nicht weiter liest.

Wie kann man dann garantieren, daß der Automat in endlich vielen Schritten das Wort w zu Ende gelesen hat?

Deshalb: verwende anderes Verfahren:

Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus)

Auch: Chart-Parsing

(57)

Das Wortproblem für L

2

Zu jeder cf-Grammatik G kann man einen PDA konstruieren

Aber ein Pushdown-Automat kann ε -Übergänge machen, in denen er das Wort nicht weiter liest.

Wie kann man dann garantieren, daß der Automat in endlich vielen Schritten das Wort w zu Ende gelesen hat?

Deshalb: verwende anderes Verfahren:

Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus)

Auch: Chart-Parsing

(58)

Gegeben: Ein Wort w = a 1 . . . a

n

Idee

Prinzip der dynamischen Programmierung

1.: Ermittle woraus sich die einstelligen Teilworte ableiten lassen 2.: Ermittle woraus sich die zweistelligen Teilworte ableiten lassen . . .

n.: Ermittle woraus sich die n-stelligen Teilworte (w selbst) ableiten lassen

(59)

Gegeben: Ein Wort w = a 1 . . . a

n

Idee

Prinzip der dynamischen Programmierung

1.: Ermittle woraus sich die einstelligen Teilworte ableiten lassen 2.: Ermittle woraus sich die zweistelligen Teilworte ableiten lassen . . .

n.: Ermittle woraus sich die n-stelligen Teilworte (w selbst) ableiten lassen

Referenzen

ÄHNLICHE DOKUMENTE

(bspw. für Algorithmentechnik, Software Engineering, Compilerbau) hilft, weitere Themen/Vorlesungen der Informatik zu verstehen veraltet nicht.

Zudem darf an der Nachklausur (wie auch an den Teilklausuren) teilnehmen, wer an einer Prüfung zu „Einführung in die Theoretische Informatik I“ in frühren Semestern teilgenommen

Diese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen von. Katrin Erk (gehalten an der Universität Koblenz-Landau) Jürgen Dix (gehalten an der

Diese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen von. Katrin Erk (gehalten an der Universität Koblenz-Landau) Jürgen Dix (gehalten an der

Jede Regelprämisse muss mindestens eine Variable enthalten Das Wort kann im Lauf der Ableitung beliebig wachsen und wieder schrumpfen. (Weitere) Beschränkung der Form, die Regeln

Jede Regelprämisse muss mindestens eine Variable enthalten Das Wort kann im Lauf der Ableitung beliebig wachsen und wieder schrumpfen. (Weitere) Beschränkung der Form, die Regeln

Ein Algorithmus für ein Problem P ist eine Vorschrift (ein Programm), die zu beliebigem Objekt o berechnet, ob die Eigenschaft für o zutrifft oder nicht..Q. Probleme und Algorithmen

Ein Algorithmus für ein Problem P ist eine Vorschrift (ein Programm), die zu beliebigem Objekt o berechnet, ob die Eigenschaft für o zutrifft oder