Kontextfreie Sprachen & Kellerautomaten

informatik.uni.hamburg.de

Kontextfreie Sprachen & Kellerautomaten

Kontextfreie Sprachen & Kellerautomaten

! Stand 26.6.2007

Im Verlauf der Vorlesungen zu diesem Kapitel werden Änderungen und Ergänzungen

erfolgen.

Sie sollten daher sorgfältig auf Unterschiede zwischen den Vorversionen und der

Endversion achten.

FGI-1, SoSe 2007, Habel / Eschenbach


Kontextfreie Sprachen

Die Klasse der kontextfreien Sprachen über dem Alphabet $ (bezeichnet durch kfS $ )

• bildet eine weitere Teilklasse der formalen Sprachen, die die regulären

Sprachen umfasst: REG $ % kfS $

Kontextfreie Sprachen

• werden durch kontextfreie Grammatiken erzeugt

o Die Wörter / Sätze, die von kontextfreien Grammatiken erzeugt werden,

besitzen eine syntaktische Struktur, die für die Verwendung der Sprache

wichtig ist. (! logische Formeln, arithmetische Ausdrücke)

o Parsing bezeichnet den Vorgang der Zuweisung einer syntaktischen

Struktur für eine Zeichenkette. (Parsing basiert auf Grammatiken)

• werden durch einen spezifischen Typ von Automaten, die (nichtdeterministischen)

Kellerautomaten, akzeptiert

• besitzen andere Abschlusseigenschaften als die regulären Sprachen

• Nichtzugehörigkeit zu kfS $ kann durch ein Pumpinglemma (für kontextfreie

Sprachen) getestet werden

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [1]

Kontextfreie Grammatiken

Definition 13.1 (! Def. 1.6)

Eine kontextfreie Grammatik G ist ein 4-Tupel (!, N, P, S), für das gilt:

• ! ist ein Alphabet, genannt das Alphabet der Terminalsymbole

• N ist ein Alphabet (von Nichtterminalsymbolen), das disjunkt zu ! ist

• P ist eine endliche Menge von Produktionsregeln (auch als Regeln bezeichnet),

wobei jede Regel ein Paar (A, w) ist, mit A ! N und w ! ( ! " N )*

• S ! N heißt Startsymbol

Anmerkungen

Kontextfreie Grammatik wird auch durch kfG oder CFG abgekürzt.

• Nichtterminale werden auch als Variable bezeichnet.

• Regeln werden im Weiteren in der Form A # w geschrieben.

• A wird als linke und w als rechte Seite der Regel bezeichnet.

• Regeln, die die gleiche linke Seite haben, d.h. die Ableitungen vom gleichen

nichtterminalen Symbol betreffen, werden häufig „zusammengefasst“ (siehe

nächste Folie)

• Auch A # " ist eine zulässige Regel (für kontextfreie Grammatiken)

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [2]


Zwei Grammatiken für Arithmetische Ausdrücke

G 4 = (!, N, P, &EXPR')

! = { a, + , (, (, ) } N = {&EXPR'}

P = { &EXPR' # &EXPR' + & EXPR ', &EXPR' # &EXPR' ( & EXPR ',

&EXPR' # ( &EXPR' ), &EXPR' # a }

Die Regeln in zusammengefasster Form:

P = { &EXPR' # &EXPR' + & EXPR ' | &EXPR' ( & EXPR ' | ( &EXPR' ) | # a }

G 3 = (!, N, P, &EXPR')

! = { a, + , (, (, ) }

N = {&EXPR', &TERM', &FACTOR'}

P = { &EXPR' # &EXPR' + &TERM' | &TERM',

&TERM' # &TERM' ( &FACTOR' | &FACTOR',

&FACTOR'# ( &EXPR' ) | a }

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [3]

Regelanwendung, Ableitung

Definition 13.2 (! Def. 1.7)

Seien u, v, w Zeichenketten über ( ! " N ), und A # w eine Regel (einer Grammatik).

Durch die Anwendung der Regel kann aus dem Wort uAv das Wort uwv (direkt)

abgeleitet werden.

Man sagt auch: Die Regel A # w führt vom Wort uAv zum Wort uwv, bzw. das

Nichtterminal / die Variable A wird durch die Regel zu w expandiert.

• Die Regelanwendung wird auch als Ableitung (in einem Schritt) bezeichnet,

und als uAv ) uwv geschrieben.

Wenn u = v oder wenn eine Folge u ) u 1 )u 2 )… ) u k ) v existiert (mit k ! 0),

so ist v aus u (in gegebenenfalls mehreren Schritten) ableitbar. Dieses wird durch

u ) * v notiert. Die Sequenz u ) u 1 )u 2 )… ) u k ) v wird als Ableitung

(derivation) bezeichnet.

• Derartige Ableitungen sind stets von endlicher Länge (endliche Anzahl von

Schritten); die Ableitungssequenz kann aber beliebige Länge haben.

• Zeichenketten w über ( ! " N ), für die eine Ableitung S ) * w, existiert, werden als

Satzformen bezeichnet.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [4]


Ableitungen für Arithmetische Ausdrücke in L(G4)

G 4 = (!, N, P, &EXPR')

! = { a, + , (, (, ) } N = {&EXPR'}

P = { &EXPR' # &EXPR' + & EXPR ' | &EXPR' ( & EXPR ' | ( &EXPR' ) | # a }

Ableitungen für a + a + a ! L(G 4 )

&EXPR' ) &EXPR' + & EXPR '

) &EXPR' + &EXPR' + & EXPR '

) a + &EXPR' + & EXPR '

) a + a + & EXPR '

) a + a + a

&EXPR' ) &EXPR' + & EXPR '

) &EXPR' + &EXPR' + & EXPR '

) &EXPR' + &EXPR' + a

) &EXPR' + a + a

) a + a + a

&EXPR'

) &EXPR' + & EXPR '

) &EXPR' + &EXPR' + & EXPR '

) a + &EXPR' + & EXPR '

) a + &EXPR' + a

) a + a + a

" Es gibt – im Allgemeinen – keine

Festlegung, welches Nichtterminal

durch die Regelanwendung

expandiert wird.

Satzformen betreffen (Zwischen-)resultate des Ableitungsprozesses.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [5]

Linksableitung – Rechtsableitung

Definition 13.3

Wird in einer Ableitung (Ableitungssequenz) stets die am weitesten links (rechts)

auftretende Variable expandiert wird, so wird die Ableitung als Linksableitung /

Rechtsableitung (leftmost / rightmost derivation) bezeichnet.

Wir verwenden die Symbole ) lm bzw. ) rm für Ableitungsschritte und ) * lm bzw.

) * rm für Ableitungssequenzen, die bzgl. leftmost oder rightmost festgelegt sind.

Linksableitung

&EXPR' ) lm &EXPR' + & EXPR '

) lm &EXPR' + &EXPR' + & EXPR '

) lm a + &EXPR' + & EXPR '

) lm a + a + & EXPR '

) lm a + a + a

Rechtsableitung

&EXPR' ) rm &EXPR' + & EXPR '

) rm &EXPR' + &EXPR' + & EXPR '

) rm &EXPR' + &EXPR' + a

) rm &EXPR' + a + a

) rm a + a + a

Satz (ohne Beweis): Zu jeder Ableitung existiert eine äquivalente Linksableitung und

eine äquivalente Rechtsableitung. D.h.: Für eine Zeichenkette v gilt u ) * v genau

dann, wenn u ) * lm v und genau dann, wenn u )* rm v.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [6]


Von einer Grammatik erzeugte Sprache

Definition 13.4 (! Def. 1.8)

Sei G = (!, N, P, S) eine kontextfreie Grammatik, so ist

L(G) = { w ! !* | S ) * w }

die von G erzeugte Sprache.

Ableitungsbäume / Strukturbäume (Parse trees)

Sei A # w eine Regel, mit |w| = k,

wobei w = w 1 w 2 …w k die Darstellung von w durch Symbole des Alphabets ist.

Dann existiert ein zu A # w 1 w 2 …w k korrespondierender Baum

des Verzweigungsgrades k mit Tiefe 2,

der Wurzel A und den Blättern w 1 , w 2 , … ,w k .

Sei S ) u 1 )u 2 )… ) u w 1 w 2 w k

k ) w die Ableitung

eines Wortes w ! L(G), so kann ein Ableitungsbaum (Strukturbaum) zu dieser

Ableitung gebildet werden, indem die zu den verwendeten Regeln korrespondierenden

Bäume „konkateniert“ werden.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [7]

A

Beispiel: Arithmetische Ausdrücke in L(G4)

Für a + a ( a ! L(G 4 ) gibt Ableitungen mit unterschiedlichen Ableitungsbäumen.

Die unterschiedlichen Strukturbäume entsprechen unterschiedlichen Bedeutungen.

&EXPR' ) &EXPR' + & EXPR '

) &EXPR' + &EXPR' ( & EXPR '

) a + &EXPR' ( & EXPR '

) a + a ( & EXPR '

) a + a ( a

ist keine Linksableitung

&EXPR' ) &EXPR' ( & EXPR '

) &EXPR' + &EXPR' ( & EXPR '

) a + &EXPR' ( & EXPR '

) a + a ( & EXPR '

) a + a ( a

ist eine Linksableitung

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [8]


Mehrdeutigkeit (Ambiguität)

Definition 13.5

Eine Zeichenkette w ist mehrdeutig, bzw. wird durch eine kfG G mehrdeutig

abgeleitet, falls w zwei (oder mehr) verschiedene Linksableitungen besitzt.

Eine Grammatik G ist mehrdeutig, falls es Wörter w ! L(G) gibt, die mehrdeutig sind.

a + a ( a ! L(G 4 )

&EXPR' ) lm &EXPR' + & EXPR '

) lm a + &EXPR'

) lm a + &EXPR' ( & EXPR '

) lm a + a ( & EXPR '

) lm a + a ( a

ist eine Linksableitung

# Die Grammatik G 4 ist mehrdeutig.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [9]

Zum Selbststudium: Arithmetische Ausdrücke in L(G3)

G 3 = (!, N, P, &EXPR') ! = { a, + , (, (, ) } N = {&EXPR', &TERM', &FACTOR'}

P = { &EXPR' # &EXPR' + &TERM' | &TERM',

&TERM' # &TERM' ( &FACTOR' | &FACTOR',

&FACTOR'# ( &EXPR' ) | a }

&EXPR' ) lm &EXPR' + &TERM'

) lm &TERM' + &TERM'

) lm &FACTOR' + &TERM'

) lm a + &TERM'

) lm a + &TERM' ( &FACTOR'

) lm a + &FACTOR' ( &FACTOR'

) lm a + a ( &FACTOR'

) lm a + a ( a

ist eine Linksableitung

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [10]


Zum Selbststudium: Arithmetische Ausdrücke in L(G3) Forts.

• Führen Sie eine Linksableitung der Zeichenkette (a + a) ( a durch und

konstruieren Sie den korrespondierenden Strukturbaum.

• Machen Sie sich klar, inwiefern die beiden Strukturbäume

zu a + a ( a bzw. zu (a + a) ( a

zu unterschiedlichen Auswertungen, d.h. Berechnungen der Werte der

arithmetischen Ausdrücke führen.

Die Grammatik G 3 ist so entworfen, dass Zeichenketten eindeutig sind und somit eine

eindeutige Bedeutung haben.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [11]

Parsing

Das Parsingproblem:

Gegeben eine kontextfreie Grammatik G und eine Zeichenkette w.

• Jede Ableitung S ) * w bestimmt einen Strukturbaum, d.h. eine syntaktische

Struktur, zu w.

Die Parsingaufgabe: Bestimme die syntaktische(n) Struktur(en) von w bzgl. G.

Anmerkungen

• Wenn G nicht mehrdeutig ist, dann hat jedes Wort w ! L(G) genau einen

korrespondierenden Strukturbaum.

• Der Prozess des Parsings weist nur Wörtern aus L(G) syntaktische Strukturen zu,

d.h. für Zeichenketten w * L(G) sollte der Parser die Nichtzugehörigkeit zu

L(G) ausweisen.

• Parsing ist – in gewisser Weise – eine Umkehrung der Generierung von

Zeichenketten bei gleichzeitiger Zuweisung der syntaktischen Struktur.

Wir werden in einem späteren Abschnitt detaillierter aufs Parsing eingehen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [12]


Parsing Beispiel: Arithmetische Ausdrücke in L(G3)

G 3 = (!, N, P, &EXPR') ! = { a, + , (, (, ) } N = {&EXPR', &TERM', &FACTOR'}

P = { &EXPR' # &EXPR' + &TERM' | &TERM',

&TERM' # &TERM' ( &FACTOR' | &FACTOR',

&FACTOR'# ( &EXPR' ) | a }

a + a ( a

+ &FACTOR' + a ( a

+ &TERM' + a ( a

+ & EXPR ' + a ( a

+ & EXPR ' + &FACTOR' ( a

+ & EXPR ' + & TERM ' ( a

+ & EXPR ' + & TERM ' ( &FACTOR'

+ & EXPR ' + & TERM '

+ & EXPR '

[erfolgreicher Parse,

aber erst nach Backtracking]

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [13]

Parsing Beispiel: Arithmetische Ausdrücke in L(G3) – Forts.

G 3 = (!, N, P, &EXPR') ! = { a, + , (, (, ) } N = {&EXPR', &TERM', &FACTOR'}

P = { &EXPR' # &EXPR' + &TERM' | &TERM',

&TERM' # &TERM' ( &FACTOR' | &FACTOR',

&FACTOR'# ( &EXPR' ) | a }

a + a ( a

+ &FACTOR' + a ( a

+ &TERM' + a ( a

+ & EXPR ' + a ( a

+ & EXPR ' + &FACTOR' ( a

+ & EXPR ' + & TERM ' ( a

+ & EXPR ' ( a

+ & EXPR ' ( &FACTOR'

+ & EXPR ' ( & TERM '

+ & EXPR ' ( & EXPR '

+ # [Backtracking notwendig!]

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [14]


Kontextfreie Grammatiken – Regelformen

Die Regeln A # w einer Kontextfreien Grammatik haben die Form

• A ! N und w ! ( ! " N )*, d.h.

• linke Seite ein Nichtterminal, rechte Seite eine beliebige Kette über ( ! " N )*

In der Theorie der formalen Sprachen wird u.a. untersucht

• inwieweit unterschiedliche Bedingungen an die Regelform, unterschiedliche

Sprachklassen definierten

# reguläre Sprachen können über kfG mit spezifischer Regelform spezifiziert

werden

• inwieweit Grammatiken „vereinfacht“ werden können. Dies betrifft insbesondere

die Konstruktion von Beweisen über kfG und Kellerautomaten, aber auch das

Entwerfen und Realisieren von effizienten Parsern

# " –Regeln, d.h. Regeln der Form A # ", werden nur benötigt, um das leere

Wort abzuleiten. D.h. für die Erzeugung kontextfreier Sprachen, die das

leere Wort nicht enthalten, sind " –freie Grammatiken ausreichend.

# Normalformen, insbesondere Chomsky-Normalform: Aller Regeln haben

die Form A # B C oder A # a mit A, B, C ! N und a ! !.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [15]

Grammatiken für reguläre Sprachen

Reguläre Sprachen

• werden von endlichen Automaten verarbeitet / akzeptiert / erzeugt

• können mit regulären Ausdrücken beschrieben werden

• (s. Kapitel 12)

• sind auch durch kontextfreie Grammatiken erzeugbar (noch zu zeigen)

• bilden eine echte Teilklasse der kontextfreien Sprachen (noch zu zeigen)

Typ-3-Grammatiken

• sind kontextfreie Grammatiken,

• erfüllen strukturelle Zusatzbedingungen

• erzeugen die reguläre Sprachen

Welche Zusatzbedingungen erfüllen Typ-3-Grammatiken ?

• einseitige Linearität

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [16]


Einseitig lineare Grammatiken

Definition 13.6

Sei ! ein Alphabet und G = (!, N, P, S) eine kontextfreie Grammatik über !.

• G heißt genau dann rechtslinear, wenn P , N ( ($*N " $*).

• G heißt genau dann linkslinear, wenn P , N ( (N$* " $*).

• G heißt genau dann einseitig linear, wenn G rechtslinear oder linkslinear ist.

Anmerkung

• ‚Linearität’ bezieht sich jeweils darauf, dass in jeder zwischenzeitlich erzeugten

Satzform maximal ein Nichtterminalsymbol auftritt.

• ‚Einseitig’ besagt zudem, dass das Nichtterminalsymbol randständig sein und

bleiben muss.

• Alle Regeln der einseitig linearen Grammatik haben das Nichtterminalsymbol auf

derselben Seite.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [17]

Beispiel: Lineare Grammatiken

Rechtslinear

G rl = ({0, 1}, {S}, P rl , S) mit P rl = { S # 0S, S # 1S, S # 100 }

L(G rl ) = L([0|1]*100)

Linkslinear

G ll = ({0, 1}, {S, R}, P rl , S) mit P rl = { S # R100, R # R1, R # R0, R # " }

L(G ll ) = L([0|1]*100)

Linear aber nicht einseitig linear

G 1 = ({a, b}, {S}, P 1 , S) mit P 1 = { S # aSb, S # ab }

L(G 1 ) = { a n b n | n ! 1 }

(s. Kapitel 1)

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [18]


Einseitig linear erzeugbare Sprachen

Definition 13.7

• ReL $ ist die Menge der durch rechtslineare Grammatiken erzeugbaren Sprachen

über $.

• LiL $ ist die Menge der durch linkslineare Grammatiken erzeugbaren Sprachen über

$.

• TYP3 $ ist die Menge der durch einseitig lineare Grammatiken erzeugbaren Sprachen

über $ (also TYP3 $ = ReL $ " LiL $ )

Beispiele

L(G rl ) = L([0|1]*100) ! ReL {0, 1} , TYP3 {0, 1}

L(G ll ) = L([0|1]*100) ! LiL {0, 1} , TYP3 {0, 1}

L(G 1 ) = { a n b n | n ! 1 } * TYP3 {0, 1}

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [19]

Rechtslineare Grammatiken für reguläre Sprachen

Satz 13.8

Zu jedem endlichen Automaten A über ! existiert eine rechtslineare Grammatik G A

über ! mit L(G A ) = L(A). (Also REG $ , ReL $ )

Grundidee

• Gleichsetzung von Nichtterminalsymbolen mit Zuständen.

• Zustandsübergänge -(s, a) = s' werden zu Ableitungsregeln s # as'.

• In Endzuständen kann die Ableitung beendet werden (s # ").

• Konfigurationen in der Verarbeitung durch den Automaten (s, w) korrespondieren

mit in der Ableitung erzeugten Satzformen (ws)

Konstruktion

Sei A = (!, S, -, s 0 , F) ein endlicher Automat.

Die rechtslineare Grammatik G A = (!, S, P, s 0 ) mit

• P = { s # as' | -(s, a) = s' } " { s # " | s ! F}

erfüllt: L(G A ) = L(A)

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [20]


Spiegelwörter und Spiegelsprachen

Definition 13.9

Es sei ! ein Alphabet. Für die Abbildung SP: !* # !*, die jedes Wort auf sein

Spiegelbild abbildet, gilt:

• SP(") = "; SP(a) = a , für a ! !; SP(u!v) = SP(v)!SP(u) , für u, v ! !*

• Ist L , !* eine Sprache, dann sei SP(L) = {SP(w) | w ! L} die ‚Spiegelsprache’ zu L.

• Ist M , .(!*) eine Sprachfamilie, dann sei SP(M) = {SP(L) | L ! M} die Familie

der ‚Spiegelsprachen’ zu M.

• Eine Sprachfamilie M , .(!*) heißt genau dann abgeschlossen unter Spiegelung,

wenn SP(M) , M.

Beobachtungen 13.10

1. LiL $ = SP(ReL $ ) und ReL $ = SP(LiL $ ) .

2. M , .(!*) ist genau dann abgeschlossen unter Spiegelung, wenn SP(M) = M.

3. TYP3 $ ist abgeschlossen unter Spiegelung.

4. LREXP $ ist abgeschlossen unter Spiegelung.

5. REG $ ist abgeschlossen unter Spiegelung.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [21]

Zum Selbststudium

Beweisen Sie obige Beobachtungen zur Übung

Dazu ist jeweils eine Konstruktion anzugeben (z.B. bei 1) Bildung einer linkslinearen

Grammatik für SP(L(G)) auf Basis einer rechtslinearen Grammatik G) und zu erläutern

/ beweisen, dass die Konstruktion tatsächlich genau das leistet, was sie soll.

2. ist natürlich darauf zurückzuführen, dass für alle Wörter w gilt SP(SP(w)) = w und

damit Entsprechendes für die Sprachen und die Sprachfamilien.

Was in der Liste von Beobachtungen noch fehlt, ist, dass auch LiL $ und ReL $

abgeschlossen unter Spiegelung (und damit identisch) sind. Das zeigen wir später über

die Abschlusseigenschaften der beteiligten Sprachen (Satz 13.§§)

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [22]


Normalformen für einseitig lineare Grammatiken

Die Definition für einseitig lineare Grammatiken lässt zu:

• beliebig lange Folgen von Terminalsymbolen in den Regeln

• beliebig viele Regeln der Art A # "

• Regeln der Art A # w , mit w ! !*

• Regeln der Art A # B , mit B ! N

Satz 13.11

Zu jeder einseitig linearen Grammatik G gibt es eine einseitig linearen Grammatik G’,

die dieselbe Sprache erzeugt aber folgende Zusatzbedingungen erfüllt:

• alle rechten Seiten der Regeln, in denen Terminalsymbole vorkommen, haben die

Länge 2 (A # aB bzw. A # Ba mit A, B ! N und a ! !)

• es gibt keine Regeln der Art A # B , mit B ! N

• es gibt maximal 2 Regeln der Art A # ", wobei höchstens eine dieser Regeln ein

anderes Nichtterminalsymbol als das Startsymbol ableitet.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [23]

Zum Selbststudium

Konstruktion zu Satz 13.11

‚Vernichtung’ der Regeln der Art A # B , mit B ! N

1. Regeln der Form A # A können gelöscht werden, da Ihre Anwesenheit keinen

Einfluss auf die generierte Sprache haben.

2. Kommt A # B , mit B ! N, in P vor, dann kann diese Regel durch die Menge der

Regeln { A # r | B # r ! P} ersetzt werden.

3. Durch systematische Anwendung von 1) und 2) können alle Regeln der Art A # B

eliminiert werden.

Reduktion der Regeln der Art A # w , mit w ! !* auf maximal 2 Regeln der Art A #

", wobei höchstens eine dieser Regeln ein anderes Nichtterminalsymbol als das

Startsymbol ableitet:

• Führe ein neues Nichterminalsymbol T und die Regel T # " ein.

• Ersetze jede Regel der Art A # w , mit w ! ! + , durch A # wT.

• Ersetze jede Regel der Art A # wB , mit w ! ! + und B # " ! P, durch A # wT.

• Lösche dann alle Regeln der Art B # " außer { T # " , S # " }.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [24]


Zum Selbststudium: Zu Satz 13.11

Beschränkung der rechten Seiten der Regeln, in denen Terminalsymbole vorkommen,

auf Länge 2 (A # aB bzw, A # Ba mit A, B ! N und a ! !)

• Für jedes Paar a ! N, B ! !, für das mindestens eine Regel der Art A # waB ! P,

mit w ! ! + , führe ein neues Nichtterminal C und die Regel C # aB ein und ersetze

alle Regeln der Art A # waB durch A # wC.

• Für jedes Paar a ! N, B ! !, für das mindestens eine Regel der Art A # Baw ! P,

mit w ! ! + , führe ein neues Nichtterminal C und die Regel C # Ba ein und ersetze

alle Regeln der Art A # Baw durch A # Cw.

Es wäre noch zu zeigen, dass die so erzeugte Grammatik tatsächlich genau dieselbe

Sprache erzeugt, wie die ursprüngliche. Dazu zeigt man, wie die Ableitungen der alten

Grammatik durch die neue Grammatik ‚simuliert’ und umgekehrt.

Bemerkung

Die Normalformen der Grammatiken sind oft bei der Beweisführung über die

Sprachfamilien nützlich. Für den praktischen Einsatz sind aber die allgemeinen

Formen oft besser geeignet.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [25]

Rechtslinear erzeugbare Sprachen sind regulär

Satz 13.12

Zu jeder rechtslinearen Grammatik G über ! existiert ein endlicher Automat A G über !

mit L(G) = L(A G ). (Also ReL $ , REG $ )

Konstruktion

Sei G = (!, N, P, S) eine rechtslineare Grammatik, bei der auf den rechten Seiten der

Produktionen maximal ein Terminalsymbol steht. (Notfalls müssen wir erst einen

Umformungsschritt gemäß 13.11 machen.)

Für den Automaten A G = (!, N " {ƒ}, -, S, F) mit

• ƒ * N

• F = {ƒ} " { B ! N | B # " ! P}

• - = {(B, a, C) | B # aC ! P} " {(B, a, ƒ) | B # a ! P}

gilt: L(A G ) = L(G)

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [26]


ReL $ = REG $ = LiL $ = TYP3 $

Satz 13.13

ReL $ = REG $ = LiL $ = TYP3 $

Beweis

1. REG $ , ReL $ : Satz 13: 8

2. ReL $ , REG $ : Satz 13: 12

3. ReL $ = REG $ : Konsequenz von 1 und 2

4. LiL $ = SP(ReL $ ) : Beobachtung 13.10.1

5. LiL $ = SP(REG $ ) : Konsequenz von 4 und 3

6. SP(REG $ ) = REG $ : Beobachtung 13.10.2 und 5

7. LiL $ = REG $ : Konsequenz von 5 und 6

8. ReL $ " LiL $ = TYP3 $ : Definition 13.13

9. TYP3 $ = REG $ : Konsequenz von 3, 7, 8

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [27]

Reguläre SprachenKontextfreie Sprachen

Typ-2-Sprachen

Kontextfreie Sprachen werden auch als Typ-2-Sprachen bezeichnet.

• Dementsprechend wird TYP2 $ für die Menge der Kontextfreien Sprachen

verwendet.

Reguläre SprachenKontextfreie Sprachen

• reguläre Sprachen sind eine echte Teilklasse der kontextfreien Sprachen

• welche Charakteristika von Regeln, Baumstrukturen, Ableitungen sind für die

Nicht-Regularität gewisser kontextfreier Sprachen verantwortlich?

• wie unterscheiden sich die Abschlusseigenschaften von regulären und

kontextfreien Sprachen?

Kontextfreie Sprachen

• welche Modifikationen des Konzeptes endlicher Automaten werden benötigt, um

Automaten, die kontextfreie Sprachen akzeptieren, zu konstruieren?

• welche Eigenschaften charakterisieren Sprachen als nicht-kontextfrei?

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [28]


Reguläre SprachenKontextfreie Sprachen (2)

Einseitig lineare Grammatik G 1

S # aS, S # aB, B # bB, B # b

L(G 1 ) = { a n b m | n, m ! 1 } = {a} + {b} +

Nicht einseitig lineare Grammatik G 2

S # aSb, S # ab

L(G 2 ) = { a n b n | n ! 1 }

.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [29]

Normalformen für kontextfreie Grammatiken

Ziel: Vereinfachung von kontextfreien Grammatiken

Die wichtigsten Vereinfachungen

1. Elimination von „nicht benötigten“ (nutzlosen) Symbolen

2. Elimination von "-Regeln

3. Elimination von Kettenregeln (Einheitsproduktionen), d.h. von Regeln der

Form A # B mit A,B ! N.

Theoreme zu vereinfachten Grammatiken (Beweise im Laufe dieser Vorlesung)

1. Für jede kontextfreie Sprache L, d.h. L ! TYP2 $ , gilt, dass L – { " } durch eine

kfG ohne "-Regeln erzeugt werden kann.

2. Zu jeder kfG G gibt es eine äquivalente kfG G' in Chomsky-Normalform, d.h.

• L(G) = L(G')

• Alle Regeln von G' haben die Form A # B C oder A # a mit A, B, C ! N

und a ! !. Falls " ! L = L(G), ist zusätzlich die Regel S # " zugelassen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [30]


Elimination von nutzlosen Symbolen

Sei G = (!, N, P, S) eine kontextfreie Grammatik.

X ! ! " N ist nützlich in G, wenn es eine Ableitung

S ) * uXv ) * w mit w ! !* gibt,

d.h. X tritt in einer Satzform einer Ableitung von S zu einer terminalen Zeichenkette

auf. Wenn X nicht nützlich ist, dann bezeichnen X wir als nutzlos.

1. Die Sprache L(G) ist durch die Ableitungen von S zu terminalen Zeichenketten

gegeben (Def. 13.4). Wenn X nutzlos ist, kommt X in keiner Ableitung von S zu

einer terminalen Zeichenkette vor.

Also kann X aus der Grammatik entfernt werden, d.h. X wird aus ! " N entfernt,

und alle Regeln, in denen X auftritt, werden ebenfalls entfernt.

2. Es gibt zwei Eigenschaften, die die Nützlichkeit eines Symbols ausmachen:

a. X ist erzeugend, wenn X ) * w für ein w ! !*.

[Da a ) * a für alle a ! !, sind alle terminalen Symbole erzeugend.]

b. X ist erreichbar, wenn es eine Ableitung S ) * uXv gibt,

mit u,v ! (! " N)*.

# Wir werden zuerst alle nicht-erzeugenden und dann alle nicht-erreichbaren

Symbole eliminieren.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [31]

Elimination von nutzlosen Symbolen: Beispiel

Grammatik G ist gegeben durch die Regeln:

S # AB | a A# b

Eliminationsreihenfolge

nicht-erzeugende " nicht-erreichbare nicht-erreichbare " nicht-erzeugende "

Bestimmung der erzeugenden Symbole

• S, A wegen S ) * a bzw. A ) * b

a, b da Terminalsymbole

Elimination der nicht-erzeugenden

Symbole: B

• S # a A# b

Bestimmung der erreichbaren Symbole

• S, a wegen S ) * a

Elimination der nicht-erreichbaren

Symbole: A, b

• S # a

Bestimmung der erreichbaren Symbole

• S, a wegen S ) * a

A, B, b wegen S ) * AB ) * bB

Keine Elimination nicht-erreichbarer

Symbole notwendig

Bestimmung der erzeugenden Symbole

• S, A wegen S ) * a bzw. A ) * b

a, b da Terminalsymbole

Elimination der nicht-erzeugenden

Symbole: B

• S # a A# b

Enthält zwei nutzlose Symbole

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [32]


Elimination von nutzlosen Symbolen

Satz 3.14

Sei G = (!, N, P, S) eine kontextfreie Grammatik mit L(G) " /. Sei G 1 = (! 1 , N 1 , P 1 , S)

die Grammatik, die sich aus dem folgenden Verfahren ergibt:

1. Es werden alle Symbole, die nichts erzeugen, und alle Regeln, die eines oder

mehrere dieser Symbole enthalten, eliminiert. Die hieraus entstehende

Grammatik bezeichnen wird durch G 2 = (! 2 , N 2 , P 2 , S).

2. Es werden aus G 2 alle Symbole, die nicht in G 2 erreichbar sind, eliminiert,

sowie alle Regeln, die eines oder mehrere dieser Symbole enthalten.

Dann enthält G 1 keine nutzlosen Symbole und es gilt: L(G) = L(G 1 )

Anmerkung:

• Da L(G) " /, ist S erzeugend, und kann somit nicht eliminiert werden.

Beweis zur selbständigen Nacharbeit (vgl. Vossen & Witt, Kap. 5.1.2). Zu zeigen ist:

1. G 1 enthält keine nutzlosen Symbole; hier spielt die Reihenfolge der zwei

Eliminationsstufen eine Rolle: G ! G 2 ! G 1

2. L(G) = L(G 1 ), hier ist L(G) , L(G 1 ) die nicht-triviale Richtung des Beweises.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [33]

Berechnung der erzeugenden Symbole

Definition 3.15 (Algorithmus zur Berechnung der erzeugenden Symbole)

Sei G = (!, N, P, S) eine kontextfreie Grammatik.

Induktive Definition eines Algorithmus zur Berechnung der erzeugenden Symbole:

1. Alle a ! !, d.h. alle terminalen Symbole, sind erzeugend.

2. Wenn für eine Regel A # w gilt, dass jedes Symbol in w erzeugend ist, dann ist

A erzeugend.

Regeln: S # AB | a A# b Ableitungsbäume

1. a, b sind erzeugend, da Terminalsymbole

2. S ist erzeugend wg. S # a

A ist erzeugend wg. A # b

S # AB erfüllt nicht die Bedingungen

von (2).

3. Alle Regeln sind berücksichtigt; das

Verfahren ist abgeschlossen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [34]


Berechnung der erzeugenden Symbole (Forts.)

Satz 3.16 (Algorithmus zur Berechnung der erzeugenden Symbole)

Der in Def. 3.15 induktive definierte Algorithms bestimmt die Menge der erzeugenden

Symbole (MeS) von G = (!, N, P, S).

Zu beweisen sind zwei Richtungen: (1), dass jedes Symbol, das durch den Algorithmus

in MeS aufgenommen wird, wirklich ein erzeugendes Symbol ist, und (2), dass jedes

erzeugende Symbol durch den Algorithmus in MeS aufgenommen wird.

1. Richtung: Induktion über die Reihenfolge, in denen der Algorithmus Symbole in

MeS aufnimmt. [zum Selbststudium!!!]

2. Richtung: X ist erzeugendes Symbol, mit der terminalen Ableitung X ) * w für

ein w ! !*. Induktion über die Ableitungslänge.

• Falls die Ableitung die Länge null hat, dann ist X ist terminales Symbol.

Daher wird im Schritt 1 des Algorithmus X als erzeugend klassifiziert und in

MeS aufgenommen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [35]

Berechnung der erzeugenden Symbole (Forts.)

• Wenn die Ableitung die Länge n hat (n > 0), dann ist X eine Variable. Die

Ableitung X ) * w kann zerlegt werden in X ) v ) * w, d.h. es wird zuerst

die Regel X # v angewendet.

• Jedes Symbol von v leitet eine terminale Zeichenkette ab, die Teil von w

ist, und diese Ableitung (# Zusammenfassung der Ableitungen, die von v

zu w führen) hat eine Länge kleiner n.

• Nach Induktionshypothese ist daher jedes Symbol aus v erzeugend.

Daher ist die Voraussetzung für den Schritt (2) des Algorithmus erfüllt:

der Algorithmus X als erzeugend klassifiziert und in MeS aufgenommen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [36]


Berechnung der erreichbaren Symbole

Definition 3.17 (Algorithmus zur Berechnung der erreichbaren Symbole)

Sei G = (!, N, P, S) eine kontextfreie Grammatik.

Induktive Definition eines Algorithmus zur Berechnung der erreichbaren Symbole:

1. Das Startsymbol S ist erreichbar.

2. Wenn für eine Regel A # w gilt, dass A erreichbar ist, dann ist jedes Symbol in

w erreichbar.

Regeln: S # AB | a A# b Ableitungsbäume

1. S ist erreichbar

2. wg. S # AB | a

sind ausserdem A, B und a erreichbar

wg. A# b

ist ausserdem b erreichbar

3. Alle Regeln sind berücksichtigt; das

Verfahren ist abgeschlossen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [37]

Berechnung der erreichbaren Symbole (Forts.)

Satz 3.18 (Algorithmus zur Berechnung der erreichbaren Symbole)

Der in Def. 3.16 induktive definierte Algorithms bestimmt die Menge der erreichbaren

Symbole von G = (!, N, P, S).

Beweis: Zum Selbststudium!!!

Zu beweisen sind – wie beim Beweis von Satz 3.16 – zwei Richtungen.

Verwendet wird Induktion über Ableitungen bzw. den Ablauf des Algorithmus.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [38]


Elimination von !-Regeln

Satz 3.19 (Elimination von !-Regeln)

Für jede kontextfreie Sprache L gilt, dass L – { " } durch eine kfG ohne "-Regeln

erzeugt werden kann.

[Derartige Grammatiken werden als "-freie Grammatiken bezeichnet.]

Anmerkungen:

Dieser Satz deckt zwei Fälle ab:

1. " * L. Dann ist L – { " } = L, und deswegen gibt es eine "-Regel-freie

Grammatik G, die L erzeugt, d.h. L = L(G).

2. " ! L. Dann gibt es eine "-freie Grammatik G, die L – { " }erzeugt. Für die

Erzeugung des leeren Wortes kann G um eine einzige "-Regel angereichert

werden, die nur an der Erzeugung des leeren Wortes beteiligt ist.

Im Beweis wird daher der Fall "-freier Sprachen behandelt (Fall 1). Fall 2 erfordert

dann nur den oben angesprochenen Schritt der Ergänzung um eine "-Regel zur

Erzeugung des leeren Wortes.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [39]

Elimination von !-Regeln – Beweis von Satz 3.19

Sei " * L und G = (!, N, P, S) eine kontextfreie Grammatik mit L = L(G).

• Wir gehen davon aus, dass alle nutzlosen Symbole aus G eliminiert wurden (vgl.

die Sätze 3.14, 3.16 und 3.18).

• Wir erweitern die Grammatik um ein neues Nichtterminalsymbol, S 0 , das als

Startsymbol fungiert. Ausserdem führen wir die Regel S 0 # S ein.

• Die neue Grammatik G' erzeugt genau die gleiche Sprache wie die Grammatik

G, denn zu jeder G-Ableitung S ! * G w mit w ! L(G) gibt es eine

korrespondierende G'-Ableitung S 0 ! * G' w, und zwar S 0 ! * G' S !* G' w.

• Diese Erweiterung der Grammatik führt dazu, dass das Startsymbol von G' nicht

aus der rechten Seite einer Regel auftritt.

Beispiel

S # ASA | aB A# B | S B# b | "

Einführung des neuen Startsymbols S 0

S 0 # S S # ASA | aB A# B | S B# b | "

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [40]


Elimination von !-Regeln – von G'' erzeugte Sprache

Regeln in G'

S 0 # S

S # ASA | aB

A# B | S

B# b | "

Beispiel eines Strukturbaums

Ableitung:

S 0 ) S

) ASA

) SSA ) SaBA ) SaBB

) aBaBB ) aBabB ) aBab"

) a"ab" = aab

Abschluss erfolgt nur über B-Regeln.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [41]

Elimination von !-Regeln – Beweis von Satz 3.19 (Forts.)

• "-Regeln, d.h. Regeln der Form A # " werden eliminiert; dafür werden aber

eventuell neue Regeln eingeführt.

• Für jedes Vorkommen von A auf der rechten Seite einer Regel bilden wir

zusätzlich eine neue Regel ohne dieses Vorkommen von A.

Beispiel: Sei R# uAvAw eine derartige Regel in G', so führt dies zu den Regeln

R# uvAw, R# uAvw, R# uvw

Falls die zu bearbeitende Regel die Form R# A hat , so fügen wir R # " in

die Regelmenge, ausser in den Fällen, in denen R # " schon eliminiert wurde.

• Dieses Verfahren wird durchgeführt, bis alle "-Regeln beseitigt sind.

• In der Regelmenge P gibt es nur eine endliche Menge von Regeln und

insbesondere nur eine endliche Menge von "-Regeln; für jedes Nichtterminal

maximal eine "-Regel.

• Bei der Elimination von "-Regeln können zwar neue "-Regeln entstehen, aber

nur für solche nichtterminale Symbole, zu denen noch keine "-Regeln

eliminiert wurden. Daher terminiert der Prozess der Elimination von "-Regeln.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [42]


Elimination von !-Regeln – Beweis von Satz 3.19 (Forts.)

Beispiel

S 0 # S S # ASA | aB A# B | S B# b | "

Elimination der "-Regel B# "

Einführung neuer Regeln in Bezug auf S # aB S # a

Einführung neuer Regeln in Bezug auf A# B A# "

Elimination der "-Regel A# "

Einführung neuer Regeln in Bezug auf S # ASA S # SA | AS | S

Da keine "-Regel vorkommt, ist das Verfahren abgeschlossen.

Die resultierende Regelmenge:

S 0 # S

S # ASA | aB | a | SA | AS | S

A# B | S

B# b

Die Ausgangs-Regelmenge

S 0 # S

S # ASA | aB

A# B | S

B# b | "

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [43]

Elimination von !-Regeln – von G'' erzeugte Sprache

Regeln in G'

S 0 # S

S # ASA | aB | a | SA | AS | S

A# B | S

B# b

Beispiel eines Strukturbaums

Ableitung:

S 0 ) S

) AS

) SS ) SaB

) aaB ) aab

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [44]


Elimination von !-Regeln – G'-Stukturbaum vs. G''-Stukturbaum

G'-Stukturbaum

G''-Strukturbaums

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [45]

Elimination von !-Regeln – Beweis von Satz 3.19 (2. Forts.)

Die durch Elimination der "-Regeln entstandene Grammatik G'' erzeugt genau die

gleiche Sprache wie die Grammatik G'.

• Da die Grammatik G eine "-freie Sprache erzeugt [" * L = L(G)], werden "-Regeln

nur für den Abschluss von Ableitungen verwendet, die zu echten Zeichenketten

führen.

• Wenn in einer G'-Ableitung eine "-Regel angewendet wird, dann gibt es eine

korrespondierende G''-Ableitung die auf einer der in der "-Regel-Elimination

ergänzten Regeln basiert. Daher ist jedes durch G' erzeugbare Wort auch durch G''

erzeugbar. Entsprechend kann / muss gezeigt werden, dass G'' nicht zusätzliche

Wörter erzeugen kann.

Damit ist der Beweis für den Fall 1 (" * L) abgeschlossen.

Fall 2. ! ! L = L(G)

Dann existiert eine G'-Ableitung zu ". Da nur nichtterminale Symbole getilgt werden

können, und zwar durch "-Regeln, kann das in Fall 1 verwendete Verfahren

angewendet werden: Wir eliminieren "-Regeln für alle Nichtterminale (ausser dem

Startsymbol S 0 ).

# Damit ist der Beweis für den Fall 1 (" * L) abgeschlossen.von Satz 3.19

abgeschlossen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [46]


Chomsky Normalform

Definition 3.20

Eine kontextfreie Grammatik G = (!, N, P, S) liegt in Chomsky Normalform vor, falls

alle Regeln von G eine der folgenden Formen haben

• A # B C

• A # a

• S # "

mit A, B, C ! N und a ! !.

Anmerkung:

• Es gibt (echt) expandierende Regeln mit zwei nichtterminalen Symbole auf der

rechten Seite (und somit binär verzweigende Strukturbäume) und

• abschliessende Regeln mit genau einem terminalen Symbol auf der rechten Seite,

sowie gegebenenfalls als Sonderfall (für die Ableitung des leeren Wortes) für

das Startsymbol eine "-Regel (S # ").

Satz 3.21

Für jede kontextfreie Sprache L gibt es eine kfG G in Chomsky-Normalform, die L

erzeugt, d.h. mit L = L(G).

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [47]

Chomsky Normalform – Beweis Satz 3.21

Aufbauend auf den Sätzen 3.14 und 3.19 können wir davon ausgehen, dass es zur

Sprache L eine erzeugende kfG G gibt, in der alle nutzlosen Symbole und alle "-

Regeln (ausser im Fall " ! L, die Regel S # ") eliminiert sind.

Wir haben zwei Typen von Regelumformungen durch zu führen:

• Einer-Regeln, d.h. Regeln der Form A# B, mit A, B ! N, werden umgewandelt

in Regeln mit zwei oder mehr Symbolen auf der rechten Seite.

• Alle verbleibenden Regeln werden in die Normalform gebracht, d.h. in Regeln

mit der zulässigen Länge der rechten Seite

• Länge 2 für Regeln mit Nichtterminalen auf der rechten Seite

• Länge 1 für Regeln mit Terminalen auf der rechten Seite

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [48]


Chomsky Normalform – Umwandlung von Einer-Regeln

• Einer-Regeln, d.h. Regeln der Form A # B, mit A, B ! N, werden eliminiert; dafür

werden aber neue Regeln eingeführt.

• Für jede Regel B# u, mit u ! (! " N)*, bilden wir eine neue Regel A # u,

ausser in den Fällen, in denen die Einer-Regel A # u schon eliminiert wurde.

• Dieses Verfahren wird durchgeführt, bis alle Einer-Regeln beseitigt sind.

• In der Regelmenge P gibt es nur eine endliche Menge von Regeln und

insbesondere nur eine endliche Menge von Einer-Regeln.

• Bei der Elimination von Einer-Regeln können zwar neue Einer-Regeln entstehen,

aber nur für solche nichtterminale Symbole, zu denen noch keine Einer-Regeln

eliminiert wurden. Daher terminiert der Prozess der Elimination von Einer-Regeln.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [49]

Elimination von Einer-Regeln – Beweis von Satz 3.21 (Forts.)

Beispiel

Die Ausgangs-Regelmenge

S 0 # S

S # ASA | aB | a | SA | AS | S

A# B | S

B# b

Elimination von S # S

Elimination von S 0 # S

Elimination von A# B

Elimination der A# S

S # ASA | aB | a | SA | AS

S 0 # ASA | aB | a | SA | AS

A# b

A# ASA | aB | a | SA | AS

Die resultierende Regelmenge:

S 0 # ASA | aB | a | SA | AS

S # ASA | aB | a | SA | AS

A# b | ASA | aB | a | SA | AS

B# b

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [50]


Elimination von Einer-Regeln – G-Stukturbaum vs. G'-Stukturbaum

G-Stukturbaum

G'-Strukturbaums

Ableitungen, die auf Einer-Regeln basieren, können „abgekürzt“ werden.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [51]

Abschliessende Konvertierung in Chomsky Normalform

• Sei A # u 1 u 2 …u k , wobei k ! 3 und u i ! (! " N).

Wir ersetzen diese Regel durch die Regeln

A # u 1 A 1 , A 1 # u 2 A 3 , … A k-2 # u k-1 u k Die A i seine neue Variablen.

• Jeder Anwendung der Regel A # u 1 u 2 …u k entspricht die sequentielle

Anwendung der Regeln A # u 1 A 1 , A 1 # u 2 A 3 , … A k-2 # u k-1 u k .

• Anschliessend ersetzen wir in allen Regeln der Form

A # u i A j , in denen u i ! !, u i durch die neue Variable U i , d.h. modifizieren die

Regel zu A # u i A j und führen die neue Regel A # U j ein (gleiche Terminale u i

können durch gleiche neue Variable U i ersetzt werden).

• Jeder Anwendung der Regel A # u i A j in G' entspricht die sequentielle

Anwendung der Regeln A # U 1 A j und anschliessend A # U j in G''.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [52]


Erstellung von Regeln in Ch-Normalform – Beweis von Satz 3.21 (Forts.)

Beispiel

Die Ausgangs-Regelmenge

S 0 # ASA | aB | a | SA | AS

S # ASA | aB | a | SA | AS

A# b | ASA | aB | a | SA | AS

B# b

Umformung von S 0 # ASA

Umformung von S # ASA

Umformung der Regeln mit rechter Seite aB

Die resultierende Regelmenge

nach 1. Teilschritt:

S 0 # AA 1 | aB | a | SA | AS

S # AA 1 | aB | a | SA | AS

A# b | ASA | aB | a | SA | AS

A 1 # SA

B# b

S 0 # AA 1 , A 1 # SA

S # AA 1 , A 1 # SA

X # UB , U# a

Die resultierende Regelmenge

nach 2. Teilschritt:

S 0 # AA 1 | UB | a | SA | AS

S # AA 1 | UB | a | SA | AS

A# b | ASA | UB | a | SA | AS

A 1 # SA

U # a

B# b

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [53]

Chomsky Normalform – G-Stukturbaum vs. G'-Stukturbaum

G'-Stukturbaum

G''-Strukturbaums

Ableitungen, die auf Nicht-Normalform-Regeln basieren, werden durch Sequenzen

von Normalformableitungen durchgeführt.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [54]


Normalformen Zusammenfassung

Aufgabe: Vereinfachung von kontextfreien Grammatiken

Theoreme zu vereinfachten Grammatiken

• Für jede kontextfreie Sprache L, d.h. L ! TYP2 $ , gilt, dass L – { " } durch eine kfG

ohne "-Regeln erzeugt werden kann.

• Zu jeder kfG G gibt es eine äquivalente kfG G' in Chomsky-Normalform, d.h.

L(G) = L(G')

Alle Regeln von G' haben die Form A # B C oder A # a mit A, B, C ! N und a

! !. Falls " ! L = L(G), ist zusätzlich die Regel S # " zugelassen.

Chomsky Normalform ist wichtig für Beweise, z.B. Pumpinglemma für kontextfreie

Sprachen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [55]

Kellerautomaten: Grundidee

Ergänzung des endlichen Automaten mit einem einfachen Speicher

Zur Erinnerung: Der Speicher des endlichen Automaten

• besteht allein aus dem Zustandsspeicher

• entspricht einer Zelle mit endlicher Kapazität (einer von endlich viele Zuständen)

Kellerspeicher: LIFO-Prinzip (last in – first out)

• Im Prinzip unbeschränkte Kapazität (keine Beschränkung der Anzahl der

Speicherzellen)

• die einzelnen Speicherzellen des Kellers haben aber nur endliche Kapazität

( = 1 Symbol aus dem (endlichen) Keller-Alphabet)

• Es ist immer nur das 'oberste' Symbol des Speichers zugreifbar.

• In der Beschränkung der Zugriffsmöglichkeit besteht der entscheidende Unterschied

zu den Turingmaschinen.

• Das Kelleralphabet und das Eingabealphabet können übereinstimmen, müssen es

aber nicht.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [56]


Kellerautomat

$

0

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [57]

Abb: © Vossen & Witt (2006)

Definition (nichtdeterministischer) Kellerautomat

Definition 13.22

Ein (nichtdeterministischer) Kellerautomat K = (!, Q, 0, -, q 0 , 1, F), besteht aus:

• ! : ein Alphabet (Eingabealphabet)

• 0 : ein Alphabet (Kelleralphabet) $

• Q : eine endliche Menge, die Menge

der Zustände

• - : Q ( (! " {2}) ( 0 # .(Q ( 0*)

ist die Zustandsüberführungsfunktion

von K.

• q 0 ! Q : der Startzustand

• 1 ! 0 : das Kellerboden-Symbol

(initialer Kellereintrag)

• F , Q : die Menge der Endzustände

Die Definition des Kellerautomaten spezifiziert die 'endliche Kontrolle'.

0

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [58]

Abb: © Vossen & Witt (2006)


Zustandsüberführungsfunktion des Kellerautomaten

(q', k 1 …k n ) ! -(q, x, k) • Ist K im Zustand q,

• liest auf dem Eingabeband das Symbol x

• und auf dem Keller das Symbol k,

• dann kann K in den Zustand q' wechseln

• und k auf dem Keller durch k 1 …k n ersetzten,

• wobei k 1 zum obersten Symbol wird.

(q', 2) ! -(q, x, k) • Ist K im Zustand q,

• liest auf dem Eingabeband das Symbol x

• und auf dem Keller das Symbol k,

• dann kann K in den Zustand q' wechseln

• und k vom Keller löschen.

(q', k 1 …k n ) ! -(q, 2, k) • Ist K im Zustand q,

• und liest auf dem Keller das Symbol k,

• dann kann K in den Zustand q' wechseln

• und k auf dem Keller durch k 1 …k n ersetzten,

• wobei k 1 zum obersten Symbol wird.

(q', 2) ! -(q, 2, k) • Ist K im Zustand q,

• und liest auf dem Keller das Symbol k,

• dann kann K in den Zustand q' wechseln

• und k vom Keller löschen.

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [59]

Beispiel Kellerautomat

K 1 = ({a, b}, {q 0 , q 1 , q f }, {1, 1}, - 1 , q 0 , 1, {q f }) mit

- 1 (q 0 , 2, 1) = - 1 (q 1 , 2, 1) = {(q f , 2)}

- 1 (q 0 , a, 1) = {(q 0 , 11)}

- 1 (q 0 , a, 1) = {(q 0 , 11)}

- 1 (q 0 , b, 1) = - 1 (q 1 , b, 1) = {(q 1 , 2)}

- 1 (q 0 , 2, 1) = - 1 (q 0 , b, 1) = - 1 (q 1 , 2, 1) =

- 1 (q 1 , a, 1) = - 1 (q 1 , a, 1) = - 1 (q 1 , b, 1) =

- 1 (q f , 2, 1) = - 1 (q f , 2, 1) = - 1 (q f , a, 1) =

- 1 (q f , a, 1) = - 1 (q f , b, 1) = - 1 (q f , b, 1) = /

FGI-1 Habel / Eschenbach Kap 13 Kontextfreie Sprachen & Grammatiken [60]

Weitere Magazine dieses Users
Ähnliche Magazine