kontextfrei
kontextfrei
kontextfrei
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