Michael Gamer / 2015
Formale Grundlagen der Informatik
1
Michael Gamer
Reguläre Ausdrücke
Kommen in der Praxis immer dann vor, wenn standardisierte Eingaben erforderlich sind: Telefonnummern: +Land (0) Ort Anschluß Dateinamen: (A-Z, a-z)+(A-Z, a-z, 0-9)*.(A-Z, a-z, 0-9)* Informatik: ‣ (0|1)*00 :
• alle durch vier teilbaren Dualzahlen. ‣ (A|…|Z|a|…|z)+(A|…|Z|a|…|z|0|…9)*.pdf
• Alle PDF-Dokumente
2
Michael Gamer
Reguläre Ausdrücke - Definition
Reguläre Ausdrücke werden durch folgende Vereinbarungen definiert:
1.∅ ist ein regulärer Ausdruck und L(∅ ) = ∅
2.Für a ∈ Σ ∪ {ε} ist a ein regulärer Ausdruck mit L(a) = {a}
3.Sind X und Y reguläre Ausdrücke so sind auch
X|Y, XY, X*
reguläre Ausdrücke mit
L(X|Y) = L(X)∪L(Y), L(XY) = L(X)L(Y) und L(X*) = L(X)*
Schreibweise: Statt X X* wird kurz X+ geschrieben
3
Michael Gamer
Reguläre Ausdrücke Beispiel (1)
Ein regulärer Ausdruck für ganze Zahlen: 0 | (ε | -)(1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)* Hier ist das Vorzeichen „+“ nicht zulässig, soll dies der Fall sein, so muß die Definition wie folgt abgefaßt werden: 0 | (ε | -|+)(1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)* Achtung: Mit regulären Ausdrücken ist folgend Festlegung von Kreditkartennummern nicht zulässig: (0|1|2|3|4|5|6|7|8|9)4 - (0|1|2|3|4|5|6|7|8|9)4 - (0|1|2|3|4|5|6|7|8|9)4 - (0|1|2|3|4|5|6|7|8|9)4 Da als Exponent nur der „*“ und das „+“zugelassen sind.
4
Michael Gamer
Beispiel (2)
Gesucht ist ein regulärer Ausdruck α über dem Alphabet {0,1} der die Sprache beschreibt, die aus einer Zeichenketten mit einer abwechselnden Folge von Nullen und Einsen besteht Erster Ansatz: ‣ α = (01)* Dies reicht nicht hin: da z.B. 1010 auch
Element der Sprache ist Weitere Möglichkeiten: ‣ Das erste Zeichen ist eine 1 ‣ Die Folge beginnt und endet mit 0 resp. 1
5
Michael Gamer
Beispiel (3)
Ein Lösungsansatz ist mehrere reguläre Ausdrücke zu bilden und dann zu einem Ausdruck zu vereinen. ‣ (01)* : Alle Zeichenketten der From 010101… ‣ (10)* : Alle Zeichenketten der From 101010… ‣ 0(10)*: Zeichenketten die mit 0 beginnen und
enden ‣ 1(01)*: Zeichenketten die mit 1 beginnen und
enden
6
Also: α = (01)*+(10)*+0(10)*+1(01)*
Michael Gamer
Reguläre Ausdrücke und endliche Automaten
Zu einem regulären Ausdruck läßt sich leicht ein endlicher Automat angeben, der genau die Sprache akzeptiert, die auch der reguläre Ausdruck beschreibt. Umgekehrt kann man auch jede Sprache, die von einem endlichen Automaten akzeptiert wird einfach mit einem regulären Ausdruck beschreiben. Insgesamt erhält man also, daß die von endlichen Automaten akzeptierten Sprachen genau diejenigen sind, die auch mit regulären Ausdrucken beschrieben werden können.
7
Michael Gamer
Pumping-Lemmas
Weiß man, daß der Automat ein Wort der Länge > 2 akzeptiert, so muß dieses das Zeichen b enthalten
Grammatiken und Automaten geben Struktureigenschaften von Sprachen vor.
Dies impliziert gewisse, strukturelle Eigenschaften von Worten hinreichender Länge.
Beispiel:
8
1 2 3a
b
a
Michael Gamer
Pumping Lemma für reguläre Sprachen
Für jede reguläre Sprache L gibt es eine natürliche Zahl n, so daß alle Worte w der Sprache deren Länge größer ist als n sich darstellen lassen als: W = x y z Mit |y| >0 und |xz| < n und x yk z ∈ L für alle k ≥ 0
9
Michael Gamer / 2015
Grammatiken
10
Michael Gamer
Systematischer Wortaufbau
Beschreibung der Worte durch Strukturangaben Dazu ‣ Einführung von „Variablen“ zur Beschreibung von
Wortstrukturen ‣ Trennung des Variablenalphabets vom Alphabet
der zugrundeliegenden Sprache „Produktion“ von Worten durch Angabe der Transformationsregeln von Variablen und Elementen aus der Sprache
11
Michael Gamer
Grammatiken
„Aufbau“ der Sprache anbn durch das Angeben konkreter Regeln: Σ = {a,b} Regeln: S → aSb S → ε Diese Regeln „produzieren“ die obige Sprache, indem die zulässigen Worte gezielt aufgebaut werden
12
Michael Gamer
Formale Definition „Grammatik“
Eine Grammatik G ist ein Quadrupel (V,Σ,S,P) bestehend aus
V: Einer Menge von Variablen mit V∩Σ = ∅
Σ: Ein Alphabet, Menge der Terminalsymbole
S: S∈V, das Startsymbol
P: P ⊆ (V∪Σ)+× (V∪Σ)+ die Produktionsregeln
Im folgenden verwenden wir, falls nicht anders kenntlich gemacht, folgende Konventionen: •Großbuchstaben bezeichnen Variable •Kleinbuchstaben bezeichnen Terminalsymbole
13
Michael Gamer
Beispiel
Sei G = (V,Σ,S,P), mit
V = {S,E}
Σ = {(,),+,*,x,y,z}
S ∈ V
P = {S→ S + S, S → S * S, S → (S), S→E, E → x, E → y, E → z }
Mit dieser Definition lassen sich einfache arithmetische Ausdrücke, wie beispielsweise: x+y, x*x, (x+y)*x, etc. erzeugen.
14
Michael Gamer
Ableitungen
Sei (V,Σ,S,P) eine Grammatik und u,v,w∈ (Σ∪V)* Worte über dem Alphabet Σ∪V.
Ein Wort v∈(Σ∪V)* heißt direkt ableitbar aus u ∈(Σ∪V)* genau dann, wenn
(u,v) ∈ P
gilt. Schreibweise u ⇒ v,
Das Wort w heißt dann ableitbar aus u bzgl. der Grammatik G, genau dann, wenn es eine Folge direkter Ableitungen
u ⇒ v1 ⇒ v2 … vn ⇒ w
gibt. Schreibweise: u ⇒* w
15
Michael Gamer
Sprache einer Grammatik
Die Sprache einer Grammatik können wir nun in einfacher Art und Weise beschreiben. Ist G = (V,Σ,S,P) eine Grammatik, so heißt
L(G) := {w ∈ Σ* | S ⇒* w }
die Sprache der Grammatik G.
Beispiel: G = (V,Σ,S,P) mit Σ ={1} und
P = {S → 11S| ε }
Die von G erzeugte Sprache ist dann:
L(G) = {1n | n gerade}
16
Michael Gamer
Vereinbarung
Für Ausdrücke der Form
P = {S→ S + S, S → S * S, S → (S), S → E, E → x, E → y, E → z }
Schreiben wir künftig kürzer
P = {S→ S + S | S * S | (S),S → E, E → x | y | z }
Das Zeichen „|“ steht dabei für die logische „oder“ Verknüpfung
Da ε nicht ohne Weiteres aus dem Startsymbol abgeleitet werden kann erlauben wir künftig die Regel S → ε zuzulassen, unter der Voraussetzung, daß S nicht auf der rechten Seite einer Produktion erscheint.
17
Michael Gamer
Ableitungsbäume
Sei wieder G = (V,Σ,S,P), mit V = {S,E} , Σ = {(,),+,*,x,y,z}, und den Produktionen P = {S→ S + S, S → S * S, S → (S), S → E, E → x, E → y, E → z } Die Grammatik einfacher arithmetischer Ausdrücke. Die Ableitung S ⇒ S+S ⇒ S + S*S ⇒ E+ S*S ⇒ E + S*(S) ⇒x + S * (S)
⇒ x+ S* (S + S) ⇒ x + E*(S+ S) ⇒ x + E * (E + S)
⇒ x + E * (E + E) ⇒ x + y* (E + E) ⇒ x + y* (x + E)
⇒ x + y* (x + y)
kann man in Form eines Baumes darstellen. Dieser Baum heißt Ableitungsbaum des Wortes x+y*(x+y)
18
Michael Gamer
Beispiel: Ableitungsbaum
Ein Ableitungsbaum für den Ausdruck: x + y * (x + y )19
Michael Gamer
Mehrdeutigkeiten
Die Ableitung eines Wortes bzgl. einer Grammatik ist keinesfalls eindeutig.
Beispiel: Wir betrachten wieder die Grammatik für arithmetische Ausdrücke:
G = (V,Σ,S,P), mit
V = {S,E} , Σ = {(,),+,*,x,y,z}, S = E und den Produktionen
P = {S→ S + S, S → S * S, S → (S), S → E, E → x, E → y, E → z }
Ziel: Ableitung des Ausdrucks x + y*z
20
Michael Gamer
Mehrdeutigkeiten
Term = x + y*z
Erste Möglichkeit
S → S + S → S + S * S → E + S * S → x + S * S → … → x + y * z
Zweite Möglichkeit
S → S + S → E + S → x + S → x + S * S → … →x + y * z
Dritte Möglichkeit
S → S + S → S + S * S → S+ E* S → S+ y * S → … → x + y * z
usw.
21
Michael Gamer
Vermeidung von Mehrdeutigkeiten
Derartige Mehrdeutigkeiten können vermieden werden, falls Regeln definiert werden, die klar festlegen, welche Produktion im Konfliktfall anzuwenden ist.
Meist wird der Begriff der Rechtsableitung eingeführt:
Eine Rechtsableitung ist eine Ableitung in der immer die am weitesten rechts stehende Variable in der Ableitung ersetzt wird.
Beispiel:
S → S + S → S + S * S → S + S * E → S+ S * z → S + E * z → …
Es können dabei aber immer noch Mehrdeutigkeiten auftreten
22
Michael Gamer
Vermeidung von Mehrdeutigkeiten
Rechtsableitungen verhindern nicht, daß Mehrdeutigkeiten auftreten, verringern aber die Anzahl mehrdeutiger Ableitungen.
Sollen alle Rechtsableitungen eindeutig sein ist es oft erforderlich die Struktur der Produktionen zu ändern.
23
Michael Gamer
Ableitungsbäume, Rechtsableitung, Linksableitung
In einem Ableitungsbaum bestehen die Blätter aus Terminalsymbolen und alle inneren Knoten aus Variablen der zugrundeliegenden Grammatik.
Es gibt in der Regel unterschiedliche Ableitungen für ein Wort aus Terminalsymbolen, daher werden die folgenden Vereinbarungen getroffen:
Eine Ableitung heißt Rechtsableitung (Linksableitung), falls in jedem Ableitungsschritt die am weitesten rechts (links) stehende Variable ersetzt wird.
Rechts- bzw. Linksableitungen verhindern keine Mehrdeutigkeiten, schränken deren Anzahl aber ein.
24
Michael Gamer
Die Chomsky Typen
Typ Name Bedingung an Regeln u → v Beispiel
3 Reguläru ist eine Variable und v ein Zeichen aus Σ∪{ε}
Oder v=sT mit s∈Σ und T∈V
A → a Oder
A → aA
2 kontextfrei u ist eine Variable A → aA, B →AABB
1 Kontextsensitiv Es gilt |u| ≤ |v| aAb → aBbA, aAa → AAAa
0 Rekursiv aufzählbar u enthält eine Variable aAb → aB, aAa
→aaAABB
Grammatiken werden mit folgenden Vereinbarungen in Klassen eingeteilt:
Ist G = (V,Σ,S,P), und enthält P die Produktionen u → v, u enthält mindestens eine Variable
25
Michael Gamer
Beispiel Produktionen bei Typ-n Grammatiken
Zulässig bei Typ-0 Grammatiken xAy → ε|x | xA | B| xAyBzC Zulässig bei Typ-1 Grammatiken xAy → AAxxAA, xAx → xxAAxx ‣ Die Produktion xAy → xA ist hier nicht zulässig ‣ Verkürzende Regeln sind hier unzulässig
Zulässig bei Typ-2 Grammatiken A → x | xA | xABy ‣ Die Produktionen mit xAy auf der linken Seite sind nicht zulässig ‣ Auf der linken Seite jeder Produktion steht genau eine Variable
Typ-3 Grammatiken Nur Produktionen der Form A → a | aA | ε sind zulässig
26
Michael Gamer
Beispiel (1/3)
Gegeben die Grammatiken ‣ G1 := (Σ, V, S, P1) und ‣ G2 := (Σ, V, S, P2) mit
• V:= {S, A, B, C} • Σ := {a,b} • P1 := {S →AB, • A→BC | a , • B→CC | b, • C→a}
‣ Wieviele und wie lange Wörter werden erzeugt?
27
Michael Gamer
Beispiel (2/3)
Die Produktionen können als Graph dargestellt werden:
28
S
B
C
A
Es werden nur endlich lange Worte produziert
Michael Gamer
Beispiel (3/3)
Hinzunahme einer Produktion P2 := P1 ∪ { C→AB}
29
S
B
C
A
Es werden beliebig lange Worte produziert
Michael Gamer
Die Chomsky Normalform
Eine Grammatik G = (V,Σ,S,P) ist in Chomsky-Normalform, genau dann, wenn alle Produktionen die Form A→ BC oder A → a haben und ε auf keiner rechten Seite einer Regel vorkommt. Der Ableitungsbaum einer Grammatik in Chomsky-Normalform ist ein binärer Wurzelbaum
30
Michael Gamer
Die Chomsky Hierarchie
• Die regulären Sprachen sind eine echte Teilmenge der kontextfreien Sprachen.
• Die kontextfreien Sprachen, die nicht die leere Zeichenkette enthalten, sind eine echte Teilmenge der kontextsensitiven Sprachen.
• Die kontextsensitiven Sprachen sind eine echte Teilmenge der rekursiv aufzählbaren Sprachen.
31
Typ 0
Typ 1
Typ 2
Typ 3
Michael Gamer
Palindrome
Die Wortmenge der Palindrome über einem Alphabet ∑ mit mehr als zwei Zeichen ist keine reguläre Sprache. ‣ Palindrome sind dabei Strings w über ∑ für w=wR
gilt ‣ über dem Alphabet {0,1} sind etwa
• 101, 010, 110011 Palindorme • 110, 011 und 110111 sind keine Palindrome
32
Michael Gamer
Beispiel Palindrome (1)
Wir weisen nach, daß die Sprache der Palindrome über ∑={0,1}, sie diese Lpal keine reguläre Sprache ist. Dazu wird das Pumping Lemma für reguläre Sprachen verwendet. Angenommen Lpal wäre regulär, dann ‣ gibt es eine natürliche Zahl n, so daß Worte w
deren Länge n übersteigt als w= xyz zerlegt werden können
‣ ferner gilt dann für jedes k∈ℕ xykz∈ Lpal
33
Michael Gamer
Beispiel Palindrome (2)
Wir betrachten das Palindrom w= 0n10n. Die Länge von w ist sicher größer als n, also gilt das Pumping Lemma für reguläre Sprachen. Als gibt es eine Zerlegung w = xyz = 0n10n mit |y|>0 ‣ y muß dabei eine oder mehr Nullen der ersten
Gruppe von Nullen aus w enthalten ‣ nach dem Pumping Lemma wäre dann auch xz ein
Palindrom ‣ dies kann aufgrund der Struktur von y jedoch nicht
sein ‣ Also ist Lpal keine reguläre Sprache
34
Michael Gamer
Beispiel Palindrome (3)
Die Struktur der Sprache Lpal kann induktiv leicht erschlossen werden. Dazu folgende Überlegung ‣ Ein Palindrom welches mit 0 beginnt endet auch
mit 0 ‣ Ein Palindrom welches mit 1 beginnt endet auch
mit 1 ‣ Ein Palindrom bleibt Palindrom, wenn man das
erste und das letzte Zeichen entfernt ‣ also kann man die Palindrome über ∑ induktiv
definieren.
35
Michael Gamer
Beispiel Palindrome (4)
36
𝜀, 0 und 1 sind Palindrome. M.a.W. Strings der Länge ≤1 sind Palindrome.
Induktionsanfang:
Induktionsschritt: Ist w ein Palindrom so sind auch 0w0 und 1w1 Palindrome
Ein Wort w ist genau dann ein Palindrom, wenn es sich aus diesen Induktionsschritten herleiten
(produzieren) läßt
Michael Gamer
Beispiel: eine Grammatik für Palindrome
Gesucht: Grammatik über dem Alphabet Σ = {0,1}, die genau diejenigen Worte produziert, die die Form u = wwR mit w∈Σ* haben.
D. h. wir suchen eine Grammatik, die genau die Palindrome mit einer geraden Anzahl von Zeichen über dem Alphabet Σ produziert.
Sei G = (V,Σ,S,P), eine Grammatik mit
V = {S}
Σ = {0,1}
P = { S → ε, S → 0S0, S → 1S1}
Damit produziert G genau die Palindrome mit gerader Zeichenzahl über Σ.
37
Michael Gamer
Beispiel: eine Grammatik alle Palindrome (1)
Gesucht: Grammatik über dem Alphabet Σ = {0,1}, die genau die Palindrome über Σ erzeugt.
Sei G = (V,Σ,S,P), eine Grammatik mit
V = {S}
Σ = {0,1}
P = { S → ε, S → 0S0, S → 1S1, S → 1, S → 0 }
Damit produziert G genau die Palindrome über Σ.
38
Michael Gamer
Reguläre Grammatiken
Jede vom einem endlichen Automaten erzeugte Sprache wird von einer regulären Grammatik erzeugt.
Dazu konstruiert man aus dem Automaten eine Grammatik, die genau die vom Automaten erkannte Sprache produziert.
Gegeben ein endlicher Automat: (Σ,Q,s,F,δ),
Vorgehensweise:
Falls δ(q1,a) = q2 dann: q1 → a q2 ∈ P
Falls δ(q1,a) = q2 und q2 ∈ F dann: q1 → a ∈ P
Falls ε∈ L(A) dann q0 → ε ∈ P
39
Michael Gamer
Beispiel
Die Menge P der zugehörigen Grammatik besteht genau aus den folgenden Elementen:
P = { q0 → 0q0, q0 → 0,q0 → 1q1, q1 → 0q1, q1 → 1q0, q0 → ε, q1 →1}
40
00
1
1
Michael Gamer
Grammatiken mit ε-Produktionen
Enthält eine Grammatik Ableitungen der Form S → ε so kann man diese in eine Grammatik ohne ε-Produktionen wie folgt umwandeln.
Schritt 1
Zerlegung der Menge der Variablen in zwei disjunkte Teilmengen V1 und V2, derart, daß V1 alle Variable enthält aus denen das leere Wort hergeleitet werden kann.
V1 ist die kleinste Menge, für die folgendes gilt:
1.A → ε impliziert A ∈ V1
2.B → C1C2C3 ... Cn und Ci∈ V1 für alle i impliziert B ∈ V1
41
Michael Gamer
Elimination von ε-Produktionen
Für kontextfreie und reguläre Grammatiken (und nur für diese!) ist die Verwendung von Produktionen der Form A→ε unkritisch. Die Elimination von Regeln der Form A→ε geschieht dabei wie folgt: Zerlegung der Menge der V und V1 und V2, derart, daß gilt: ‣ V1 enthält die Variablen aus denen ε abgeleitet werden kann ‣ V1 ist die kleinste Menge für die gilt:
• A→ε ∈ P ⇒ A ∈ V1
• B → C1C2 … Cn und Ci ∈ V1 für alle i impliziert B∈ V1 Lösche alle ε-Regeln. Für jede Regel D -> w, in der mindestens eine Variable aus V1 in w Seite vorkommt werden alle Regeln der Form D -> w' zu den Produktionen hinzugefügt. w' ist dabei nichtleeres Wort, das durch Weglassen von Variablen aus V1 aus w entsteht.
42
Michael Gamer
Grammatiken mit ε-Produktionen
Schritt 2 Lösche alle ε-Regeln und füge für jede Regel D -> w, in der mindestens eine Variable aus V1 in w vorkommt, alle Regeln der Form D -> w' hinzu, wobei w' ein nichtleeres Wort ist, das durch Streichung von Variablen aus V1 in w entsteht. Die Zahl der neu zu P hinzuzufügenden Produktionen steigt damit stark an.
43
Michael Gamer
Beispiel: Grammatiken mit ε-Produktionen
D → abBAba, D → abAba,
D → abBba, D → abba, D → AabAba, D → AabBba, D → Aabba,
Sind k Positionen mit einer Variablen aus V1 belegt erhält man 2k-1 neue Produktionen
Wir betrachten die folgende Produktion einer Grammatik: D → AabBAba, mit A,B ∈ V1 Die neu hinzukommenden Regeln sind dann:
44
Michael Gamer
Beispiel: Pumping Lemma für reguläre Sprachen
1 2 3a
b
a
Wird w vom Automaten akzeptiert und ist |w|>2 so hat w die Gestalt
w = a(ba)na
Dabei ist n eine natürliche Zahl oder 0
45
Michael Gamer
Pumping Lemma für kontextfreie Sprachen
Analogon zum Pumping Lemma für reguläre Sprachen. Gegeben ist eine kontextfreie Grammatik G = (V,Σ,S,P). Zugrundeliegende Idee: ‣ Falls ein hinreichend „langes“ Wort in L(G)
existiert, so taucht eine Variable aus V auf der rechten Seite einer Produktion doppelt auf.
‣ Damit wird ein Teilbaum eines Ableitungsbaums iteriert.
46
Michael Gamer
Pumping Lemma für kontextfreie Sprachen
Sei G = (V,Σ,S,P) eine kontextfreie Grammatik. Dann gibt es eine natürliche Zahl n mit: Alle z ∈ L(G) mit |z| > n existiert eine Zerlegung z = uvwxy mit |vx| ≧ 1, |vwx| ≦n
uvkwxky ∈ L(G), für alle k ∈ℕ
47
Michael Gamer
Anwendung des Pumping Lemmas
Das Pumping Lemma wird meist angewandt, um zu entscheiden, daß eine Sprache L nicht kontextfrei ist Wir betrachten die Sprache L über dem Alphabet Σ = {a,b,c} mit L = {anbncn| n ∈ℕ}
L ist nicht kontextfrei. Wäre L kontextfrei, könnte man (Pumping Lemma) ein hinreichend langes Wort z ∈ L(G) in z = uvwxy zerlegen, mit |vx| ≥ 1, |vwx| ≤ n uvkwxky ∈ L(G), für alle k ∈ ℕ0
48
Michael Gamer
Anwendung des Pumping Lemmas
Damit folgt:
Da uwy in L ist, muß vx die gleiche Anzahl der Buchstaben a, b, c enthalten Wegen |vx|>1 enthält vx jeweils mindestens einen der Buchstaben a, b, c Da |vwx| ≤ n gilt kann vx nicht alle Buchstaben aus {a, b, c} enthalten Widerspruch! Also ist L nicht kontextfrei.
49
Michael Gamer
Beweis (1)
50
Fall1: v und x bestehen aus verschiedenen Zeichen, d.h.
v ∉ {a}* ∪ {b}* ∪ {c}* oder x ∉ {a}* ∪ {b}* ∪ {c}*
Dann stehen in dem Wort uv2wx2y nicht alle a´s vor den b´s bzw nicht alle b´s vor den c´s.
Widerspruch!
Beweis durch Fallunterscheidungen
Michael Gamer
Beweis (2)
51
Fall2: vwx ist ein Teilwort von ap
u = aj, v=ak, w = al und x= am, und
y = ap-(j+k+l+m)bpcp mit k+m > 0
Für i=0 erhält man uv0wx0y = ap-(k+m)bpcp mit k+m >0, also
uv0wx0y ∉ L, Widerspruch!
Michael Gamer
Beweis (3)
52
Fall 3 und 4: vwx ist ein Teilwort von bp oder cp
Widerspruch analog zu Fall 2
Michael Gamer
Beweis (4)
53
Fall 5: v ist ein Teilwort von ap und x ein Teilwort von bp
Dann ist u = aj, v = ak und w = ap-(j+k)bl, x = bm, y = bp-(l+m)cp
und es gilt k+m >0
Für i=0 erhält man uv0wx0y = ap-kbp-mcp ∉ L, Widerspruch!
Michael Gamer
Beweis (6)
54
Fall 6: v ist ein Teilwort von ap und x ein Teilwort von cp
Fall 6: v ist ein Teilwort von bp und x ein Teilwort von cp
Beide Fälle ergeben analog zu Fall 5 einen Widerspruch
Michael Gamer / 2015
Formale Grundlagen der InformatikEigenschaften kontextfreier Grammatiken und
Normalformen
Michael Gamer
Was sind Normalformen?
Normalformen stellen sicher, daß bei Grammatiken die Produktionen stets eine bestimmte Struktur besitzen. Vorteile: ‣ einheitliche Darstellung der Produktionsregeln ‣ besserer Überblick über die Ableitungen ‣ vorgegebene Struktur der Ableitungsbäume
56
Michael Gamer
Die Chomsky Normalform
Für jede kontextfreie Grammatik deren Sprache das leere Wort nicht umfaßt gibt es eine äquivalente Grammatik für die jede Produktion eine der beiden Formen besitzt ‣ A → BC ‣ A →a
dabei bezeichnen Großbuchstaben Variable und Kleinbuchstaben Terminalsymbole.
57
Michael Gamer
Folgerungen für die Chomsky NF
Aus der Struktur der Ableitungen folgen sofort die beiden Aussagen: ‣ Jeder Ableitungsbaum einer Chomsky Grammatik
ist ein binärer Baum (das ist einfach einzusehen) ‣ Die Frage, ob ein Wort w von einer Grammatik in
Chomsky Normalform erzeugt werden kann ist in O(n3) lösbar (n = Wortlänge)… ist nicht ganz so einfach einzusehen
58
Michael Gamer
Die Greibach Normalform
Für jede kontextfreie Grammatik für eine Sprache die nicht nur aus dem leeren Wort besteht gibt es eine äquivalente Grammatik deren Produktionen die folgende Form haben ‣ A → aα
dabei ist α ein beliebiger String aus Variablen und a ein Terminalzeichen
59
Michael Gamer
Voraussetzungen für Normalformen
Um eine Grammatik in eine Normalform zu überführen sind einige vorbereitende Schritte nötig ‣ Alle „unnützen“ Symbole, d.h. all diese die im
Grunde nicht gebraucht werden, müssen entfernt werden
‣ 𝜀-Produktionen, d.h. Produktionen der Form P ➝ ∊, müssen entfernt werden
‣ Einheitsproduktionen (unit productions), d.h. Produktionen der Form A ➝ B müssen ebenfalls entfernt werden
60
Michael Gamer
Elimination unnützer Symbole
61
Ein Symbol ist nützlich, wenn es eine Ableitung der Form
S⇒*αXβ⇒
*w
mit einem Terminalstring w gibt, im andern Fall heißt ein solches Symbol unnütz. Das Entfernen unnützer Symbole ändert die Sprache der Grammatik nicht.
Michael Gamer
Erreichbare und erzeugende Symbole
62
Ein Symbol ist erreichbar, wenn es eine Ableitung der Form
mit einer Variablen X und beliebigen Strings 𝛼 und 𝛽 gibt.
S⇒*αXβ
Ein Symbol ist erzeugend, wenn es eine Ableitung der Form
X⇒*w
mit einem Terminalstring w gibt
Ein nützliches Symbol ist sowohl erzeugend als auch erreichbar
Michael Gamer
Beispiel (1)
Wir betrachten die Grammatik G = (V,∑,S,P), mit ∑={a,b} und den Produktionen ‣ S ➝ AB|a und A ➝ b
Dabei sind A und S erzeugende Symbole, B nicht. Wenn B eliminiert wird, fällt die Produktion S ➝ AB weg und die Produktionen reduzieren sich zu ‣ S ➝ a und A ➝ b
Also sind nur S und a erreichbar und A kann entfernt werden. Es bleibt: S ➝ a, welches die Sprache von G erzeugt.
63
Michael Gamer
Beispiel (2)
Betrachten wir zuerst die Erreichbarkeit der Symbole, der Grammatik ‣ S ➝ AB|a und A ➝ b
so ist ersichtlich, daß alle Symbole erreichbar sind. Eliminiert man nun B, so fällt die Produktion S ➝ AB weg und die Produktionen reduzieren sich zu ‣ S ➝ a und A ➝ b
Diese erzeugen ebenfalls die Sprache L(G), enthalten aber unnütze Symbole (A und b)
64
Michael Gamer
Vorgehensweise
Also erhalten wir folgende Vorgehensweise. Für eine gegebene Grammatik G mit L(G) ≠ ∅ ‣ Elimination aller unnützen Symbole und alle
Produktionen die diese enthalten ‣ Im nächsten Schritt werden alle Symbole entfernt
die nicht erreichbar sind Man erhält eine Grammatik G´ die die selbe Sprache wie G erzeugt, aber weder unnütze Symbole enthält, noch unerreichbare Zeichenketten.
65
Aho Satz 7.2
Michael Gamer
Algorithmus
Der folgende induktive Algorithmus bestimmt die Menge der erzeugenden und erreichbaren Symbole ‣ Induktionsanfang: Jedes Symbol aus ∑ ist
erzeugend (es erzeugt sich selbst) ‣ Induktionsschritt: Wenn es eine Produktion A ➝ 𝛼
gibt und 𝛼 erzeugend ist, so ist A erzeugend. (Ein Beweis hierzu findet sich in Aho Satz 7.4)
66
Michael Gamer
Bestimmung erzeugender Symbole
Der folgende induktive Algorithmus bestimmt die Menge der erzeugenden Symbole ‣ Induktionsanfang: Jedes Symbol aus ∑ ist
erzeugend (es erzeugt sich selbst) ‣ Induktionsschritt: Wenn es eine Produktion A ➝ 𝛼
gibt und 𝛼 erzeugend ist, so ist A erzeugend. Damit findet man alle erzeugenden Symbole.
67
(Ein Beweis hierzu findet sich in Aho Satz 7.4)
Michael Gamer
Beispiel
Wir betrachten wieder die Grammatik G = (V,∑,S,P), mit ∑={a,b} und den Produktionen ‣ S ➝ AB|a und A ➝ b
a und b sind nun erzeugend, da Elemente aus ∑. Wegen A ➝ b ist auf A erzeugend und wegen S ➝ a ist S erzeugend. Die Produktion S ➝ AB kann nicht erreicht werden, da B nicht erzeugend ist. Also erhält man als Menge der erzeugenden Symbole: {a, b, S, A}
68
Michael Gamer
Bestimmung erreichbarer Symbole
Der folgende induktive Algorithmus bestimmt die Menge der erreichbaren Symbole ‣ Induktionsanfang: S ist erreichbar ‣ Induktionsschritt: Wenn eine Variable A erreichbar
ist und A ➝ 𝛼 eine Produktion ist, so sind alle Variable aus 𝛼 erreichbar
Damit findet man alle erreichbaren Symbole.
69
(Ein Beweis hierzu findet sich in Aho Satz 7.6)
Michael Gamer
Beispiel
Wir betrachten wieder die Grammatik G = (V,∑,S,P), mit ∑={a,b} und den Produktionen ‣ S ➝ AB|a und A ➝ b
S ist erreichbar da S ∈ P gilt. Wegen S ➝ AB|a sind auch A, B und a erreichbar. Damit folgt, wegen A ➝ b, daß auch b erreichbar ist Also erhält man als Menge der erreichbaren Symbole: {S, A, B, a, b}
70
Michael Gamer
Elimination von Einheitsproduktionen
Einheitsproduktionen sind Produktionen der Form ‣ A → B
Derartige Produktionen erhöhen bisweilen die Lesbarkeit der Grammatik, haben aber keinen Einfluß auf die erzeugte Sprache (vgl. Grammatik für arithmetische Ausdrücke).
71
Michael Gamer
Beispiel (1)
Grammatik für arithmetische Ausdrücke: ‣ I → a | b | Ia | Ib | I0 | I1 ‣ F → I | (E) ‣ T → F | T * F ‣ E → T | E + T
mit Σ = {0, 1, a, b,(,),*,+} und V = {I, F, T, E}
72
Was ist das Startsymbol?
Beispiel (2):Vergleich der Grammatiken
Zum Vergleich ‣ I → a | b | Ia | Ib | I0 | I1 ‣ F → I | (E) ‣ T → F | T * F ‣ E → T | E + T
Michael Gamer
Beispiel (3): Erster Ansatz
In der Grammatik ‣ I → a | b | Ia | Ib | I0 | I1 ‣ F → I | (E) ‣ T → F | T * F ‣ E → T | E + T
kann man die (Einheits!) Produktion E → T durch ‣ E → F | T * F
ersetzen, was aber die Einheitsproduktion nicht eliminiert, da E → F bestehen bleibt.
74
Michael Gamer
Beispiel (4)
Erweiterung von E → F durch die Produktionen von F ergibt ‣ E → I | (E) | T * F
bleibt E → I , schließlich: ‣ E → a | b | Ia | Ib | I0 | I1 | (E) | T * F
damit sind alle Einheitsproduktionen für E eliminiert (Achtung: E → a ist keine Einheitsproduktion).
75
Michael Gamer
Beispiel (5)
Diese Technik hilft nicht bei zyklischen Einheitsproduktionen: ‣ A → B, B → C, C →A
Eine mögliche Vorgehensweise ist: ‣ Variable A und B suchen mit
76
A⇒*B
Hierbei sind Fälle wie A→BC, C → ε möglich, d.h. auf dem Weg nach B müssen nicht nur Einheitsproduktionen stehen!
Michael Gamer
Beispiel (6)
Wenn diese Paare (A, B) ermittelt sind kann jede Folge ‣ A ⇒ B1 ⇒ B2 … ⇒ Bn ⇒ α
ersetzt werden durch A → α. Damit hat man folgendes Verfahren ‣ Induktionsbeginn: (A, A), d.h. A ⇒ A in null
Schritten ‣ Induktionsschritt: Ist (A,B) ein Einheitspaar und
B →C eine Produktion, dann ist auch (A,C) ein Einheitspaar
77
Michael Gamer
Beispiel (7)
Für die Grammatik arithmetischer Ausdrücke sind ‣ (E, E), (T, T), (I, I) und (F, F)
Einheitspaare. Dann folgt ‣ (E, E) und E → T liefert (E, T) ‣ (E, T) und T → F liefert (E, F) ‣ (E, F) und F → I liefert (E, I) ‣ (T, T) und T → F liefert (T, F) ‣ (T, F) und F → I liefert (T, I) ‣ (F, F) und F → I liefert (F, I)
78