08.10.2013 Aufrufe

kontextfrei

kontextfrei

kontextfrei

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Theoretische Informatik I<br />

Einheit 3.3<br />

Eigenschaften <strong>kontextfrei</strong>er Sprachen<br />

1. Abschlußeigenschaften<br />

2. Normalformen<br />

3. Prüfen von Eigenschaften / Syntaxanalyse<br />

4. Wann sind Sprachen nicht <strong>kontextfrei</strong>?


Abschlußeigenschaften <strong>kontextfrei</strong>er Sprachen<br />

Typ-2 Sprachen sind komplizierter als Typ-3 Sprachen<br />

• Abgeschlossenheit gilt nur für 6 Operationen<br />

– Vereinigung zweier <strong>kontextfrei</strong>er Sprachen L1 ∪ L2<br />

– Spiegelung einer <strong>kontextfrei</strong>en Sprache L R<br />

– Hülle einer <strong>kontextfrei</strong>en Sprache L ∗<br />

– Verkettung zweier <strong>kontextfrei</strong>er Sprachen L1◦L2<br />

– Substitution/Homomorphismus einer <strong>kontextfrei</strong>en Sprache σ(L)<br />

– Inverser Homomorphismus einer <strong>kontextfrei</strong>en Sprache h −1 (L)<br />

• Keine Abgeschlossenheit für<br />

– Komplement einer <strong>kontextfrei</strong>en Sprache L<br />

– Durchschnitt zweier <strong>kontextfrei</strong>er Sprachen L1 ∩ L2<br />

– Differenz zweier <strong>kontextfrei</strong>er Sprachen L1 - L2<br />

• Nachweis mit Grammatiken und PDAs<br />

– Modelle sind ineinander umwandelbar – wähle das passendste<br />

– Negative Nachweise mit einem Typ-2 Pumping Lemma<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 1 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Substitutionen von Sprachen<br />

Verallgemeinerung von Homomorphismen<br />

• Abbildung σ von Wörtern in Sprachen<br />

σ:Σ ∗ →L ist Substitution, wenn σ(v1..vn) = σ(v1)◦..◦σ(vn) für alle vi ∈Σ<br />

σ(L)= {σ(w) | w ∈L} ist das Abbild der Wörter von L unter σ<br />

• Beispiel: σ(0)={a n b n | n ∈ N}, σ(1)={aa, bb}<br />

– σ:{0, 1} ∗ →L ist eindeutig definiert durch σ(0) und σ(1)<br />

– σ(01) = {a n b n | n ∈N}◦{aa,bb}<br />

= {w ∈{a, b} ∗ | w = a n b n+2 ∨w = a n b n aa für ein n ∈N}<br />

– σ({0} ∗ ) = {anbn |n∈N} ∗<br />

= {w ∈{a, b} ∗ | w = an1bn1an2bn2..an kbnk für ein k und ni ∈N}<br />

• Extrem ausdrucksstarker Mechanismus<br />

– L1 ∪ L2 = σ({1,2}) für σ(1)=L1, σ(2)=L2<br />

– L1◦L2 = σ({12}) für σ(1)=L1, σ(2)=L2<br />

– L∗ = σ({1} ∗ ) für σ(1)=L<br />

.<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 2 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Abgeschlossenheit unter Substitutionen<br />

L ∈L2, σ Substitution, σ(a) ∈L2 für a ∈T ⇒ σ(L) <strong>kontextfrei</strong><br />

• Beweis mit Grammatiken<br />

“Ersetze a ∈T durch Startsymbol der <strong>kontextfrei</strong>en Grammatik für σ(a)”<br />

Seien L und σ(a) <strong>kontextfrei</strong> für alle a ∈T<br />

Dann gibt es Typ-2 Grammatiken G = (V , T , P , S) mit L = L(G)<br />

und Ga = (Va, Ta Pa, Sa) mit σ(a) = L(Ga)<br />

Dann ist σ(L) = σ(L(G)) = {σ(a1)◦..◦σ(an) | S ∗<br />

−→ a1..an}<br />

= {w1..wn | ∃a1..an. S ∗<br />

∗<br />

−→ a1..an ∧Sa −→ wi} i<br />

Sei Pσ = {A→ασ | A→α ∈P } ∪ <br />

a ∈TPa, wobei ασ aus α ∈(V ∪T) ∗<br />

entsteht, indem jedes a ∈T durch Sa ersetzt wird<br />

und Gσ = (Vσ, Tσ, Pσ, S) wobei Vσ = V ∪ <br />

a ∈ T Va und Tσ = <br />

Dann gilt w1..wn ∈L(Gσ) ⇔ S ∗<br />

−→ Gσw1..wn<br />

⇔ ∃a1..an ∈T ∗ . S ∗<br />

−→ Ga1..an ∧Sai<br />

⇔ w1..wn ∈ σ(L)<br />

Also ist σ(L) <strong>kontextfrei</strong><br />

a ∈ T Ta<br />

∗<br />

−→ Ga i wi<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 3 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Vereinigung, Verkettung, Hülle, Homomorphismen<br />

Verwende Abgeschlossenheit unter Substitutionen<br />

• L1, L2 <strong>kontextfrei</strong> ⇒ L1 ∪ L2 <strong>kontextfrei</strong><br />

– Sei σ(1)=L1 und σ(2)=L2<br />

– Dann ist σ:{1, 2}→L2 Substitution und L1 ∪ L2 = σ({1,2}) ∈ L2<br />

• L1, L2 <strong>kontextfrei</strong> ⇒ L1 ◦L2 <strong>kontextfrei</strong><br />

– Sei σ(1)=L1 und σ(2)=L2<br />

– Dann ist σ:{1, 2}→L2 Substitution und L1◦L2 = σ({12}) ∈ L2<br />

• L <strong>kontextfrei</strong> ⇒ L ∗ <strong>kontextfrei</strong><br />

– Für σ(1)=L ist σ:{1}→L2 Substitution und L ∗ = σ({1} ∗ ) ∈ L2<br />

• L <strong>kontextfrei</strong> ⇒ L + <strong>kontextfrei</strong><br />

– Für σ(1)=L ist σ:{1}→L2 Substitution und L + = σ({1} + ) ∈ L2<br />

• L ∈L2, h Homomorphismus ⇒ h(L) <strong>kontextfrei</strong><br />

– Für σ(a)={h(a)} ist σ:T →L2 Substitution und h(L) = σ(L) ∈ L2<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 4 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Abschluß unter Spiegelung<br />

L <strong>kontextfrei</strong> ⇒ L R ={wn..w1 | w1..wn ∈L} <strong>kontextfrei</strong><br />

• Beweis mit Grammatiken<br />

– Bilde Spiegelgrammatik zu G = (V , T , P , S) mit L = L(G)<br />

– Setze GR = (V , T , PR, S) mit PR = {A→α R | A→α ∈P }<br />

– Dann gilt für alle A ∈V , w ∈(V ∪T) ∗ : A ∗<br />

−→ G w ⇔ A ∗<br />

−→ G R w R<br />

· Beweis durch Induktion über Länge der Ableitung<br />

– Also L(GR) = {w ∈T ∗ | S ∗<br />

−→ G R w} = {v R ∈T ∗ |S ∗<br />

−→ Gv} = (L(G)) R<br />

• Beweis mit PDAs ähnlich wie bei Typ-3 Sprachen<br />

– Bilde Umkehrautomaten zu P = (Q, Σ, Γ, δ, q0, Z0, F ) mit L=LF(P)<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 5 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Abschluß unter inversen Homomorphismen<br />

L ∈L2, h Homomorphismus ⇒ h −1 (L) <strong>kontextfrei</strong><br />

• Beweis mit Pushdown Automaten<br />

“Berechnung von h vor Abarbeitung der Wörter im Automaten”<br />

Sei L <strong>kontextfrei</strong> und P = (Q, Σ, Γ, δ, q0, Z0, F ) ein PDA<br />

mit L = LF(P) = { v ∈Σ∗ | ∃q ∈F. ∃β ∈Γ∗ . (q0,v,Z0) ⊢ ∗<br />

(q,ǫ, β) }<br />

Dann ist h−1 (L) = {w ∈Σ ′∗ | ∃q ∈F. ∃β ∈Γ∗ . (q0,h(w),Z0) ⊢ ∗<br />

(q, ǫ,β) }<br />

Konstruiere PDA Ph = (Qh, Σ’, Γ, δh, q0 , Z0, Fh) mit der Eigenschaft<br />

h<br />

(q0 ,w,Z0) ⊢ h ∗<br />

(qh, ǫ, β) ⇔ (q0, h(w),Z0) ⊢ ∗<br />

(q,ǫ, β) für Endzustände<br />

Ein Ansatz wie δh(q, a,X) = ˆ δ(q, h(a),X) funktioniert nicht!<br />

Wie bei DEAs muß h(a) schrittweise in den Zuständen abgearbeitet werden<br />

Setze Qh = Q × {v ∈Σ∗ | v Suffix von h(a) für ein a ∈Σ’}<br />

δh( (q,ǫ), a, X ) = {( (q,h(a)), X )} a ∈Σ’, X ∈Γ<br />

δh( (q,bv), ǫ, X ) = {( (p,v),α)|(p,α) ∈δ(q,b,X)} b ∈Σ∪{ǫ}, v ∈Σ∗ , X ∈Γ<br />

q0 = (q0,ǫ) Fh = {(q,ǫ)|q ∈F }<br />

h<br />

Dann gilt ((q,ǫ),a,X) ⊢ ∗<br />

P ((p,ǫ),ǫ,β) ⇔ (q,h(a),X) ⊢ h ∗<br />

P (p,ǫ,β)<br />

Also ist h−1 (L) = L(Ph) und damit <strong>kontextfrei</strong><br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 6 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Durchschnitt, Komplement und Differenz<br />

Abgeschlossenheit gilt nicht für diese Operationen<br />

• Durchschnitt: L1, L2 ∈L2 ⇒ L1∩L2 ∈L2<br />

– L = {0 n 1 n 2 n |n∈N} ist nicht <strong>kontextfrei</strong> (Beweis später)<br />

– Aber L = {0 n 1 n 2 m |n,m∈N} ∩ {0 m 1 n 2 n | n,m∈N}<br />

und {0 n 1 n 2 m |n,m∈N} und {0 m 1 n 2 n | n,m∈N} sind <strong>kontextfrei</strong><br />

(Regeln für erste Sprache: S→AB, A→0A1, A→01, B→2B, B→2)<br />

Der Durchschnitt <strong>kontextfrei</strong>er und regulärer Sprachen ist <strong>kontextfrei</strong><br />

(HMU Satz 7.27)<br />

• Komplement L ∈L2 ⇒ L ∈L2<br />

– Es ist L1∩L2 = L1∪L2<br />

– Bei Abgeschlossenheit unter Komplementbildung würde<br />

Abgeschlossenheit unter Durchschnitt folgen<br />

• Differenz: L1, L2 ∈L2 ⇒ L1−L2 ∈L2<br />

– Es ist L = Σ ∗ −L<br />

– Aus Abschluß unter Differenz folgt Abschluß unter Komplement<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 7 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Tests für Eigenschaften <strong>kontextfrei</strong>er Sprachen<br />

Welche Eigenschaften sind automatisch prüfbar?<br />

• Ist eine <strong>kontextfrei</strong>e Sprache leer?<br />

– Entspricht Test auf Erreichbarkeit von Endzuständen<br />

– Nicht ganz so einfach, da Stackinhalt die Erreichbarkeit beeinflußt<br />

• Zugehörigkeit: gehört ein Wort zur Sprache?<br />

– Verarbeitung durch Pushdown-Automaten ist nichtdeterministisch<br />

– Deterministische Pushdown-Automaten sind nicht mächtig genug<br />

– Frage nach Zugehörigkeit beinhaltet oft Frage nach Ableitungsbaum<br />

• Äquivalenz: sind zwei Typ-2 Sprachen identisch?<br />

– Zusammenfassen äquivalenter Zustände im PDA kaum durchführbar<br />

• Kontextfreie Grammmatiken sind zu kompliziert<br />

– Analyse braucht einfachere Versionen von Typ-2 Grammatiken<br />

– Bringe Grammatik auf “Normalform” (äquivalente einfachere Struktur)<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 8 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Die Chomsky Normalform<br />

Trenne Variablen von Terminalsymbolen<br />

• Grammatik in Chomsky-Normalform<br />

– Grammatik G= (V , T , P , S), bei der jede Produktion die Form<br />

A→B C oder A→a hat (A, B, C ∈V , a ∈T )<br />

– Grammatiken in Chomsky Normalform sind auch kontextsensitiv<br />

• Jede <strong>kontextfrei</strong>e Grammatik G mit ǫ ∈L(G) ist in<br />

Chomsky-Normalform transformierbar<br />

1. Eliminierung von ǫ-Produktionen A → ǫ<br />

2. Eliminierung von Einheitsproduktionen A → B<br />

3. Eliminierung unnützer Symbole<br />

4. Separieren von Terminalsymbolen und Variablen in Produktionen<br />

5. Aufspalten von Produktionen A → α mit |α|>2<br />

Aufblähung/Transformationszeit quadratisch relativ zur Größe von G<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 9 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


ǫ-Produktionen eliminieren<br />

• ǫ-Produktionen sind überflüssig, falls ǫ ∈L(G)<br />

– Variablen A ∈V mit A ∗<br />

−→ ǫ sind eliminierbar<br />

– Menge eliminierbarer Symbole kann iterativ bestimmt werden<br />

· Ist A → ǫ ∈ P dann ist A eliminierbar<br />

· Ist A→X1..Xn ∈ P und alle Xi eliminierbar, dann ist A eliminierbar<br />

– Verfahren terminiert nach maximal |V | + 1 Iterationen<br />

• Erzeuge Grammatik ohne eliminierbare Symbole<br />

– Für G= (V , T , P , S) bestimme alle eliminierbare Variablen<br />

– Für A→α ∈ P mit eliminierbaren Symbolen X1, ..,Xm in α erzeuge<br />

2 m Regeln A→αi1,..,i k ({i1,..,ik} Teilmenge von {1, ..,m})<br />

– Entferne alle Regeln der Form A → ǫ (auch neu erzeugte)<br />

– Wenn S eliminierbar ist, kann S ′ → S und S ′ → ǫ ergänzt werden<br />

• Erzeugte Grammatik ist äquivalent<br />

– Zeige A ∗<br />

−→ ′ w ⇔ A<br />

G ∗<br />

−→ w ∧ (w=ǫ ∨ A=S G ′ )<br />

durch Induktion über Länge der Ableitung<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 10 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Elimination von ǫ-Produktionen am Beispiel<br />

P = { S→AB, A→aAA | ǫ, B→bBB | ǫ }<br />

• Ermittlung eliminierbarer Symbole<br />

1.: A und B sind eliminierbar<br />

2.: S ist ebenfalls eliminierbar<br />

• Verändere Regeln der Grammatik<br />

– Aus S→AB wird S→AB | A | B<br />

– Aus A→aAA |ǫ wird A→aAA | aA | a<br />

– Aus B→bBB | ǫ wird B→bBB | bB | b<br />

Grammatik erzeugt L(G)−{ǫ} ohne ǫ-Produktionen<br />

• Ergänze neues Startsymbol<br />

– S war eliminierbar: ergänze Produktionen S ′ → S | ǫ<br />

Grammatik erzeugt L(G) mit initialer ǫ-Produktion<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 11 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Einheitsproduktionen eliminieren<br />

Einheitsproduktionen verlängern Ableitungen<br />

und verkomplizieren technische Beweise<br />

• Bestimme alle Einheitspaare (A,B) mit A ∗<br />

−→ B<br />

– Wie üblich ... iteratives Verfahren:<br />

· Alle Paare (A,A) für A ∈V sind Einheitspaare<br />

· Ist (A,B) Einheitspaar und B→C ∈ P dann ist (A,C) Einheitspaar<br />

– Verfahren terminiert nach maximal |V | + 1 Iterationen<br />

• Erzeuge Grammatik ohne Einheitsproduktionen A → B<br />

– Bestimme alle Einheitspaare in G<br />

– Für jedes Einheitspaar (A,B) erzeuge Produktionen<br />

{A→α | B→α ∈P keine Einheitsproduktion}<br />

• Erzeugte Grammatik ist äquivalent<br />

– Ableitungen in G ′ sind “Kurzformen” von Ableitungen in G<br />

Beweis, wie immer, durch Induktion über Länge der Ableitung<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 12 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Elimination von Einheitsproduktionen am Beispiel<br />

P ′ = { E → T | E+T , T → F | T∗F , F → I | (E)<br />

I → a | b | c | Ia | Ib | Ic | I0 | I1 }<br />

• Bestimme alle Einheitspaare (A,B) mit A ∗<br />

−→ B<br />

1.: (E,E), (T ,T ), (F ,F ) und (I,I) sind Einheitspaare<br />

2.: (E,T ), (T ,F ) und (F ,I) sind ebenfalls Einheitspaare<br />

3.: (E,F ) und (T ,I) sind ebenfalls Einheitspaare<br />

4.: (E,I) ist ebenfalls Einheitspaar<br />

5.: Keine weiteren Einheitspaare möglich<br />

• Erzeuge Grammatik ohne Einheitsproduktionen<br />

– Einheitspaare mit E: {E→E+T | T ∗F | (E) | a | b |c|Ia | Ib | Ic |I0 |I1}<br />

– Einheitspaare mit T : {T →T ∗F | (E) | a | b | c |Ia | Ib | Ic |I0 | I1}<br />

– Einheitspaare mit F : {F →(E) | a | b | c | Ia |Ib |Ic | I0 | I1}<br />

– Einheitspaare mit I: {I→a | b | c |Ia | Ib | Ic |I0 | I1}<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 13 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Unnütze Symbole eliminieren<br />

• X nützlich, falls S ∗<br />

−→ αXβ ∗<br />

−→ w ∈T ∗<br />

– Erzeugend (X ∗<br />

−→ v ∈T ∗ ) und erreichbar (S ∗<br />

−→ αXβ)<br />

• Beispiel: P = { S→AB | a, A→b }<br />

· Erreichbar: S, A, B, a, und b erzeugend: S, A, a, und b<br />

– Nach Elimination von B: { S→a, A→b }<br />

· Erreichbar: S und a erzeugend: S, A, a, und b<br />

– Nach Elimination von A: { S→a }<br />

· Erreichbar: S und a erzeugend: S und a<br />

Erzeugte Produktionenmenge ist äquivalent zu P<br />

• Eliminationsverfahren für G mit L(G)=∅<br />

– Eliminiere nichterzeugende Symbole und Produktionen, die sie enthalten<br />

– Eliminiere unerreichbare Symbole und Produktionen, die sie enthalten<br />

Resultierende Grammatik G ′ erzeugt dieselbe Sprache wie G<br />

G ′ enthält nur nützliche Symbole und S ∈V ′<br />

Also w ∈L(G) ⇔ S ∗<br />

−→ w ⇔ S G ∗<br />

−→ ′ w ⇔ w ∈L(G<br />

G ′ )<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 14 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Berechnung erzeugender/erreichbarer Symbole<br />

• Generiere Menge erzeugender Symbole iterativ<br />

– Alle Terminalsymbole a ∈T sind erzeugend<br />

– Ist A→X1..Xn ∈ P und alle Xi erzeugend, dann ist A erzeugend<br />

– Verfahren terminiert nach maximal |V | + 1 Iterationen<br />

• Generiere Menge erreichbarer Symbole iterativ<br />

– S ist erreichbar<br />

– Ist A→X1..Xn ∈ P und A erreichbar dann sind alle Xi erreichbar<br />

– Verfahren terminiert nach maximal |V | + |T | Iterationen<br />

• Beispiel: P = { S→AB | a, A→b }<br />

– Erzeugende Symbole: 1.: a und b sind erzeugend<br />

2.: S und A sind ebenfalls erzeugend<br />

3.: Keine weiteren Symbole sind erzeugend<br />

– Erreichbare Symbole: 1.: S ist erreichbar<br />

2.: A, B und a sind ebenfalls erreichbar<br />

3.: b ist ebenfalls erreichbar<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 15 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Erzeugung der Chomsky-Normalform<br />

Nur Produktionen der Form A→B C oder A→a<br />

• Jede <strong>kontextfrei</strong>e Grammatik G ist umwandelbar in eine<br />

äquivalente Grammatik ohne unnütze Symbole, (echte)<br />

ǫ-Produktionen und Einheitsproduktionen<br />

– Falls L(G) = ∅, wähle G ′ = (V , T , ∅, S) (Test auf ∅ später)<br />

– Sonst eliminiere ǫ-Produktionen, Einheitsproduktionen, unnütze Symbole<br />

• Separiere Terminalsymbole von Variablen<br />

– Für jedes Terminalsymbol a ∈T erzeuge neue Variable Xa<br />

– Ersetze Produktionen A→α mit |α|≥2 durch A→α X (a ∈T ersetzt durch Xa)<br />

– Ergänze Produktionen Xa→a für alle a ∈T<br />

• Spalte Produktionen A → α mit |α|>2<br />

– Ersetze jede Produktion A→X1..Xk durch k−1 Produktionen<br />

A→X1Y1, Y1→X2Y2, ...Yk−2→Xk−1Xk, wobei alle Yi neue Variablen<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 16 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Erzeugung der Chomsky-Normalform am Beispiel<br />

P = {E→E+T | T∗F | (E) | a | b | c | Ia | Ib | Ic | I0 | I1<br />

T→T∗F | (E) | a | b | c | Ia | Ib | Ic | I0 | I1<br />

F→(E) | a | b | c | Ia | Ib | Ic | I0 | I1<br />

I→a | b | c | Ia | Ib | Ic | I0 | I1 }<br />

• Separiere Terminalsymbole von Variablen<br />

P ′ = {E→EX+T | TX∗F | X (EX ) | a |b|c|IXa |IXb |IXc | IX0 | IX1<br />

T →TX∗F | X (EX ) | a |b|c|IXa | IXb | IXc |IX0 |IX1<br />

F →X (EX ) | a | b | c |IXa | IXb | IXc | IX0 |IX1<br />

I→a |b|c|IXa | IXb | IXc |IX0 |IX1<br />

Xa→a, Xb→b,Xc→c, X0→0,X1→1, X+→+,X∗→∗,X (→(,X )→) }<br />

• Spalte Produktionen A → α mit |α|>2<br />

P ′ = {E→EY1 | TY2 | X (Y3 | a |b|c|IXa | IXb | IXc |IX0 | IX1<br />

T →TY2 | X (Y3 | a | b |c|IXa | IXb | IXc |IX0 |IX1<br />

F →X (Y3 | a | b | c |IXa | IXb | IXc | IX0 |IX1<br />

I→a |b|c|IXa | IXb | IXc |IX0 |IX1<br />

Y1→X+T, Y2→X∗F, Y3→EX )<br />

Xa→a, Xb→b,Xc→c, X0→0,X1→1, X+→+,X∗→∗,X (→(,X )→)}<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 17 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Tests für Eigenschaften <strong>kontextfrei</strong>er Sprachen<br />

• Ist eine <strong>kontextfrei</strong>e Sprache leer?<br />

– Für G = (V , T , P , S) gilt<br />

L(G) ist leer genau dann wenn S nicht erzeugend ist<br />

– Menge erzeugender Variablen kann iterativ bestimmt werden<br />

– Mit speziellen Datenstrukturen ist Test in linearer Zeit durchführbar<br />

• Gehört ein Wort zu einer <strong>kontextfrei</strong>en Sprache?<br />

– Naive Methode für den Test w ∈L(G):<br />

1. Erzeuge Chomsky-Normalform G ′ von G<br />

(Details ins HMU §7.4.3)<br />

2. In G ′ erzeuge alle Ableitungsbäume mit 2|w| − 1 Variablenknoten<br />

3. Teste, ob einer dieser Bäume das Wort w erzeugt<br />

– Hochgradig ineffizient, da exponentiell viele Bäume zu erzeugen<br />

– Iterative Analyseverfahren sind besser<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 18 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Syntaxanalyse: COCKE-YOUNGER-KASAMI ALGORITHMUS<br />

Bestimme Variablenmengen, aus denen w i..w j ableitbar<br />

• Eingabe: Grammatik G = (V, T, P, S) in Chomsky-NF, w ∈T ∗<br />

• Berechne Mengen Vi,j = {A ∈V | A ∗<br />

−→ wi...wj} iterativ<br />

j=i: Vi,i = {A ∈V | A→wi ∈P}<br />

j>i: Vi,j = {A ∈V |<br />

∃i≤k


Der CYK-Algorithmus am Beispiel<br />

{ S → AB|BC, A → BA|a, B → CC|b, C → AB|a }<br />

• Prüfe w = baaba ∈L(G)<br />

• Berechne V i,j = {A ∈V | A ∗<br />

−→ w i...w j}<br />

{S, A, C}<br />

— {S, A, C}<br />

— {B} {B}<br />

{S, A} {B} {S, C} {S, A}<br />

{B} {A, C} {A, C} {B} {A, C}<br />

b a a b a<br />

• S ∈V1,5, also w ∈L(G)<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 20 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Unentscheidbare Probleme für Typ-2 Sprachen<br />

Die folgenden Probleme können nicht getestet werden<br />

• L(G) = T ∗ Welche Menge beschreibt G?<br />

• L(G1) = L(G2) Äquivalenz von Grammatiken<br />

• L(G1)⊆L(G2)<br />

• L(G1)∩L(G2) = ∅<br />

• L(G) ∈L3<br />

• L(G) ∈L2<br />

• L(G1)∩L(G2) ∈L2<br />

<strong>kontextfrei</strong>es Komplement?<br />

<strong>kontextfrei</strong>er Schnitt ?<br />

Beweise brauchen Berechenbarkeitstheorie / TI-2<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 21 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Grenzen <strong>kontextfrei</strong>er Sprachen<br />

Warum ist L = {0 n 1 n 2 n | n ∈ N} nicht <strong>kontextfrei</strong>?<br />

• Typ-2 Grammatiken arbeiten lokal<br />

– Anwendbarkeit einer Produktion hängt nur von einer Variablen ab<br />

(der Kontext der Variablen ist irrelevant)<br />

– Eine Regel kann nur an einer Stelle im Wort etwas erzeugen<br />

– Eine Typ-2 Grammatik kann entweder 0/1 oder 1/2 simultan erhöhen<br />

aber nicht beides gleichzeitig<br />

– Grammatik müßte die Anzahl der 0/1 oder 1/2 im Voraus bestimmen<br />

und diese Anzahl für die 2 bzw. 0 im Namen der Variablen codieren<br />

• Grammatiken sind endlich<br />

– Es gibt nur endlich viele Variablen<br />

– Für n>|V | muß eine Variable X doppelt benutzt worden sein<br />

zur Codierung von 0 n 1 n und 0 i 1 i mit i


Das Pumping Lemma für <strong>kontextfrei</strong>e Sprachen<br />

Wie zeigt man, daß eine Sprache nicht <strong>kontextfrei</strong> ist?<br />

• Für jede <strong>kontextfrei</strong>e Sprache L ∈L2 gibt es eine Zahl n ∈N, so daß<br />

jedes Wort z ∈L mit Länge |z|≥n zerlegt werden kann in<br />

z = u v w x y mit den Eigenschaften<br />

(1) v◦x=ǫ,<br />

(2) |v w x|≤n und<br />

(3) für alle i ∈N ist u v i w x i y ∈ L<br />

• Aussage ist wechselseitig konstruktiv<br />

– Die Zahl n kann zu jeder <strong>kontextfrei</strong>en Sprache L bestimmt werden<br />

– Die Zerlegung z = u v w xy kann zu jedem Wort z ∈L bestimmt werden<br />

• Beweis benötigt Chomsky-Normalform<br />

– Ableitungen der Länge k können maximal Wörter der Länge 2 k erzeugen<br />

– Ableitungen der Länge k>|V | benutzen ein Hilfssymbol X doppelt<br />

– Die Schleife der Ableitung von X aus X kann beliebig wiederholt werden<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 23 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Beweis des Pumping Lemmas<br />

Für jede Sprache L ∈L2 gibt es ein n ∈N, so daß jedes z ∈L<br />

mit Länge |z|≥n zerlegt werden kann in z = u v w x y mit<br />

(1) v◦x=ǫ, (2) |v w x|≤n (3) u v i w x i y ∈ L für alle i ∈N<br />

Beweis mit Grammatiken in Chomsky-Normalform<br />

– Für L = ∅ oder L = {ǫ} gilt die Behauptung trivialerweise<br />

– Andernfalls sei G= (V , T , P , S) in Chomsky-Normalform mit L = L(G)<br />

– Wähle n=2 |V | und betrachte z=z1..zm mit |z|≥n<br />

– Dann hat jeder Ableitungsbaum für z eine Tiefe von mindestens |V |+1<br />

– Sei X0, ...Xk die Folge der verarbeiteten Variablen auf dem längsten Pfad<br />

Dann erscheint eine Variable zweimal: Xi = Xj für ein i


Anwendungen des Pumping Lemmas<br />

• L = {0 m 1 m 2 m | m ∈ N} ist nicht <strong>kontextfrei</strong><br />

– Verwende Kontraposition des Pumping Lemmas<br />

(∀n ∈N. ∃z ∈L. |z|≥n ∧ ∀u,v,w,x, y ∈T ∗ .(z = u v w x y<br />

∧ v◦x=ǫ ∧ |v w x|≤n) ⇒ ∃i ∈N. u v i w x i y ∈ L) ⇒ L ∈L2<br />

– Sei n ∈N beliebig. Wir wählen z = 0 m 1 m 2 m für ein m>n<br />

– Sei u,v,w,x, y ∈T ∗ beliebig mit z = uv w x y,<br />

und (1) v◦x=ǫ und (2) |v w x|≤n<br />

– Wir wählen i = 0 und zeigen uw y = u v i w x i y ∈ L<br />

– Wegen (2) enthält v w x keine Nullen oder keine Zweien<br />

· Falls v w x keine Null enthält, dann enthält u w y genau m Nullen<br />

aber wegen (1) weniger Einsen und/oder Zweien<br />

· Falls v w x keine Zwei enthält, dann enthält u w y genau m Zweien<br />

aber wegen (1) weniger Nullen und/oder Einsen<br />

– Damit kann u w y = u v 0 w x 0 y nicht zu L gehören<br />

– Mit dem Pumping Lemma folgt nun, daß L nicht <strong>kontextfrei</strong> ist<br />

• L ′ = { ww | w ∈{0, 1} ∗ } ∈ L2<br />

– Ähnliches Argument mit Wörtern der Form 0 m 1 m 0 m 1 m<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 25 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN


Rückblick: Eigenschaften <strong>kontextfrei</strong>er Sprachen<br />

Kontextfreie Sprachen sind deutlich komplizierter<br />

• Abschlußeigenschaften<br />

– Operationen ∪, R , ◦, ∗ , σ, h −1 erhalten Kontextfreiheit von Sprachen<br />

– Keine Abgeschlossenheit unter ∩, , -<br />

• Automatische Prüfungen<br />

– Man kann testen ob eine <strong>kontextfrei</strong>e Sprache leer ist<br />

– Man kann testen ob ein Wort zu einer <strong>kontextfrei</strong>en Sprache gehört<br />

– Man kann nicht testen ob zwei <strong>kontextfrei</strong>e Sprachen gleich sind<br />

Viele wichtige Fragen sind nicht automatisch prüfbar<br />

• Pumping Lemma<br />

– Wiederholt man bestimmte Teile genügend großer Wörter einer <strong>kontextfrei</strong>en<br />

Sprache beliebig oft, so erhält man immer ein Wort der Sprache<br />

– Konsequenz: viele einfache Sprachen sind nicht <strong>kontextfrei</strong><br />

Für diese sind aufwendigere Mechanismen erforderlich ↦→ TI-2<br />

THEORETISCHE INFORMATIK I §3: KONTEXTFREIE SPRACHEN 26 EIGENSCHAFTEN KONTEXTFREIER SPRACHEN

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!