Wolfgang Hönig / Andreas Ecke WS 09/10
Übung Algorithmen und Datenstrukturen
4. Übung: Zusatzaufgaben
1. Sei E = (V,Σ, S, R) mit V = {S, A},Σ = {a} und R = {S ::= Aa, A ::= S}.
Berechnen Sie die syntaktischen Kategorien W(E, S) und W(E, A) mit Hilfe der Fixpunktsemantik.
2. Zur Bestimmung der Sprache die durch eine EBNF beschrieben wird, wurde in der Vorlesung die über den „induktiven Aufbau von EBNF-Termen definierten Regeln zur Bestimmung von Objektsprachen“ sowie die Fixpunktsemantik eingeführt.
Was unterscheidet die beiden Verfahren und wann sind sie anwendbar?
3. Geben Sie eine EBNFE an, welche die Sprache die das leere Wort enthält beschreibt.
Zeigen Sie mit den Regeln zur Bestimmung von Objektsprachen oder der Fixpunkt- semantik, dass ihre Definition korrekt ist.
Hinweis: Es ist das logisches Oder gemeint.
4. Sei E = (V,Σ, S, R) mit V = {S, A, B},Σ = {a, b, c} und R = {S ::= aAa, A ::=
bBb, B ::= c}. Bestimmen Sie die formale Sprache (als Menge von Wörtern), mit Hilfe der Regeln zur Bestimmung von Objektsprachen und der Fixpunktsemantik.
Welches Verfahren ist besser geeignet?
Lösungen
1. Es entsteht nach jedem Schritt W(E, S) = W(E, A) = ∅. Dies ist insofern nicht verwunderlich, da der Algorithmus zur Sprachenerzeugung nie abbrechen würde (Endlosrekursion.).
2. Die Regeln zur Bestimmung von Objektsprachen ist nur anwendbar, wenn keine Abhängigkeiten zwischen den einzelnen Regeln vorhanden sind. Das heißt insbe- sondere, dass es mindestens eine Regel geben muss, die keine syntaktische Variable enthält.
Die Fixpunktsemantik hingegen funktioniert auch in den anderen Fällen, da sie schrittweise arbeitet. Durch die schrittweise Abarbeitung ist es allerdings auch nicht möglich nach endlich vielen Schritten eine unendliche Sprache eindeutig zu definie- ren (Falls man eine Vermutung hat, kann jedoch vorzeitig ein Induktionsbeweis geführt werden.). Die Regeln zur Bestimmung von Objektsprachen liefern dagegen nach endlich vielen Schritten ein eindeutiges (und richtiges) Ergebnis.
Übersicht
Regeln zur Bestimmung von Objektsprachen
Fixpunktsemantik anwendbar falls es keine Abhängigkeiten
zwischen den Regeln gibt
immer
Terminierung nach endlich vielen Schritten Nie (aber nach Vermutung Ab- bruch und Induktionsbeweis möglich.)
Korrektheit bei korrekter Regelanwendung korrekt; kein Beweis nötig.
Induktionsbeweis nötig
3. E = (V,Σ, S, R)mit V ={S},Σ ={a} und R ={S ::= ˆ[Sˆ]} Beweis mit Fixpunktsemantik:
W(E, S)
(∅) 7→f ({}) 7→f ({}) 7→f . . . 7→f ({}) Hinweis: streng genommen ist noch ein Induktionsbeweis nötig.
Beweis mit Regeln zur Bestimmung von Objektsprachen:
JSK(ρ) = Jˆ[Sˆ]K=JSK(ρ)∪ {}=ρ(S)∪ {} ⇒ keine abschließender Beweis möglich, da ρ(S) unbekannt!
4. Fixpunktsemantik:
W(E, S) W(E, A) W(E, B)
∅
∅
∅
7→f
∅
∅ {c}
7→f
∅ {bcb}
{c}
7→f
{abcba}
{bcb}
{c}
7→f . . .7→f
{abcba}
{bcb}
{c}
⇒W(E, S) ={abcba}
Beweis mit Regeln zur Bestimmung von Objektsprachen:
JSK(ρ) = JaAaK(ρ) =JaK(ρ)JAK(ρ)JaK(ρ) = {a}JAK(ρ){a}
⇒: Nebenrechnung 1:
JAK(ρ) =JbBbK(ρ) =JbK(ρ)JBK(ρ)JbK(ρ) ={b}JBK(ρ){b}
⇒: Nebenrechnung 2:
JBK(ρ) =JcK(ρ) = {c}
Damit ergibt sich für Nebenrechnung 1:
JAK(ρ) ={b}JBK(ρ){b}={b}{c}{b}={bcb}
Damit ergibt sich gesamt:
JSK(ρ) = {a}JAK(ρ){a}={a}{bcb}{a}={abcba}
In diesem Spezialfall eignen sich beide Verfahren gleich gut.