Automaten, Formale Sprachen und Berechenbarkeit I
Automaten, Formale Sprachen und Berechenbarkeit I
Automaten, Formale Sprachen und Berechenbarkeit I
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 → αγβ