27.11.2014 Aufrufe

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

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.

70 KAPITEL 3. KONTEXTFREIE SPRACHEN<br />

<strong>und</strong>α ∈ V ∗ besser geeignet, da man sich bei der Wahl der nächste Regel am nächsten Zeichen a<br />

des Wortes orientieren kann. Dabei wird in jedem Ableitungsschritt genau ein Terminalzeichen<br />

erzeugt. Für eine Grammatik mit Produktionen der obigen Form sagen wir, die Grammatik sei<br />

in Greibach-Normalform.<br />

Trotz dieser praktisch klingenden Motivation ist die Greibach-Normalform nicht von großem praktischen<br />

Nutzen. Sie erleichtert uns jedoch die Herstellung des Zusammenhangs zwischen kontextfreien<br />

<strong>Sprachen</strong> <strong>und</strong> Kellerautomaten.<br />

Vorbereitende Überlegungen Für den Beweis der Existenz der Greibach-Normalform benötigen<br />

wir einige weitere äquivalente Umformungen von Grammatiken.<br />

Beispiel 3.5<br />

Die erste Produktion der Grammatik auf der linken Seite ist nicht in Greibach-Normalform.<br />

Offensichtlich wird aber das B der rechten Seite dieser Produktion entweder durch b oder bA<br />

ersetzt; wir können also die Produktion A → BC durch zwei Produktionen A → bC <strong>und</strong><br />

A → bAC ersetzen, wie dies in der rechten Grammatik dargestellt ist.<br />

A → BC<br />

B → b | bA<br />

C → c | cB<br />

<br />

A → bC | aAC<br />

B → b | aA<br />

C → c | cB<br />

Durch diese Transformation werden zwei Ableitungsschritte der linken Grammatik A ⇒ BC ⇒<br />

bC bzw. A ⇒ BC ⇒ bAC zu einem Ableitungsschritt A ⇒ bC bzw. A ⇒ bAC zusammengefaßt.<br />

Diese Zusammenfassung von Ableitungsschritten durch Substitution einer Variablen durch alle<br />

ihre rechten Seiten können wir noch etwas allgemeiner wie folgt formulieren:<br />

Lemma 3.14 (Substitution auf der rechten Seite einer Produktion) Sei G = (V, Σ, P, S) eine<br />

kontextfreie Grammatik, A → αBβ eine Produktion von G mit α, β ∈ (V ∪ Σ) ∗ <strong>und</strong><br />

B ∈ V . Sei R B = {γ ∈ (V ∪ Σ) ∗ | B → γ ∈ P } die Menge aller rechten Seiten von B<br />

<strong>und</strong> P ′ = (P \ {A → αBβ}) ∪ {A → αγβ | γ ∈ R B } <strong>und</strong> G ′ = (V, Σ, P ′ , S). Dann gilt<br />

L(G ′ ) = L(G).<br />

Beweis: Wir beweisen die Gleichheit, indem wir die Inklusion in beide Richtungen zeigen:<br />

„⊆“: Wir zeigen, daß mit w ∈ L(G ′ ) auch w ∈ L(G) gilt. Da G alle Produktionen aus G ′ bis<br />

auf die Produktionen A → αγβ mit γ ∈ R B enthält, genügt es zu zeigen, daß wir diese<br />

Produktion in G simulieren können: A ⇒ G αBβ ⇒ G αγβ.<br />

„⊇“: Wir zeigen, daß mit w ∈ L(G) auch w ∈ L(G ′ ) gilt. Dazu betrachten wir einen Ableitungsbaum<br />

für w in G. Wenn in dem Baum die Produktion A → αBβ nicht (als Verzweigung)<br />

vorkommt, ist der Baum auch ein Ableitungsbaum in G ′ (weil G ′ alle Produktionen<br />

von G außer A → αBβ enthält), <strong>und</strong> damit w ∈ L(G ′ ).<br />

Wir betrachten nun einen Ausschnitt eines Baumes, in dem die Produktion A → αBβ als<br />

Verzweigung vorkommt. Ein solcher Teilausschnitt ist auf der linken Seite von Abb. 3.4<br />

dargestellt. Dabei muß für γ eine Produktion B → γ existieren. Also ist A → αγβ

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!