Kontextfreie Sprachen & Kellerautomaten
Kontextfreie Sprachen & Kellerautomaten
Kontextfreie Sprachen & Kellerautomaten
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Elimination von nutzlosen Symbolen<br />
Sei G = (!, N, P, S) eine kontextfreie Grammatik.<br />
X ! ! " N ist nützlich in G, wenn es eine Ableitung<br />
S ) * uXv ) * w mit w ! !* gibt,<br />
d.h. X tritt in einer Satzform einer Ableitung von S zu einer terminalen Zeichenkette<br />
auf. Wenn X nicht nützlich ist, dann bezeichnen X wir als nutzlos.<br />
1. Die Sprache L(G) ist durch die Ableitungen von S zu terminalen Zeichenketten<br />
gegeben (Def. 13.4). Wenn X nutzlos ist, kommt X in keiner Ableitung von S zu<br />
einer terminalen Zeichenkette vor.<br />
Also kann X aus der Grammatik entfernt werden, d.h. X wird aus ! " N entfernt,<br />
und alle Regeln, in denen X auftritt, werden ebenfalls entfernt.<br />
2. Es gibt zwei Eigenschaften, die die Nützlichkeit eines Symbols ausmachen:<br />
a. X ist erzeugend, wenn X ) * w für ein w ! !*.<br />
[Da a ) * a für alle a ! !, sind alle terminalen Symbole erzeugend.]<br />
b. X ist erreichbar, wenn es eine Ableitung S ) * uXv gibt,<br />
mit u,v ! (! " N)*.<br />
# Wir werden zuerst alle nicht-erzeugenden und dann alle nicht-erreichbaren<br />
Symbole eliminieren.<br />
FGI-1 Habel / Eschenbach Kap 13 <strong>Kontextfreie</strong> <strong>Sprachen</strong> & Grammatiken [31]<br />
Elimination von nutzlosen Symbolen: Beispiel<br />
Grammatik G ist gegeben durch die Regeln:<br />
S # AB | a A# b<br />
Eliminationsreihenfolge<br />
nicht-erzeugende " nicht-erreichbare nicht-erreichbare " nicht-erzeugende "<br />
Bestimmung der erzeugenden Symbole<br />
• S, A wegen S ) * a bzw. A ) * b<br />
a, b da Terminalsymbole<br />
Elimination der nicht-erzeugenden<br />
Symbole: B<br />
• S # a A# b<br />
Bestimmung der erreichbaren Symbole<br />
• S, a wegen S ) * a<br />
Elimination der nicht-erreichbaren<br />
Symbole: A, b<br />
• S # a<br />
Bestimmung der erreichbaren Symbole<br />
• S, a wegen S ) * a<br />
A, B, b wegen S ) * AB ) * bB<br />
Keine Elimination nicht-erreichbarer<br />
Symbole notwendig<br />
Bestimmung der erzeugenden Symbole<br />
• S, A wegen S ) * a bzw. A ) * b<br />
a, b da Terminalsymbole<br />
Elimination der nicht-erzeugenden<br />
Symbole: B<br />
• S # a A# b<br />
Enthält zwei nutzlose Symbole<br />
FGI-1 Habel / Eschenbach Kap 13 <strong>Kontextfreie</strong> <strong>Sprachen</strong> & Grammatiken [32]