• Keine Ergebnisse gefunden

KontextfreieSprachen:TeilI FormaleSprachenundKomplexit¨at Inhalts¨ubersicht KontextfreieSprachen Motivation

N/A
N/A
Protected

Academic year: 2021

Aktie "KontextfreieSprachen:TeilI FormaleSprachenundKomplexit¨at Inhalts¨ubersicht KontextfreieSprachen Motivation"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Formale Sprachen und Komplexit¨ at

Sommersemester 2019

Kontextfreie Sprachen: Teil I

Prof. Dr. David Sabel

LFE Theoretische Informatik

Letzte ¨Anderung der Folien: 6. Juni 2019

Inhalts¨ ubersicht

Operationen auf Kontextfreien Grammatiken Normalformen f¨ ur CFGs: Chomsky-Normalform und Greibach-Normalform

Widerlegen der Kontextfreiheit: Pumping-Lemma

Lemma (Pumping-Lemma f¨ur CFLs)

SeiLeine kontextfreie Sprache. Dann gibt es eine ZahlnN>0, sodass jedes WortzL, das Mindestl¨angenhat (d. h.|z| ≥n), alsz=uvwxygeschrieben werden kann, so dass gilt:

|vx| ≥1

|vwx| ≤n

ur allei0:uviwxiyL.

Abschlusseigenschaften kontextfreier Sprachen

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 2/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Kontextfreie Sprachen

Zur Erinnerung:

Kontextfreie Sprachen (CFLs) werden von einer kontextfreien Grammatik (CFG) erzeugt

Das sind die Typ 2-Grammatiken

Bedingung: Alle linken Seiten der Produktionen bestehen aus genau einer Variablen.

Motivation

Kontextfreie Sprachen sind insbesondere n¨ utzlich um Sprachen mit Klammerungen zu beschreiben

Die Syntax von Programmiersprachen wird meist mit einer kontextfreien Grammatik angegeben.

Beispiele:

G = ({E, M, Z}, {+, ∗, (, )} ∪ {0, . . . , 9}, P, E) mit P = {E → M | E + M,

M→ Z | M ∗ Z, Z → N | (E), N → 1D | . . . | 9D, D → 0D | . . . | 9D | ε}

L = {a

j

b

j

| j ∈

N

} ist kontextfrei: Produktionen

{S → ε | T, T → aT b | ab} mit S als Startsymbol erzeugen L

(2)

Einfache Operationen auf CFGs

Wir definieren Operationen auf CFGs, die die erzeugte Sprache unver¨ andert lassen

Die Operationen werden sp¨ ater (als Hilfsmittel) wiederverwendet.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 5/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Inlining von Produktionen

Lemma (Inlining von Produktionen) Sei G = (V, Σ, P, S ) eine CFG und

A

→ uBv ∈ P ,

B

w1

| . . . |

wn

alle Regeln mit

B

als linker Seite

und sei G

0

= (V, Σ, P \ {A → uBv} ∪ {A → uw

1

v | . . . | uw

n

v}, S).

Dann erzeugen G und G

0

dieselbe Sprache, d. h. L(G) = L(G

0

).

Beweis: Das folgt, indem die Syntaxb¨ aume zur Ableitung mit G bzw. G

0

modfiziert werden:

tausche alle Baumabschnitte

A

u B

w

i

v

durch

A u w

i

v (im Syntaxbaum mit G) (im Syntaxbaum mit G

0

)

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 6/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Sharing von Satzformen mit neuen Produktionen

Lemma (Sharing von Satzformen mit neuen Produktionen) Sei G eine CFG mit G = (V, Σ, P ∪ {A · →

w1

· · ·

wn

}, S).

Seien

B1

, . . . ,

Bn

neue Variablen (d. h. V ∩ {B

1

, . . . , B

n

} = ∅) und sei G

0

= (V ∪{B ·

1

, . . . ,

Bn

}, Σ, P ∪{A→B ·

1

· · ·

Bn

,

B1

→w

1

, . . . ,

Bn

→w

n

}, S).

Dann gilt L(G) = L(G

0

).

Beweis:

“⊆”: Konstruiere aus S ⇒

G

w Ableitung S ⇒

G0

w

0

: ¨ Ubersetze jeden Schritt uAv ⇒

G

uw

1· · ·wn

v in uAv ⇒

G0

uB

1· · ·Bn

v ⇒

nG0

uw

1· · ·wn

v.

“⊇”: Betrachte den Syntaxbaum f¨ ur S ⇒

G0

w.

Identifiziere die Anwendungen der Regeln

A

B1· · ·Bn

,

Bi

wi

, und modifziere Syntaxbaum durch Anwendung der Regel

A

w1· · ·wn

. Lese Ableitung S ⇒

G

w ab.

Elimination der Links-Rekursion (1)

Definition (links- bzw. rechts-rekursive Produktion

Eine Produktion nennt man

links-rekursiv, wenn sie von der Form A

Au

ist, und

rechts-rekursiv, wenn sie von der Form A

→ uA

ist, wobei in beiden F¨ allen u eine Satzform ist.

(3)

Elimination der Links-Rekursion (2)

Lemma (Elimination von Links-Rekursion)

Sei G = (V, Σ, P, S), P = P

0

∪ {A · → Au

1

| · · · | Au

n

| w

1

| · · · | w

m

}

| {z }

P00

eine CFG mit

P

00

sind alle Produktionen in P mit A als linker Seite und die Satzformen w

1

, . . . , w

m

beginnen alle nicht mit A.

Es gilt L(G) = L(G

0

) f¨ ur G

0

= (V ∪{B}, · Σ, P

0

∪ P

000

, S) mit B neue Variable und P

000

= {A → w

1

B | · · · | w

m

B | w

1

| · · · | w

m

,

B → u

1

| . . . | u

n

| u

1

B | . . . | u

n

B}

Beweis: Ausf¨ uhrlicher Beweis im Skript Wesentliche Idee:

Ersetze Linksableitungsschritte mit G: x

1

Ax

2

G

x

1

w

r

u

f(1)

· · · u

f(k)

x

2

durch Rechtsableitungsschritte mit G

0

: x

1

Ax

2

G0

x

1

w

r

u

f(1)

· · · u

f(k)

x

2

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 9/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Normalformen

Normalformen von Grammatiken fordern eine spezielle Form der Produktionen

N¨ utzlich, wenn man Grammatiken analysiert oder Algorithmen auf Grammatiken formuliert

Man muss dann nur diese Form (statt aller erlaubten) von Produktionen betrachten

Wir betrachten zwei Normalformen

Chomsky-Normalform

Greibach-Normalform

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 10/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Die Chomsky-Normalform

Definition (Chomsky-Normalform)

Eine CFG G = (V, Σ, P, S ) mit ε 6∈ L(G) ist in

Chomsky-Normalform,

wenn f¨ ur A →

w

∈ P gilt:

w=a

∈ Σ oder

w=BC

mit B, C ∈ V . Beispiel:

Die CFG G = ({A}, {(, ), [, ]}, {A → (A) | () | [A] | [] | A A}, A) ist

nicht

in Chomsky-Normalform

(nur die Produktion A → A A passt zum vorgeschriebenen Format).

Die CFG G

0

= ({A, B, C, D, E, F, G}, {(, ), [, ]}, P, A) mit P = {A → BF | BC | DG | DE | AA,

B → (, C →), D → [, E →], F → AC, G → AE}

ist in Chomsky-Normalform (und erzeugt die gleiche Sprache wie G).

Eigenschaften der Chomsky-Normalform

Sei G eine CFG in Chomsky-Normalform, dann gilt:

Syntaxb¨ aume zu Ableitungen mit G sind immer

Bin¨arb¨aume

Ableitungen eines Worts w ∈ L(G) bestehen immer genau aus 2 · |w| − 1 Ableitungsschritten.

Beispiel:

G

0

= ({A, B, C, D, E, F, G}, {(, ), [, ]}, P, A) mit P = {A → BF | BC | DG | DE | AA,

B → (, C →), D → [, E →], F → AC, G → AE}

Ableitung von ([]([])):

A⇒BF

⇒ (F ⇒ (AC ⇒ (AAC ⇒ (DEAC ⇒ ([EAC

⇒ ([]AC ⇒ ([]BF C ⇒ ([](F C ⇒ ([](ACC ⇒ ([](DECC

⇒ ([]([ECC ⇒ ([]([]CC ⇒ ([]([])C ⇒ ([]([]))

(4)

Eigenschaften der Chomsky-Normalform (2)

Der Syntaxbaum dazu:

A B

(

F A

A D

[

E ]

A B

(

F A D

[

E ]

C )

C )

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 13/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Herstellen der Chomsky-Normalform

Jede CFG (mit ε 6∈ L(G)) kann in Chomsky-Normalform gebracht werden. Das Verfahren geht in mehreren Schritten vor:

1

Entfernen von ε-Produktionen (kennen wir bereits)

2

Entfernen von Einheitsproduktionen (Produktionen A → B)

3

Sharen aller Terminale a in rechten Seiten, die nicht nur aus a bestehen durch neue Produktionen A → a

4

Alle Produktionen A → B

1

· · · B

m

mit m > 2 in mehrere zerlegen: A → B

1

C

1

, C

1

→ B

2

C

3

, . . . , C

m−2

→ B

m−1

B

m

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 14/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Entfernen von Einheitsproduktionen

Intuitiv ist klar, dass A → B entfernt werden kann:

Wenn erst A → B, dann B → w angewendet wird, kann man auch gleich A → w anwenden.

Algorithmisch zu beachten:

Eliminiere in der richtigen Reihenfolge:

Wenn A→B undB→C, dann ist Ersetzen von A→B durchA→Cnicht zielf¨uhrend.

ZyklenA→B undB→Am¨ussen vorher entfernt werden!

Algorithmus 5: Entfernen von Einheitsproduktionen

Eingabe:Eine CFGG= (V,Σ, P, S) Beginn

Erzeuge ger. GraphD= (V, E), mit(A, B)Eur jede Einheitsp.ABP; solangees einen Zyklus(A1, A2), . . . ,(An−1, An),(An, A1)Egibttue

P :=P\ {A1A2, . . . , An−1An, AnAn}; /* entferne zykl. Regeln */

P :=P[A1/A2, . . . , A1/An]; /* ersetze alle Vorkommen vonAidurchA1uri= 2, . . . , n*/

V :=V\ {A2, A3, . . . , An}; /* l¨oscheA2, . . . , An*/

S:=S[A1/A2, . . . , A1/An]; /* ersetze Startsymbol durchA1, falls esAi,2inwar */

E:=E\ {(A1, A2), . . . ,(An−1, An),(An, A1)}; /* entferne Zyklus aus Graph */

E:=E[A1/A2, . . . , A1/An]; /* ersetzeAidurchA1uri= 2, . . . , nin anderen Kanten */

SortiereDtopologisch und nummeriere die Variablen inV durch (und benenne entsprechend inE, P, Sum), so dass gilt:AiAj implizierti < j;

SeiV ={A1, . . . , Ak};

uri=kbis1tue

wennAiAjP dann

seienAjw1, . . . , Ajwmalle Produktionen mitAjals linker Seite;

P :=P∪ {Aiw1, . . . , Aiwm};

P :=P\ {AiAj};

Gib die so entstandene Grammatik alsG0aus;

(5)

Korrektheit von Algorithmus 5 (1)

Satz

Algorithmus 5 berechnet bei Eingabe einer CFG G mit ε 6∈ L(G) eine CFG G

0

, die keine Einheitsproduktionen hat, sodass gilt L(G) = L(G

0

). Wenn G keine ε-Produktionen hat, dann hat auch G

0

keine ε-Produktionen.

Beweis: Wir zeigen:

1

Das Entfernen eines Zyklus ver¨ andert die erzeugte Sprache nicht

2

Das Entfernen einer Einheitsproduktion A

i

→ A

j

in der

r¨ uckw¨ arts-laufenden f¨ ur-Schleife ¨ andert die erzeugte Sprache nicht.

bereits gezeigt, da die Operation

”Inlining von Produktionen“

korrekt.

3

Der Algorithmus terminiert und f¨ uhrt nie Einheits- oder ε-Produktionen ein.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 17/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Korrektheit von Alg. 5: Entfernen von Zyklen ist korrekt

Beweisskizze (ausf¨ uhrlicher Beweis im Skript):

Habe G = (V, Σ, P, S ) Zyklus A

1

→ A

2

, . . . , A

n−1

→ A

n

, A

n

→ A

1

Sei G

0

= (V

0

, Σ, P

0

, S

0

) die Grammatik nach Entfernen des Zyklus.

Sei σ die Substitution {A

i

7→ A

1

| i ∈ {2, . . . , n}}.

” L(G) ⊆ L(G

0

)“:

Zeige mit Induktion ¨ubern, dass f¨ur allew1, w2∈(Σ∪V)gilt:

Wenn w1nGw2, dannσ(w1)⇒G0 σ(w2).

” L(G

0

) ⊆ L(G)“:

Zeige mit Induktion ¨ubern, dass f¨urw∈(Σ∪V0) undw0∈Σgilt:

Wenn w⇒nG0 w0∈Σ. dannw⇒Gw0.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 18/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Korrektheit von Alg. 5: Terminierung

Algorithmus 5 terminiert, denn

Die Solange-Schleife terminiert, da jede Iteration die Anzahl der Zyklen strikt verkleinert.

Die f¨ ur-Schleife terminiert offensichtlich.

Es werden keine Einheitsproduktionen eingef¨ uhrt:

Da die Produktionen topologisch sortiert behandelt werden:

Wenn A

i

→ A

j

entfernt wird, wurden

vorher

alle Einheitsproduktionen A

j

→ A

k

entfernt. D.h. zu diesem Zeitpunkt gilt: f¨ ur alle Produktionen A

j

→ w besteht w nicht nur aus einer Variablen.

Es werden keine ε-Produktionen eingef¨ uhrt:

offensichtlich.

Algorithmus 6: Herstellen der Chomsky-NF

Eingabe:CFGGmitε6∈L(G)

Ausgabe:CFGG0in Chomsky-Normalform mitL(G) =L(G0) Beginn

Entferne dieε-Produktionen inGmit Algorithmus 1 und entferne anschließend die Einheitsproduktionen mit Algorithmus 5;

SeiG0= (V0,Σ, P0, S0)die entstandene Grammatik;

ur alleaΣtue

/* F¨uhre neue VariableAauraein, und ersetze Vorkommen vonadurch das Nichtterminal */

G0:= (V0∪{A· a},Σ,{Aw[Aa/a]|AwP0und|w|>1}

∪{A· w|AwP0und|w|= 1} ·∪ {Aaa},S) /* Nun sind alle Regeln von der FormAaoderAB1· · ·Bmmitm2 */

ur alleAB1· · ·BmP0mitm >2tue SeienC1, . . . , Cm−2neue Variablen;

V0:=V0∪{C· 1, . . . , Cm−2};

/* Ersetze inP0die ProduktionAB1· · ·Bmdurch neue Regeln */

P0:=(P0\ {AB1· · ·Bm})

∪{AB1C1} ∪ {CiBi+1Ci+1|uri= 1, . . . , m3} ∪ {Cm−2Bm−1Bm};

(6)

Theorem

F¨ ur CFGs G mit ε 6∈ L(G) berechnet Algorithmus 6 eine

¨ aquivalente CFG in Chomsky-Normalform.

Beweis:

Die Schritte

” Entferne der ε-Produktionen und Entfernen von Einheitsproduktionen haben wir als korrekt gezeigt.

Die Schritte

” Einf¨ uhren von Produktionen A → a “ und Behandlung von A → B

1

· · · B

m

sind Instanzen der korrekten Operation

” Sharing von Satzformen mit neuen Variablen“

Verifiziere, dass danach alle Produktionen die gew¨ unschte Form haben.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 21/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Beispiel: Chomsky-Normalform berechnen

G

0

= ({A, B, C, D, S}, {0, 1}, P

0

, S) mit

P

0

= {S → 1A, A → AB, A → DA, A → ε, B → 0, B → 1, C → AAA, D → 1AC}.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 22/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Schritt 1: Entfernen der ε-Produktionen

G

0

= ({A, B, C, D, S}, {0, 1}, P

0

, S) mit

P

0

= {S → 1A, A → AB, A → DA, A → ε, B → 0, B → 1, C → AAA, D → 1AC}.

Menge W der Variablen, die ε herleiten:

W = {A, C} da A → ε und C → AAA Starte mit

G

1

= ({A, B, C, D, S}, {0, 1}, P

1

, S)

P

1

= {S → 1A, A → AB, A → DA, B → 0, B → 1, C → AAA, D → 1AC}.

Hinzuf¨ ugen von Produktionen f¨ ur Vorkommen von A und C

P

1

= {S → 1A,

S →1, A

→ AB,

A→B, A

→ DA,

A→D,

B → 0, B → 1, C → AAA,

C→AA, C→A,

D → 1AC,

D→1A, D→1C, D→1}.

Schritt 2: Entfernen der Einheitsproduktionen (1)

P

1

= {S → 1A, S → 1, A → AB, A → B, A → DA, A → D, B → 0, B → 1 C → AAA, C → AA, C → A,

D → 1AC, D → 1A, D → 1C, D → 1}.

Der gerichtete Graph ist

D = ({S, A, B, C, D}, {(A, B), (A, D), (C, A)}).

Es gibt keine Zyklen, wir erhalten P

2

= P

1

Topologisches Sortieren und Umbenennen der Variablen, sodass

” A

i

→ A

j

impliziert i < j“ gilt, erfordert eine Umbenennung, welche die Beziehungen

” A < B“,

” A < D“,

” C < A“ erzeugt.

Wir w¨ ahlen Umbenennung ρ mit ρ(C) = A

1

, ρ(A) = A

2

, ρ(B) = A

3

, ρ(D) = A

4

, ρ(S) = A

5

.

Das liefert uns G

3

= ({A

1

, A

2

, A

3

, A

4

, A

5

}, Σ, P

3

, A

5

) mit

P

3

= {A

5

→ 1A

2

, A

5

→ 1, A

2

→ A

2

A

3

, A

2

→ A

3

, A

2

→ A

4

A

2

,

A

2

→ A

4

, A

3

→ 0, A

3

→ 1, A

1

→ A

2

A

2

A

2

, A

1

→ A

2

A

2

,

A

1

→ A

2

, A

4

→ 1A

2

A

1

, A

4

→ 1A

2

, A

4

→ 1A

1

, A

4

→ 1}.

(7)

Schritt 2: Entfernen der Einheitsproduktionen (2)

P

3

= {A

5

→ 1A

2

, A

5

→ 1, A

2

→ A

2

A

3

, A

2

→ A

3

, A

2

→ A

4

A

2

, A

2

→ A

4

, A

3

→ 0, A

3

→ 1, A

1

→ A

2

A

2

A

2

, A

1

→ A

2

A

2

, A

1

→ A

2

, A

4

→ 1A

2

A

1

, A

4

→ 1A

2

, A

4

→ 1A

1

, A

4

→ 1}.

Nun l¨ auft die F¨ ur-Schleife f¨ ur i von 5 bis 1:

F¨uri= 5, i= 4, i= 3gibt es jeweils keine Produktion der FormAi→Aj. F¨uri= 2wirdA2→A3ersetzt durch A2→0, A2→1, und es wird A2→A4 ersetzt durchA2→1A2A1, A2→1A2, A2→1A1 und A2→1. Danach ist

P4={A5→1A2, A5→1, A2→A2A3, A2→0, A2→1, A2→A4A2, A2→1A2A1, A2→1A2, A2→1A1, A3→0, A3→1,

A1→A2A2A2, A1→A2A2, A1→A2, A4→1A2A1, A4→1A2, A4→1A1, A4→1}.

F¨uri= 1wirdA1→A2ersetzt durch A1→A2A3,A1→0,A1→1, A1→A4A2,A1→1A2A1,A1→1A2undA1→1A1.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 25/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Schritt 2: Entfernen der Einheitsproduktionen (3)

Daher ist die Grammatik nach Entfernen der Einheitsproduktionen:

G

5

= (V

5

, Σ, P

5

, A

5

) mit V

5

= {A

1

, A

2

, A

3

, A

4

, A

5

} und P

5

= {A

5

→ 1A

2

, A

5

→ 1, A

2

→ A

2

A

3

, A

2

→ 0, A

2

→ 1,

A

2

→ A

4

A

2

, A

2

→ 1A

2

A

1

, A

2

→ 1A

2

, A

2

→ 1A

1

, A

3

→ 0, A

3

→ 1, A

1

→ A

2

A

2

A

2

, A

1

→ A

2

A

2

, A

1

→ A

2

A

3

, A

1

→ 0, A

1

→ 1, A

1

→ A

4

A

2

, A

1

→ 1A

2

A

1

, A

1

→ 1A

2

, A

1

→ 1A

1

, A

4

→ 1A

2

A

1

, A

4

→ 1A

2

, A

4

→ 1A

1

, A

4

→ 1}.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 26/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Schritt 3: Terminalsymbole durch neue Produktionen darstellen

F¨ uge B

0

→ 0 und B

1

→ 1 hinzu und ersetze in rechten Seiten mit Wortl¨ ange > 1:

P

6

= {B

0

→ 0, B

1

→ 1, A

5

→ B

1

A

2

, A

5

→ 1, A

2

→ A

2

A

3

, A

2

→ 0, A

2

→ 1, A

2

→ A

4

A

2

, A

2

→ B

1

A

2

A

1

, A

2

→ B

1

A

2

,

A

2

→ B

1

A

1

, A

3

→ 0, A

3

→ 1, A

1

→ A

2

A

2

A

2

, A

1

→ A

2

A

2

, A

1

→ A

2

A

3

, A

1

→ 0, A

1

→ 1, A

1

→ A

4

A

2

, A

1

→ B

1

A

2

A

1

, A

1

→ B

1

A

2

, A

1

→ B

1

A

1

, A

4

→ B

1

A

2

A

1

,

A

4

→ B

1

A

2

, A

4

→ B

1

A

1

, A

4

→ 1}.

Schritt 4: Rechte Seiten zerlegen

Zerlege rechte Seiten mit Wortl¨ ange > 2:

Ergibt G

7

= (V

7

, Σ, P

7

, A

5

), wobei

V

7

= {A

1

, A

2

, A

3

, A

4

, A

5

, B

0

, B

1

, C

1

, C

2

, C

3

, C

4

}

P

7

= {B

0

→ 0, B

1

→ 1, A

5

→ B

1

A

2

, A

5

→ 1, A

2

→ A

2

A

3

, A

2

→ 0, A

2

→ 1, A

2

→ A

4

A

2

, A

2

→ B

1

C

1

C

1

→ A

2

A

1

,

A

2

→ B

1

A

2

, A

2

→ B

1

A

1

, A

3

→ 0, A

3

→ 1, A

1

→ A

2

C

2

, C

2

→ A

2

A

2

, A

1

→ A

2

A

2

, A

1

→ A

2

A

3

, A

1

→ 0, A

1

→ 1, A

1

→ A

4

A

2

, A

1

→ B

1

C

3

, C

4

→ A

2

A

1

, A

1

→ B

1

A

2

, A

1

→ B

1

A

1

, A

4

→ B

1

C

4

, C

4

→ A

2

A

1

, A

4

→ B

1

A

2

, A

4

→ B

1

A

1

, A

4

→ 1}.

Alle Schritte beendet, G

7

ist in Chomsky-Normalform

(8)

Greibach-Normalform

Definition (Greibach-Normalform)

Ein CFG G = (V, Σ, P, S) mit ε 6∈ L(G) ist in

Greibach-Normalform, falls alle Produktionen in

P von der Form A → aB

1

B

2

. . . B

j

mit j ≥ 0, A, B

1

, . . . , B

j

∈ V und a ∈ Σ sind.

Bemerkungen:

benannt nach Sheila A. Greibach

Regul¨ are Grammatiken sind Spezialfall der Greibach-NF:

Dort ist nur j = 0 oder j = 1 erlaubt.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 29/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Algorithmus 7: Herstellen der Greibach-Normalform

Eingabe:CFGG= ({A1, . . . , An},Σ, P, Ai)in Chomsky-NF mitε6∈L(G) Ausgabe:CFGG0in Greibach-Normalform mitL(G) =L(G0)

Beginn

uri= 1bisntue urj= 1bisi1tue

ur alleAiAjuPtue

SeienAjw1| · · · |wmalle Regeln inP mitAjals linker Seite;

ErsetzeAiAjudurchAiw1u| . . . |wmuinP;

wennAiAiuP dann

Eliminiere die Regel mit der Operation

Elimination der Links-Rekursion“;

SeiBidie dabei neu erzeugte Variable;

uri=n1bis1tue

ur alleAiAjuP,j > itue

SeienAjw1| · · · |wmalle Regeln mitAjals linker Seite;

ErsetzeAiAjudurchAiw1u| · · · |wmuinP; uri= 1bisntue

ur alleBiAjuP tue

SeienAjw1| · · · |wmalle Regeln mitAjals linker Seite;

ErsetzeBiAjudurchBiw1u| · · · |wmuinP;

Ziel der geschachtelten F¨ur-Schleife: Es gibtAiAjunur f¨urj > i Ersetzen der RegelnAiAjumiti > j

Ersetzen der RegelnAiAiu

Nun gilt f¨urAiAjustetsj > i.

Damit gilt f¨urAnu:ubeginnt mit Zeichen ausΣ.

achste Schleife: Ersetze alleAiAjumitj > i w1, . . . , wm fangen mit Zeichen aus Σ an, da Schleife absteigend l¨auft!

Behandle die neuen Regeln mit Bials linker Seite.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 30/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Korrektheit

Satz

Zu jeder CFG G mit ε 6∈ L(G) gibt es eine CFG G

0

in Greibach-Normalform, sodass L(G) = L(G

0

) gilt.

Korrektheit folgt:

durch Pr¨ ufen der genannten Invarianten

Korrektheit der Elimination von Links-Rekursion Korrektheit der Operation

” Inlining von Produktionen“

Ein Beispiel zur Herstellung der Greibach-Normalform ist im Skript

Widerlegen der Kontextfreiheit

Wir lernen Methoden kennen zum Widerlegen der Kontextfreiheit:

Pumping-Lemma f¨ ur kontextfreie Sprachen

evtl. Ogdens-Lemma (evtl. in der Zentral¨ ubung)

(9)

Einschub: Bin¨ arb¨ aume

Bin¨ arbaum: Baum, wobei jeder Knoten 0 oder 2 Kinder hat Lemma

Sei B ein Bin¨ arbaum mit ≥ 2

k

Bl¨ attern. Dann hat B einen Pfad der L¨ ange ≥ k.

Beweis durch Induktion ¨ uber k:

k = 0: Ein Baum mit 2

k

= 2

0

= 1 Bl¨ attern besteht genau aus diesem Blatt und hat einen Pfad der L¨ ange ≥ 0.

k > 0: Einer der beiden Teilb¨ aume unter der Wurzel hat ≥ 2

k−1

Bl¨ atter.

Per Induktionsannahme hat dieser einen Pfad der L¨ ange ≥ k − 1.

Daher hat der gesamte Baum einen Pfad der L¨ ange ≥ k.

| {z }

2k Bl¨atter

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 33/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Pumping-Lemma f¨ ur CFLs: Bemerkungen

Erinnerung: Pumping-Lemma f¨ ur regul¨ are Sprachen:

Jede regul¨ are Sprache erf¨ ullt die Pumping-Eigenschaft.

Analog: Pumping-Lemma f¨ ur kontextfreie Sprachen:

Jede kontextfreie Sprache erf¨ ullt die Pumping-Eigenschaft f¨ ur kontextfreie Sprachen

Kann vorallem zum Widerlegen benutzt werden:

Sprache verletzt die Pumping-Eigenschaft f¨ ur CFLs

= ⇒ Sprache ist nicht kontextfrei

Pumping-Eigenschaft bei regul¨ aren Sprachen, informell:

Man kann Worte an einer Stelle aufpumpen und verbleibt in der Sprache (uviw∈Lf¨ur alle i∈N)

Pumping-Eigenschaft bei kontextfreien Sprachen, informell:

Man kann Worte an zweiStellen gleichzeitig aufpumpen und verbleibt in der Sprache (uviwxiy∈Lf¨ur allei∈N)

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 34/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Das Pumping-Lemma f¨ ur CFLs

Lemma (Pumping-Lemma f¨ ur CFLs)

Sei L eine kontextfreie Sprache. Dann gibt es eine Zahl n ∈

N>0

, sodass jedes Wort z ∈ L, das Mindestl¨ ange n hat (d. h. |z| ≥ n), als z = uvwxy geschrieben werden kann, so dass gilt:

|vx| ≥ 1

|vwx| ≤ n

f¨ ur alle i ≥ 0: uv

i

wx

i

y ∈ L.

Beweis des Pumping-Lemmas (1)

Beh.: F¨ ur jede CFL L gibt es n ∈

N>0

, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit

|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv

i

wx

i

y ∈ L Beweis:

Sei G = (V, Σ, P, S ) eine CFG in Chomsky-NF mit L(G) = L \ {ε}

Betrachte Ableitung und Syntaxbaum eines Wortes z mit |z| ≥ 2

|V|

= n (wenn es keine solche Ableitung gibt, gilt das Pumping-Lemma:

es gibt dann keine Worte z ∈ L mit Mindestl¨ ange n) Da G in Chomsky-NF, ist der Syntaxbaum ein bin¨ arer Baum, bis auf die letzte Schicht, die Produktionen A → a anwendet

Baum ohne letzte Schicht hat |z| ≥ 2

|V|

Bl¨ atter.

Daher gibt es einen Pfad von der Wurzel zum Blatt, der L¨ ange ≥ |V |, der aus ≥ |V + 1| Knoten besteht und jeder Knoten ist mit einer Variablen markiert.

S

| {z }

z

(10)

Beweis des Pumping-Lemmas (2)

Beh.: F¨ ur jede CFL L gibt es n ∈

N>0

, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit

|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv

i

wx

i

y ∈ L Beweis:

. . .

Da es nur |V | Variablen gibt, kommt mindestens eine Variable mehrfach auf diesem Pfad vor.

W¨ ahle die Vorkommen der Variablen so, dass das zweite Vorkommen von unten gesehen am tiefsten ist. Sei A die Variable.

S

A A

| {z }

z

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 37/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Beweis des Pumping-Lemmas (3)

Beh.: F¨ ur jede CFL L gibt es n ∈

N>0

, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit

|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv

i

wx

i

y ∈ L Beweis:

Betrachte die Teilb¨ aume, die jeweils A als Wurzel haben.

Sie entsprechen Ableitungen von

Teilworten vonz

Der Teilbaum mit dem unteren A als Wurzel erzeugt ein Teilwort des Teilbaums mit dem oberen A als Wurzel. D.h. z = uvwxy, wobei vwx vom oberen A und w vom unteren A erzeugt wird.

Es gilt |w| ≥ 1, da Variablen einer Grammatik in Chomsky-NF nur W¨ orter mit L¨ ange ≥ 1 herleiten Das Wort vwx muss echt l¨ anger sein als w, da das obere A ¨ uber dem unteren A steht. Daher folgt

|v| ≥ 1 und/oder |x| ≥ 1 und somit |vx| ≥ 1.

S

A A

| {z }

z

u v w x y

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 38/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Beweis des Pumping-Lemmas (4)

Beh.: F¨ ur jede CFL L gibt es n ∈

N>0

, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit

|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv

i

wx

i

y ∈ L Beweis:

Da wir das tiefste Vorkommen der wiederholten Variable gew¨ ahlt haben, kann der Pfad vom oberen A bis zur Blattebene nur aus ≤ |V | + 1 Knoten bestehen und L¨ ange ≤ |V | haben

Daraus folgt: |vwx| ≤ 2

|V|

= n

Aus dem Baum folgt: A ⇒

w und A ⇒

vAx und daher kann man auch A ⇒

v

i

wx

i

f¨ ur alle i ∈

N

ableiten

Schließlich folgt daraus S ⇒

uv

i

wx

i

y f¨ ur alle i ∈

N

.

S

A A

| {z }

z

u v w x y

Pumping-Lemma: Illustrationen

S

A

u

w

y

S

A A

A

u v x y

v w x

Illustration f¨ ur uv

0

wx

0

y Illustration f¨ ur uv

2

wx

2

y

(11)

Verwendung des Pumping-Lemma

Die Pumping-Eigenschaft ist eine notwendige aber

keine hinreichende

Bedingung f¨ ur CFLs.

Daher kann das Pumping-Lemma

nicht

verwendet werden, um Kontextfreiheit zu zeigen

Aber: Es kann verwendet werden, um

Kontextfreiheit zu widerlegen

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 41/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Pumping-Lemma zum Widerlegen der Kontextfreiheit

Formulierung des Pumping-Lemmas f¨ ur CFGs zum Widerlegen der Kontextfreiheit

Sei L eine formale Sprache f¨ ur die gilt: F¨ ur jede Zahl n ∈

N>0

gibt es ein z ∈ L, das Mindestl¨ ange n hat (d. h. |z| ≥ n), und f¨ ur jede Zerlegung z = uvwxy mit |vwx| ≤ n und |vx| ≥ 1, gibt es ein i ≥ 0, sodass uv

i

wx

i

y 6∈ L. Dann ist L nicht kontextfrei.

Beweis: Umformung der negierten pr¨ adikatenlogischen Formel (siehe Skript), die sich aus dem Pumping-Lemma ergibt.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 42/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Pumping-Lemma als Spiel

Sei L die formale Sprache.

1

Der

Gegner

w¨ ahlt die Zahl n ∈

N>0

.

2 Wir

w¨ ahlen das Wort z ∈ L mit |z| ≥ n.

3

Der

Gegner

w¨ ahlt die Zerlegung

z = uvwxy mit |vx| ≥ 1 und |vwx| ≤ n

4 Wir

gewinnen das Spiel, wenn wir ein i ≥ 0 angeben k¨ onnen, sodass uv

i

wx

i

w 6∈ L.

Wenn wir

f¨ur jede Wahl des Gegners

das Spiel gewinnen k¨ onnen, dann haben wir gezeigt, dass L nicht kontextfrei ist.

Beispiele

Satz

Die Sprache L = {a

l

b

l

c

l

| l ∈

N

} ist nicht kontextfrei.

Beweis:

Gegner w¨ ahlt n ∈

N>0

Wir w¨ ahlen z = a

n

b

n

c

n

.

Gegner w¨ ahlt Zerlegung z = uvwxy mit |vx| ≥ 1 und |vwx| ≤ n Fall 1: vwx ist von der Form a

i

b

j

, i + j ≤ n

Da |vx| ≥ 1, gilt #

a

(vx) ≥ 1 oder #

b

(vx) ≥ 1, aber #

c

(vx) = 0 Damit folgt uv

0

wx

0

y 6∈ L

Fall 2: vwx ist von der Form b

i

c

j

, i + j ≤ n

Da |vx| ≥ 1, gilt #

b

(vx) ≥ 1 oder #

c

(vx) ≥ 1, aber #

a

(vx) = 0 Damit folgt uv

0

wx

0

y 6∈ L

Andere F¨ alle sind nicht m¨ oglich!

(12)

Beispiele (2)

Satz

Die Sprache L = {a

i

b

j

c

i

d

j

| i, j ∈

N>0

} ist nicht kontextfrei.

Beweis:

Gegner w¨ahltn∈N>0. Wir w¨ahlenz=anbncndn.

Gegner w¨ahlt Zerlegungz=uvwxymit|vx| ≥1und|vwx| ≤n

1.Fall: vwx=aibj miti+j≤n. Da|vx| ≥1, gilt#a(vx) + #b(vx)≥1und uv0wx0y=uwy=ai0bj0cndnundi0< nund/oderj0< n, d.h.uwy6∈L.

2.Fall: vwx=bicj miti+j≤n. Da|vx| ≥1, gilt#b(vx) + #c(vx)≥1und uv0wx0y=uwy=anbi0cj0dnundi0< nund/oderj0< n, d.h.uwy6∈L 3.Fall: vwx=cidj miti+j≤n. Da|vx| ≥1, gilt#c(vx) + #d(vx)≥1 und uv0wx0y=uwy=anbnci0dj0 undi0< nund/oderj0< n, d.h.uwy6∈L.

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 45/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Un¨ ares Alphabet

Satz

Sei L eine formale Sprache ¨ uber einem un¨ aren Alphabet (d.h. |Σ| = 1).

Dann ist L genau dann regul¨ ar, wenn L kontextfrei ist.

Beweis:

Wenn L regul¨ ar ist, dann ist L auch kontextfrei.

R¨ uckrichtung: Siehe Skript

(Beweis verwendet die Pumping-Eigenschaft f¨ ur CFLs und konstruiert daraus eine Vereinigung von regul¨ aren Sprachen)

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 46/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Beispiele

Satz

Die Sprachen

L

1

= {a

p

| p ist eine Primzahl}

L

2

= {a

n

| n ist keine Primzahl}

L

3

= {a

n

| n ist Quadratzahl}

L

4

= {a

2n

| n ∈

N

} sind allesamt nicht kontextfrei.

Beweis: Wir haben f¨ ur alle 4 Sprachen gezeigt, dass sie nicht regul¨ ar sind. Da sie alle ¨ uber einem un¨ aren Alphabet definiert sind, sind sie auch nicht kontextfrei.

Abschlusseigenschaften der kontextfreien Sprachen

Theorem

Die kontextfreien Sprachen sind abgeschlossen unter Vereinigung, Produkt und Kleeneschem Abschluss.

Beweis:

Seien L

1

,L

2

CFLs und G

i

= (V

i

, Σ

i

, P

i

, S

i

) CFGs mit L(G

i

) = L

i

f¨ ur i = 1, 2. O.B.d.A. sei V

1

∩ V

2

= ∅.

Seien S, S

0

neue Variablen ({S, S

0

} ∩ (V

1

∪ V

2

) = ∅).

Vereinigung:

Es gilt: L(G

) = L(G

1

) ∪ L(G

2

) = L

1

∪ L

2

f¨ ur G

= (V

1

∪ V

2

∪ {S}, Σ

1

∪ Σ

2

, P

1

∪ P

2

∪ {S → S

1

| S

2

}, S ).

Produkt:

Es gilt L(G

) = L(G

1

)L(G

2

) = L

1

L

2

f¨ ur

G

= (V

1

∪ V

2

∪ {S}, Σ

1

∪ Σ

2

, P

1

∪ P

2

∪ {S → S

1

S

2

}, S).

Kleenescher Abschluss:

Sei G

1,∗

= (V

1

∪ {S

0

, S

0

}, Σ, P

0

, S

0

) mit P

0

= (P \ {S

1

→ ε}) ∪ {S

0

→ ε, S

0

→ S, S → SS, S → S

1

}.

Dann gilt L(G

1,∗

) = L(G

1

)

.

(13)

Abschlusseigenschaften der kontextfreien Sprachen (2)

Theorem

Die kontextfreien Sprachen sind

nicht abgeschlossen

unter Schnitt- und Komplementbildung.

Sei L

1

= {a

n

b

m

c

m

| m, n ∈

N

} und sei L

2

= {a

m

b

m

c

n

| m, n ∈

N

} G

1

= ({A, D, S}, {a, b, c}, {S → AD, A → ε | aA, D → bDc | ε}, S) G

2

= ({C, D, S}, {a, b, c}, {S → DC, C → cC | ε, D → aDb | ε}, S) F¨ ur i=1,2: L(G

i

) = L

i

, daher: L

1

und L

2

sind beide kontextfrei.

L

1

∩ L

2

= {a

n

b

n

c

n

| n ∈

N>0

} ist nicht kontextfrei (bereits gezeigt).

Daher sind die CFLs nicht abgeschlossen bez¨ uglich Schnittbildung.

Komplement: Widerspruchsbeweis: Annahme: L CFL = ⇒ L CFL Seien L

1

, L

2

CFLs. Dann ist auch L

1

∪ L

2

CFL

(da CFLs abgeschlossen bez. · und ∪) Aber: L

1

∪ L

2

= L

1

∩ L

2

. Widerspruch!

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 49/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Zusammenfassung

Normalformen f¨ ur CFGs: Chomsky-Normalform und Greibach-Normalform

Widerlegen der Kontextfreiheit mit dem Pumping-Lemma Abschlusseigenschaften kontextfreier Sprachen

TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 50/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.

Referenzen

ÄHNLICHE DOKUMENTE

Zielraum Hausdorff-Raum). Um die Produkt–Topologie zu definieren, lassen wir uns leiten von dem speziellen Fall metrischer R¨aume.. Dies k¨onnen wir auch formulieren, ohne die

Eine Ableitung in einer kontextfreien Grammatik heißt Linksableitung, wenn in jedem Schritt das am weitesten links stehende Nichtterminalsymbol ersetzt wird.. Jedem Syntaxbaum zu

Die Menge der kontextfreien Sprachen ist unter den Operationen (i) Vereinigung,.. (ii) Produkt (Konkatenation) und

Die Menge der deterministisch kontextfreien Sprachen ist eine echte Teilmenge der Menge der

algorithmische Entscheidbarkeit = Turing-Entscheidbarkeit algorithmische Erzeugbarkeit = Turing-Aufz¨ ahlbarkeit Berechenbarkeit = Turing-Berechenbarkeit. Belege: • Erfahrung:

Beweis: Jede reguläre Sprache ist per Denition auch kontextfrei und es gibt mindestens eine kontextfreie Sprache, nämlich L(a n b n ), die nicht regulär ist... Eine durch

Das Wortproblem f¨ ur kontextfreie Sprachen kann in Polynomialzeit entschieden werden....

F¨ ur Produktionen A → a, A → B, AB → CD kann man direkt ersetzen, f¨ ur den Fall A → BC wird BC durch 2 A ersetzt und dann alle Zeichen von links um eins nach rechts