4.2 Die Chomsky Normalform

Ähnliche Dokumente
Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Grundlagen der Theoretischen Informatik

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Tutoraufgabe 1 (ɛ-produktionen):

Theoretische Grundlagen der Informatik

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Ein Fragment von Pascal

Klammersprache Definiere

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7

Theoretische Grundlagen der Informatik

Kontextfreie (Typ-2) Sprachen

Ogden s Lemma (T6.4.2)

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Kapitel 3. Kontextfreie Sprachen. Induktive Charakterisierung der Sprache L der korrekten Klammerausdrücke: (w) L, falls w L vw L, falls v, w L

Lösungen zu Übungsblatt 6

Ogden s Lemma: Der Beweis (1/5)

Grundlagen der Theoretischen Informatik

Übungen zur Vorlesung Einführung in die Theoretische Informatik, Blatt 12 LÖSUNGEN

Beweis des Pumping Lemmas

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Informales Beispiel. Formale Grundlagen der Informatik 1 Kapitel 6 Eigenschaften kontextfreier Sprachen. Grammatiken. Anmerkungen

Informatik III - WS07/08

I.5. Kontextfreie Sprachen

Theoretische Grundlagen der Informatik

Musterlösung Informatik-III-Nachklausur

Pumping-Lemma. Beispiel. Betrachte die kontextsensitive Grammatik G mit den Produktionen. S asbc abc CB HB HB HC HC BC ab ab bb bb bc bc cc cc.

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Theoretische Grundlagen der Informatik

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Kontextfreie Sprachen

Kontextfreie Sprachen

Theoretische Informatik

Algorithmen und Datenstrukturen (EI)

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Kapitel 2: Formale Sprachen Gliederung

Kontextfreie Grammatiken

Grundlagen der Theoretischen Informatik

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Theoretische Grundlagen der Informatik

A : z z A : z z : ( z, x, z ) δ

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Übung zur Vorlesung Grundlagen der theoretischen Informatik. Aufgabenblatt 7 Lösungen. Wiederholung: Pumping-Lemma für kontextfreie Sprachen

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

3 kontextfreie Sprachen

Algorithmische Bioinformatik 1

Formale Grundlagen der Informatik

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Definition der Greibach-Normalform

Grundlagen der Theoretischen Informatik

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Übungsblatt Nr. 3. Lösungsvorschlag

Automatentheorie und formale Sprachen

Übungen zu Grundlagen der Theoretischen Informatik

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Theorie der Informatik

Aufgabentypen: Spickerblatt: kontextfrei (Typ 2): zusätzlich: u ist eine!"# v 1

Das Halteproblem für Turingmaschinen

Schnitt- und Äquivalenzproblem

Grundlagen der Theoretischen Informatik

24. Kontextfreie Sprachen

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung!

Stichpunktezettel fürs Tutorium

2. Übungsblatt 6.0 VU Theoretische Informatik und Logik

10 Kellerautomaten. Kellerautomaten

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Deterministischer Kellerautomat (DPDA)

Maike Buchin 18. Februar 2016 Stef Sijben. Probeklausur. Theoretische Informatik. Bearbeitungszeit: 3 Stunden

Andererseits ist L kontextfrei, wie die einfache kontextfreie Grammatik G = ({a, b},{s}, S, P) mit den Regeln

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Informatik 3 Theoretische Informatik WS 2015/16

Transkript:

4.2 Die Chomsky Normalform Für algorithmische Problemstellungen (z.b. das Wortproblem) aber auch für den Nachweis von Eigenschaften kontextfreier Sprachen ist es angenehm, von CFG in Normalformen auszugehen. Eine der wichtigsten Normalformen für CFG ist die Chomsky Normalform. Definition 4.2.1 (Chomsky Normalform (CNF)). Sei G =(V,Σ,P,S) eine CFG. G heißt in CNF, falls alle Produktionen in G von der Form a für ein a Σ oder BC für Nichtterminale B, C sind. Wir sprechen von einer CNF-Grammatik, um eine CFG in CNF zu bezeichnen. Z.B. ist die CFG mit den Regeln S D B, D SD d, a, B b in CNF; nicht aber die CFG mit den Regeln S asb ab. Satz 4.2.2. Zu jeder CFG G mit ε/ L(G) gibt es eine äquivalente CFG in CNF. Beweis. Sei G =(V,Σ,P,S) eine CFG mit ε/ L(G). Wir geben nun ein Verfahren an, mit dem G in eine äquivalente CFG G in CNF überführt werden kann. 1. Zunächst erstellen wir eine zu G äquivalente ε-freie CFG G 1. Wegen ε/ L(G), enthält diese keine ε-regeln. 2. Im zweiten Schritt führen wir G 1 in eine äquivalente CFG G 2 ohne Kettenregeln, d.h. ohne Regeln der Form B, über. Dazu wenden wir das in lgorithmus 15 (Seite 147) angegebene Verfahren an. Der erste Teil von lgorithmus 15 läßt sich mit einem lgorithmus durchführen, der die starken Zusammenhangskomponenten des Digraphen (V,E), wobei (,B) E genau dann, wenn B eine Kettenregel in G 1 ist, berechnet, daraus den zugehörigen azyklischen Digraphen G der starken Zusammenhangskomponenten erstellt und anschließend eine topologische Sortierung für G bestimmt. 3. G 2 wird durch eine äquivalente CFG G 3 ersetzt, in der sämtliche Regeln die Form a oder B 1 B 2...B k mit k 2 haben, wobei,b 1,...,B k Variablen sind und a ein Terminal. Hierzu gehen wir wie folgt vor. Jede Regel yaz mit yz 1 in G 2 wird durch y a z ersetzt. Dabei ist a ein neues Nichtterminal mit der Regel a a. (D.h. aus a ist nur das Wort a ableitbar.) 13 13 In Schritt 3 ist es offenbar ausreichend, nur für solche Terminalzeichen a ein neues Nichtterminal a einzuführen, für die es nach usführung von Schritt 1 eine Regel x gibt, so daß x 2 und a in x vorkommt. Weiter kann man a = setzen, falls eine bereits existente Variable ist, für die es genau die Regel a gibt. 146

4. Im letzten Schritt ersetzen wir G 3 durch eine äquivalente CNF-Grammatik G 4. Hierzu müssen alle Regeln B 1...B k mit k 3 von G 3 in CNF-Gestalt gebracht. Die Vorgehensweise ist wie folgt. Für jede Regel B 1 B 2...B k in G 3 mit k 3 fügen wir neue, paarweise verschiedene Nichtterminale C 1,C 2,...C k 2 ein und ersetzen die Regel B 1 B 2...B k durch folgende Regeln: B 1 C 1 C 1 B 2 C 2. C k 3 B k 2 C k 2 C k 2 B k 1 B k Die neuen Variablen C 1,C 2,...C k 2 tauchen in keinen weiteren Regeln auf. Die Motivation für die Ersetzung der Regel B 1 B 2...B k durch die angegebenen CNF-Regeln besteht darin, jede nwendung der Regel B 1...B k in G 3 durch die Rechtsableitung in G 4 zu simulieren. B 1 C 1 B 1 B 2 C 2 B 1 B 2 B 3 C 3... B 1 B 2...B k 2 C k 2 B 1 B 2...B k 2 B k 1 B k Da L(G)=L(G 1 )=L(G 2 )=L(G 3 )=L(G 4 ) und da G 4 offenbar eine CNF-Grammatik ist, ist hiermit die ussage von Satz 4.2.2 bewiesen. lgorithmus 15 G 1 G 2 (Elimination von Kettenregeln) (* Teil 1: entferne Zyklen *) WHILE 1,..., n V mit 1 2, 2 3,..., n 1 n, n 1 DO ersetze 2,..., n durch 1 entferne die Regel 1 1 bestimme eine Nummerierung 1,..., k der Nichtterminale, so dass gilt: aus i j folgt i<j (* Teil 2: entferne die verbleibenden Kettenregeln *) FOR i = k,k 1,...,1 DO FOR j = i+1,...,k DO IF i j THEN streiche die Regel i j FOR LL Regeln j x DO füge die Regel i x hinzu. FI 147

Bemerkung 4.2.3 (Elimination von Kettenregeln). In lgorithmus 15 ist die Reihenfolge, in der die Regeln i j entfernt werden, wesentlich. Z.B. für die Grammatik G mit den Regeln S, B und B b wird zuerst B durch b ersetzt und dann S durch S b. Würde man zuerst S eliminieren, dann würde man die Grammatik bestehend aus der Regeln S B, b, B b erhalten, welche die Kettenregel S B enthält. Selbst wenn man eventuell neu entstehende Kettenregeln ignoriert, kann das Verfahren fehlschlagen, falls die im lgorithmus beschriebene Reihenfolge nicht eingehalten wird. In obigem Beispiel würde man die Grammatik mit den Regeln b, B b erhalten, in der es keine Regel für das Startsymbol S gibt. Die erzeugte Sprache dieser Grammatik ist leer und stimmt somit nicht mit der durch G definierten Sprache L(G)={b} überein. Beispiel 4.2.4 (Erstellung der CNF). Für die CFG mit den Regeln S C und C acb ab arbeitet der im Beweis von Satz 4.2.2 angegebene lgorithmus zur Erstellung einer äquivalenten CNF-Grammatik wie folgt. Da es keine Zyklen 1 2,..., n 1 n, n 1 gibt, wird im ersten Schritt nur die Regel S C entfernt und durch die beiden Regeln S acb und S ab ersetzt. Im zweiten Schritt werden neue Nichtterminale a = und b = B mit den Regeln a und B b hinzugefügt. nschließend werden sämtliche Vorkommen von a bzw. b auf der rechten Seite einer Regel durch bzw. B ersetzt. Wir erhalten das Produktionssystem S CB B C CB B a B b Im letzten Schritt werden die beiden Regeln S CB und C CB durch ersetzt. 14 S D, D CB, C E, E CB, a,b b 14 Soweit der lgorithmus. Man sieht, daß einige Optimierungen möglich sind. Beispielsweise kann man D = E setzen und C durch S ersetzen. 148

Beispiel 4.2.5 (Erstellung der CNF, Elimination von Kettenregeln). Wir betrachten die CFG mit den folgenden Regeln. S ab ac B S Ba D d ddd B C cd C D c Zunächst werden mit lgorithmus 15 die Kettenregeln S, B, B S, C und C D entfernt. Wir erstellen folgenden Digraphen. S C S C D B D Die Variablen S,, B bilden eine starke Zusammenhangskomponente. Zusätzlich bilden jeweils C und D einelementige starke Zusammenhangskomponenten. Wir ersetzen und B durch S und streichen die Regel S S. Man erhält die Grammatik mit folgenden Regeln: S as ac C csd Sa C D c D d ddd Im letzten Schritt wird zuerst C D durch C d ddd, dann S C durch S d ddd c ersetzt. uf die so erhaltene Grammatik wenden wir den im Beweis von Satz 4.2.2 angegebenen lgorithmus an. Dieser bringt z.b. die Regel C ddd in CNF-Gestalt, indem ein neues Nichtterminal d eingefügt wird und C ddd zunächst durch C d DD, d d, und dann C d DD durch C d D 2 und D 2 DD ersetzt wird. Entsprechend wird mit der Regel S ddd verfahren. Die Regeln werden nun durch S as ac Sa S a S a C Sa a a c c ersetzt. Die Eliminierung der Regel S csd wird durch Einfügen der Regeln S c E und E S d vorgenommen. Die Größe der konstruierten CNF-Grammatik Die Größe einer CFG G wird an der nzahl an Nichtterminalen und der Summe der Längen aller Produktionen gemessen und mit size(g) bezeichnet. Das Terminalalphabet Σ wird als konstant angenommen und geht daher nicht in die Größe der Grammatik ein. Mit der beschriebenen Methode zur Erstellung einer äquivalenten CNF-Grammatik G gilt size(g )=O ( size(g) 2), 149

sofern eine CFG ohne ε-regeln vorliegt. Man beachte, daß die Elimination der Kettenregeln die Größe der Grammatik quadratisch vergrößern kann; während der Ersetzungsprozeß B 1...B k B 1 C 1, C 1 B 2 C 2,..., C k 2 B k 1 B k 2 keinen Einfluß auf die asymptotische Größe der Grammatik hat. Der in bschnitt 2 (siehe Seite 89) beschriebene lgorithmus, der eine gegebene CFG in eine äquivalente ε-freie CFG überführt, kann zu einem exponentiellen Blow-Up führen. Es gibt jedoch ein effizientes Verfahren, welches die asymptotische Größe der CFG unverändert läßt (siehe Übungen). 4.3 Der Cocke-Younger-Kasami lgorithmus Um das Wortproblem für kontextfreie Sprachen zu lösen, gehen wir von einer Darstellung der Sprache durch eine CNF-Grammatik G =(V,Σ,P,S) aus. Sei w = a 1 a 2...a n Σ. Für den Test, ob w L(G) liegt, wenden wir die Methode des dynamischen Programmierens zur Bestimmung der Variablenmengen V[i,j] = { V : w i,j } an. Dabei ist w i,j = a i a i+1...a i+j 1 und 1 i n, 1 j n+1 i. Es gilt: w liegt genau dann in L(G), wenn S V[1,n]. Da G in CNF ist, gilt V[i,1]= { V : a i }. Für j 2 und V gilt wi,j genau dann, wenn es eine Regel BC und einen Index l {1,...,j 1} gibt, so daß B w i,l und C w i+l,j l. B C w i,l = a i...a i+l 1 w i+l,j l = a i+l...a i+j 1 w i,l w i+l,j l bbildung 46: bleitungsbaums für w i,j = a i a i+1...a i+j 1 Daher haben wir folgende rekursive Charakterisierung der Mengen V[i,j]. V[i,j] = j 1 l=1 { V : BC mit B V[i,l] C V[i+l,j l] }. 150

Diese Beobachtung wird im lgorithmus von Cocke-Younger-Kasami, kurz CYK-lgorithmus genannt, angewandt. Siehe lgorithmus 16 auf Seite 151. Dieser berechnet in Bottom-Up- Manier die Zeilen der folgenden Tabelle. V[1,n] V[1,n 1] V[2,n 1] V[1,n 2] V[2,n 2] V[3,n 2]. V[1, 2] V[2, 2] V[3, 2] V[4, 2]... V[n 1, 2] V[1, 1] V[2, 1] V[3, 1] V[4, 1]... V[n 1, 1] V[n, 1] a 1 a 2 a 3 a 4... a n 1 a n lgorithmus 16 Der CYK-lgorithmus (* Das Eingabewort sei w = a 1 a 2...a n. *) FOR i = 1,...,n DO V[i,1] := { V : a i }; FOR j = 2,...,n DO FOR i = 1,...,n + 1 j DO V[i,j] := ; FOR l = 1,...,j 1 DO V[i,j] := V[i,j] { V : BC mit B V[i,l] C V[i+l,j l]}; IF S V[1,n] THEN Return J. w L(G). ELSE Return NEIN. w L(G). FI Es ist offensichtlich, daß die Laufzeit des CYK-lgorithmus kubisch in der Länge des Eingabeworts ist und daß der Platzbedarf quadratisch ist, sofern die Grammatik als fest angesehen wird. Die Kosten beziehen sich auf den Fall, daß die kontextfreie Sprache durch eine feste CNF- Grammatik dargestellt ist. Die Größe der CNF-Grammatik wird daher als konstant angesehen. Wir erhalten folgenden Satz: Satz 4.3.1. Das Wortproblem für CNF-Grammatiken läßt sich mit dem CYK-lgorithmus in Zeit O(n 3 ) und Platz O(n 2 ) lösen. Dabei ist n die Länge des Eingabeworts. Beispiel 4.3.2 (CYK-lgorithmus). Die rbeitsweise des CYK-lgorithmus für die Sprache L = {a n b n : n 1}, dargestellt durch die CNF-Grammatik S C B C SB a B b, und das Wort w = aabb ist wie folgt. Im Initialisierungsschritt wird 151

V[1, 1]=V[2, 1]={} und V[3, 1]=V[4, 1]={B} gesetzt. Daraus ergibt sich V[1, 2]=V[3, 2]= und V[2, 2]={S}. Im zweiten Schleifendurchlauf erhalten wir V[1, 3]= und V[2, 3]={C}, da S V[2,2], B V[3,1] und C SB. Wegen V[1,1] und C V[2,3] ergibt sich V[1,4]= {S}. Die oben erwähnte Tabelle hat also die Gestalt: {S} {C} {S} {} {} {B} {B} a a b b Der lgorithmus terminiert also mit der ntwort J. Eigenschaften kontextfreier Sprachen Wie für reguläre Sprachen gibt es ein notwendiges Kriterium, das unter dem Stichwort Pumping Lemma bekannt ist und das für den Nachweis, daß eine Sprache nicht kontextfrei ist, hilfreich sein kann. Später diskutieren wir bschlußeigenschaften für die Klasse der kontextfreien Sprachen. 4.4 Das Pumping Lemma für kontextfreie Sprachen In nalogie zum Pumping Lemma für reguläre Sprachen gibt es ein notwendiges Kriterium für kontextfreie Sprachen. Wir werden dieses mit Hilfe der bleitungsbäume für CNF- Grammatiken beweisen. Satz 4.4.1 (Pumping Lemma für kontextfreie Sprachen). Sei L eine kontextfreie Sprache. Dann gibt es eine natürliche Zahl n, so daß sich jedes Wort z L der Länge n wie folgt zerlegen läßt: z = uvwxy, wobei (1) vx 1 (2) vwx n (3) uv k wx k y L für alle k N. Beweis. Wir können o.e. annehmen, daß ε/ L. (Ist ε L, dann betrachten wir die Sprache L \{ε} anstelle von L.) Sei G eine CNF-Grammatik mit L = L(G) (siehe Satz 4.2.2, Seite 146). Weiter sei N = V die nzahl an Variablen in G. Die im Pumping Lemma genannte Konstante n ist wie folgt definiert: n = 2 N 152

Sei z L mit z n. Zu zeigen ist nun, dass sich z in fünf Teilwörter u,v,w,x,y zerlegen läßt, so dass Eigenschaften (1), (2) und (3) erfüllt sind. ls Hilfsmittel für die Definition solcher Teilwörter u, v, w, x, y verwenden wir einen bleitungsbaum T für z. Dieser ist ein Binärbaum mit z n Blättern. Innere Knoten mit genau einem Sohn repräsentieren eine Regel der Form a. Sie haben die Höhe 1. lle anderen inneren Knoten stehen für eine Regel der Form BC. Sie haben genau zwei Söhne. Die Höhe von T sei h+1. Es gilt: h log z logn = N. Sei v 0,v 1,...,v h+1 ein Pfad in T der Länge h+1 von der Wurzel v 0 zu einem Blatt v h+1. Weiter sei i die Markierung des Knotens v i, i = 0,1,...,h. Dann ist 0 = S, 1,..., h eine Folge von Variablen der Länge h+1 N+1. lso gibt es eine Variable und Indizes i,j {0,1,...,h}, so daß folgende drei Eigenschaften erfüllt sind: = i = j i < j i+1,..., h sind paarweise verschieden. Wir zerlegen z in z = uvwxy gemäß der Skizze in bbildung 47. S i j u v w x y z = uvwxy bbildung 47: Zerlegung von z in uvwxy 153

(1) Da G in CNF ist, ist v ε oder x ε. (Da v i ein innerer Knoten der Höhe > 1 ist, steht v i für das nwenden einer Regel der Gestalt i BC. Ist z.b. v j ein Nachfolger des mit B markierten Sohns von v i, so ist das aus C hergeleitete Wort ein Suffix von x. Somit ist x ε.) Es folgt: vx 1. (2) Wir betrachten den Teilbaum T mit Wurzel v i. T ist ein bleitungsbaum für die bleitung i vwx. Die Höhe von T ist h i+1, da v i,v i+1,...,v h+1 ein längster Pfad in T ist. Da i+1,..., h paarweise verschieden sind, gilt h i N. Die Höhe von T ist daher N+1. Da in jeder CNF-Grammatik die Höhe eines bleitungsbaum für ein Wort der Länge l mindestens logl + 1 ist, folgt hieraus: vwx 2 h i 2 N = n (3) bleitungen der Wörter uv k wx k y ergeben sich durch Kombinieren der bleitungen S u i y = uy, = j w, = i v j x = vx. Es folgt S uv k wx k y (also uv k wx k y L) für alle k N. bbildung 48 skizziert die bleitungsbäume für k = 0 und k = 2. Die Zerlegung z = uvwxy erfüllt also die drei geforderten Bedingungen. k = 0 : S uy uwy S k = 2 : S uy uvxy uvvxxy uv 2 wx 2 y S u w y u v v w x x y bbildung 48: Pumpeigenschaft für k = 0 und k = 2 154