Grundkonzepte der objektorientierten Programmierung

Download Report

Transcript Grundkonzepte der objektorientierten Programmierung

Formale Sprachen
Teil 2
Klaus Becker
2006
Theorie formaler Sprachen
2
S  aAS
S  bBS
Sc
Aa  aA
Ab  bA
Ac  ca
Ba  aB
Bb  bB
Bc  cB
S  (T)
T
T  (T)
A  [B
B]
B  (C
C  xD
D  )B



Komplexität von Grammatiken
Automatenmodelle
Zusammenhänge zwischen
Grammatiken und Automaten
3
Beispiel: Klammersprachen
Korrekt geklammerte Rechenausdrücke:
XML-Dokument:
(56 – 34) * 17
((34 – 17) * (89 + 11))
(((45 – 6) * (67 / 5)) – (6 * 5))
...
<?xml version="1.0"?>
<!-- Created with JFLAP 4.0b13. -->
<structure>
<type>grammar</type>
<!--The list of productions.-->
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
<production>
<left>A</left>
<right>a</right>
</production>
</structure>
HTML-Dokument:
<html>
<head>
...
</head>
<body>
<h1>Weiterbildungskurse Informatik</h1>
<p>Der Weiterbildungslehrgang Inf....</p>
<p>Der Lehrgang besteht ...</p>
<p>Der Lehrgang schliesst ...</p>
</body>
</html>
4
Zielsetzung und Vorgehensweise
Ziel ist es, die Beschreibung von Klammersprachen mit Hilfe von
Grammatiken und die Erkennung von Klammersprachen mit Hilfe von
Automaten genauer zu untersuchen.
Diese Untersuchungen führen direkt zur Theorie über formale Sprachen
und Automaten.
Um den Arbeits- und Schreibaufwand etwas zu verringern, werden die zu
betrachtenden Sprachen zunächst strukturgetreu vereinfacht.
5
Teil 1
Reguläre Sprachen
6
Vereinfachtes HTML
Informelle Beschreibung:
Ein vereinfachtes HTML-Dokument besteht aus einem Kopf mit Titelangabe und einem Rumpf
mit Abschnitten. Es sind keine Umlaute erlaubt. Es sollen auch keine Tabellen, Links, Bilder
etc. integriert werden.
Der unten abgebildete HTML-Quelltext ist in diesem Sinne ein vereinfachtes HTML-Dokument.
<html>
<head>
<title>Weiterbildungskurs Informatik</title>
</head>
<body>
<p>Der Weiterbildungslehrgang Informatik in Rheinland-Pfalz ist ein Ersatzstudium der
Informatik für Lehrerinnen und Lehrer, die bereits eine Lehrbefaehigung in einem
naturwissenschaftlichen Fach haben.</p>
<p>Der Lehrgang besteht aus sechs Wochenkursen, in denen jeweils typische Themen der
Informatik bearbeitet werden.</p>
<p>Der Lehrgang schliesst dann mit einer Pruefung zum Erwerb der Unterrichtserlaubnis fuer
das Grundfach Informatik ab.</p>
</body>
</html>
7
Strukturanalyse
Klammerstruktur:
Hier werden verschiedene Sorten von Klammern benutzt. Die verschiedenen Klammersorten
können geschachtelt werden, aber nur in einer bestimmten Form. Der Rumpf-Teil hat z. B. die
Struktur <body><p>...</p><p>...</p>...<p>...</p></body>. Wir abstrahieren im
Folgenden von der Darstellung der Klammern und betrachten Klammerausdrücke der Gestalt
[(x)(x)...(x)].
<body>
<p>Der Weiterbildungslehrgang ... in einem naturwissenschaftlichen Fach haben.</p>
<p>Der Lehrgang besteht aus ... Themen der Informatik bearbeitet werden.</p>
<p>Der Lehrgang schliesst ... fuer das Grundfach Informatik ab.</p>
</body>
Klammersprache K3:
Das Alphabet von K3 ist die Zeichenmenge { [, ], (, ), x }.
Zu K3 gehören alle Wörter über dem Alphabet { [, ], (, ), x }, die mit [ beginnen, dann eine
beliebige Anzahl (evtl. auch 0) von Ausdrücken der Gestalt (x) enthalten und mit ] enden.
Bsp.: [], [(x)], [(x)(x)], [(x)(x)(x)], ...
8
Aufgabe
Entwickeln Sie eine (mehrere) Grammatik(en) zur Beschreibung der
Klammersprache K3.
Entwickeln Sie auch einen (mehrere) endliche Automaten zur Erkennung
der Klammersprache K3.
Beschreibung und Erkennung von K3
9
Klammersprache K3:
Das Alphabet von K3 ist die Zeichenmenge { [, ], (, ), x }.
Zu K3 gehören alle Wörter über dem Alphabet { [, ], (, ), x }, die mit [ beginnen, dann eine
beliebige Anzahl (evtl. auch 0) von Ausdrücken der Gestalt (x) enthalten und mit ] enden.
Bsp.: [], [(x)], [(x)(x)], [(x)(x)(x)], ...
Grammatik G1 für K3:
A
A
B
B
C
 []
 [B]
C
 CB
 (x)
Endlicher Automat für K3:
K3GR1.jff
q0
[
q1
(
Grammatik G2 für K3:
A  [B
B]
B  (C
C  xD
D  )B
q3
K3GR2.jff
]
)
x
q4
q2
10
Erkennung von K3
Beobachtung:
Es fällt auf, dass die Grammatik G2 genau das Verhalten des endlichen
Automaten A mit Hilfe von Produktionen nachbildet.
Grammatik G1 für K3:
A
A
B
B
C
 []
 [B]
C
 CB
 (x)
Endlicher Automat für K3:
K3GR1.jff
q0
A
q3
C
K3GR2.jff
]
q1
(
Grammatik G2 für K3:
A  [B
B]
B  (C
C  xD
D  )B
B
[
)
x
q4
D
q2
11
Aufgabe
Öffnen Sie die Datei K3GR2.jff. Lassen Sie JFlap zu dieser Grammatik
automatisch einen endlichen Automaten erzeugen: <Convert><Convert
Right-Linear Grammar to FA><Show All>.
Gehen Sie auch
umgekehrt vor und
lassen Sie sich von
JFlap zum Automaten
K3DA1.jff die
entsprechende
Grammatik erzeugen.
12
Aufgabe
Öffnen Sie die Datei K3GR1.jff. Lassen Sie JFlap zu dieser Grammatik
automatisch einen endlichen Automaten erzeugen: <Convert><Convert
Right-Linear Grammar to FA><Show All>. Warum funktioniert das nicht?
13
Aufgabe
Wir betrachten die Sprache der Binärzahlen.
Entwickeln Sie eine Grammatik zu dieser Sprache, die das Verhalten des
gezeigten endlichen Automaten mit Hilfe von Produktionen nachbildet.
Testen Sie Ihren Lösungsvorschlag mit Hilfe von JFlap.
1
0
1
q0
0
q2
q1
Aufgabe
14
Wir betrachten die Sprache der Binärzahlen.
Versuchen Sie jetzt, umgekehrt zu einer Grammatik für diese Sprache einen
entsprechenden endlichen Automaten zu entwickeln. Testen Sie Ihren
Lösungsvorschlag mit Hilfe von JFlap. Was fällt hier auf?
A
A
A
B
B
B
B
0
1
 1B
 0B
 1B
0
1
Rechtlineare Grammatik
15
Eine Produktion heißt rechtslinear genau dann, wenn auf der linken Seite
ein Nichtterminalsymbol steht und die rechte Seite folgende Gestalt hat:
- ein Terminalsymbol gefolgt von einem Nichtterminalsymbolen oder
- ein Terminalsymbol.
alternativ:
- ein Terminalsymbol gefolgt von einem Nichtterminalsymbolen oder
- das leere Wort.
Eine Grammatik heißt rechtslinear / regulär genau dann, wenn alle
Produktionen der Grammatik rechtslinear sind.
Beispiele für rechtslineare Produktionen:
Beispiele für rechtslineare Produktionen:
A0
B0
B  0B
A  0C
B  0D
B  0B
A  1B
B1
B  1B
Beispiele für nicht-rechtslineare Produktionen:
A  0B1
A  A1
C
B  1D
B  1B
A  1B
D
Äquivalenzsatz
16
Satz
Zu jedem endlichen Automaten gibt es eine rechtslineare Grammatik, mit
der die Sprache des Automaten erzeugt werden kann.
Endlicher Automat:
q0
1
q1
A
C
B
1
0
0
q2
Entsprechende Grammatik:
1
0
1
0
q3
D
A  1B
B  0B
C  0D
D  0D
A  0C
B  1B B  
C  1D C  
D  1D
Idee: Zu jedem Zustandsübergang
wird eine entsprechende
Produktion gebildet. Zu jedem
Endzustand wird eine
entsprechende Produktion mit dem
leeren Wort als rechter Seite
hinzugefügt.
17
Schwierigkeit bei der Umkehrung
Bei der Umwandlung einer rechtslinearen Grammatik in einen endlichen
Automaten kann ein sog. nichtdeterministischer Automat entstehen. Von
einem Zustand aus können bei gleicher Eingabe Übergänge in verschiedene
Zustände erfolgen.
Rechtslineare Grammatik
A  1B
B  0B
B  0D
A  0C
B  1B
B  1D
A  1C
Nichtdeterministischer Endlicher Automat:
C
1
0
D
A
1
q0
1
0
B
q1
C
q2
1
0
q3
D
Nichtdeterminismus
Äquivalenzsatz
18
Satz
Zu jeder rechtslinearen Grammatik gibt es einen nichtdeterministischen
endlichen Automaten, der die von der Grammatik erzeugte Sprache
erkennt.
Rechtslineare Grammatik
A  1B
B  0B
B  0D
A  0C
B  1B
B  1D
A  1C
Nichtdeterministischer Endlicher Automat:
C
1
0
D
A
Idee: Man geht wie oben
beschrieben vor.
1
q0
1
0
B
q1
C
q2
1
0
q3
D
Nichtdeterminismus
19
Aufgabe
Öffnen Sie die Datei BinZahlNA1.jff. Dieser nichtdeterministische Automat
erkennt die Sprache der Binärzahlen. Lassen Sie diesen Automaten
verschiedene Wörter verarbeiten (z. B. 1001). Machen Sie sich hieran die
„Arbeitsweise“ eines nichtdeterministischen Automaten klar.
20
Aufgabe
Öffnen Sie die Datei BinZahlNA1.jff. Dieser nichtdeterministische Automat
erkennt die Sprache der Binärzahlen. Lassen Sie JFlap diesen Automaten in
einen deterministischen Automaten umwandeln: <Convert to DFA>.
21
Äquivalenzsatz
Satz
Zu jedem nichtdeterministischen endlichen Automaten gibt es einen
deterministischen endlichen Automaten, der dieselbe Sprache erkennt.
Idee: Jede Menge von
Zuständen des NEA
ergibt einen Zustand
des DEA. Nicht
benötigte Zustände des
DEA werden
weggelassen.
22
Äquivalenzsatz
Satz
Zu jedem nichtdeterministischen endlichen Automaten gibt es einen
deterministischen endlichen Automaten, der dieselbe Sprache erkennt.
Bemerkung:
Da jeder deterministische Automat auch ein nichtdeterministischer Automat
ist, gilt trivialerweise auch die Umkehrung: Zu jedem deterministischen
Automaten gibt es einen nichtdeterministischen Automaten, der dieselbe
Sprache erkennt.
Folgerung:
Deterministische und nichtdeterministische Automaten sind gleich mächtige
Sprachverarbeitungsmodelle / erkennen dieselben Sprachen.
23
Aufgabe
Öffnen Sie die Datei BinZahlDA2.jff. Dieser deterministische Automat
erkennt die Sprache der Binärzahlen. Lassen Sie JFlap diesen Automaten in
einen regulären Ausdruck umwandeln: <Convert FA to RE>. Exportieren
Sie anschließend diesen regulären Ausdruck und lassen Sie ihn wieder in
einen endlichen Automaten umwandeln. Was zeigen diese Experimente?
24
Äquivalenzsatz
Satz (Kleene)
Jede durch einen endlichen Automaten erkennbare Sprache kann durch
einen regulären Ausdruck beschrieben werden.
Jede durch einen regulären Ausdruck beschreibbare Sprache kann durch
einen endlichen Automaten erkannt werden.
25
Reguläre Sprachen
Eine Sprache heißt regulär genau dann, wenn sie durch einen regulären
Ausdruck dargestellt werden kann.
Bemerkung:
Eine Sprache ist regulär genau dann, wenn sie
- durch einen regulären Ausdruck dargestellt werden kann /
- von einem deterministischen endlichen Automaten erkannt werden kann /
- von einem nichtdeterministischen endl. Automaten erkannt werden kann /
- von einer rechtslinearen Grammatik erzeugt werden kann.
Die genannten Sprachbeschreibungs- bzw. Sprachverarbeitungskonzepte
sind demnach alle gleich mächtig.
26
27
Teil 2
Kontextfreie Sprachen
28
Rechenausdrücke
Rechenausdrücke können Klammern enthalten, mit denen die Reihenfolge
von Berechnungen genau festgelegt wird.
Beispiele für korrekt geklammerte Rechenausdrücke:
((56 – 34) * 17)
((34 – 17) * (89 + 11))
...
Beispiele für inkorrekt geklammerte Rechenausdrücke:
)13 + 12) * 4
((25 – 16) * 7
...
29
Vereinfachte Rechenausdrücke
Informelle Beschreibung:
Wir betrachten nur Rechenterme, die vollständig geklammert sind. Jede Rechenoperation
muss umklammert werden – wie z. B. bei (12+3). Eine Rechenoperation bezieht sich auf
Zahlen oder Rechenterme – wie z. B. bei ((13 – 7) * 4). Rechenterme können beliebig
komplex verschachtelt werden – wie z. B. bei (((45 – 6) * (67 / 5)) – (6 * 5)).
Klammerstruktur:
Zu jeder öffnenden Klammer muss es eine passend folgende schließende Klammer geben.
Lässt man die eigentlichen Rechnungen weg, so ergeben sich Klammerausdrücke der Gestalt
((()())()).
Klammersprache:
Das Alphabet der Sprache ist die Zeichenmenge { (, ) }.
Zur Sprache gehören alle Wörter über dem Alphabet { (, ) }, die zu jeder öffnenden Klammer
die passende schließende Klammer haben.
Bsp.: (), (()), (()()), ..., ((())()(()(()()))), ...
30
Aufgabe
Wir vereinfachen die Klammersprache weiter (s. u.). Versuchen Sie, eine
Grammatik zur Beschreibung von K2 sowie einen endlichen Automaten zur
Erkennung von K2 zu entwickeln.
Klammersprache K2:
Das Alphabet von K2 ist die Zeichenmenge { (, ) }.
Zu K2 gehören alle Wörter über dem Alphabet { (, ) }, die nach einer beliebigen Anzahl
öffnender Klammern genau dieselbe Anzahl schließender Klammern enthält.
Bsp.: (), (()), ((())), (((()))), ...
Bem.: Statt ( bzw. ) benutzt man häufig die Zeichen a bzw. b.
Bsp.: Statt ((())) schreibt man aaabbb.
31
Beschreibung von Klammerausdrücken
Klammersprache K2:
Das Alphabet von K2 ist die Zeichenmenge { (, ) }.
Zu K2 gehören alle Wörter über dem Alphabet { (, ) }, die nach einer beliebigen Anzahl
öffnender Klammern genau dieselbe Anzahl schließender Klammern enthält.
Bsp.: (), (()), ((())), (((()))), ...
Eine Grammatik für K2 lässt sich leicht angeben:
Grammatik:
S  (A)
A
A  (A)
Schwieriger ist es dagegen, einen endlichen Automaten zur Erkennung von
K2 anzugeben.
Erkennung von Klammerausdrücken
32
Problem:
Gesucht ist ein endlicher Automat, der die Sprache K2 der
Klammerausdrücke erkennt.
(((())))
ok
EA
((())
Fehler
Schwierigkeit:
Der endliche Automat (EA) muss sich merken, wie viele Klammern geöffnet
sind. Zum Merken hat ein endlicher Automat nur Zustände zur Verfügung.
Mit endlich vielen Zuständen kann man sich aber nicht beliebig viele
geöffnete Klammern merken.
33
Die Sprache {anbn|n aus IN}
Satz
Es gibt keinen endlichen Automaten, der die Klammersprache
L = {anbn | n  1} akzeptiert.
Wir betrachten eine Sprache, die die „Klammer-auf-Klammer-zu“-Struktur
abstrahierend beschreibt. Diese Sprache besteht aus den Wörtern über dem
Alphabet {a, b}, bei denen auf eine bestimmte Anzahl von a´s („Klammer
auf“) genau dieselbe Anzahl von b´s („Klammer zu“) folgt.
Also: L = {ab, aabb, aaabbb, aaaabbbb, ...}
Im Folgenden soll nachgewiesen werden, dass kein noch so komplizierter
oder spitzfindig ausgedachter Automat in der Lage ist, die Klammersprache
L zu akzeptieren. Wir benutzen hierzu – wie in der Informatik üblich – ein
mathematisches Beweisverfahren, also eine exakte, logisch zweifelsfreie
Argumentationskette.
34
Beweis
Annahme: Es gibt einen endlichen Automaten A, der L akzeptiert.
A hat endliche viele Zustände. m bezeichne die Anzahl dieser Zustände. (Zur
Illustration der Beweisidee gehen wir hier von m = 15 aus.)
Wir betrachten jetzt ein Wort w = akbk mit k > m. (Zur Illustration der
Beweisidee gehen wir hier von k = 16 aus. D. h., w = a16b16 besteht aus 16
a´s gefolgt von 16 b´s.)
Das Wort w hat dann einen Anfangsteil, der mehr a‘s enthält als A Zustände
hat. Bei der Verarbeitung des a-Anfangsteils von w muss zwangsläufig
mindestens ein Zustand von A mindestens zweimal durchlaufen werden.
(Zur Illustration der Beweisidee gehen wir hier davon aus, dass der
Zustand, der mit dem dritten a erreicht wird, auch wieder mit dem siebten a
erreicht wird.). Somit ist eine Schleife entstanden, die erst mit Beginn des bEndteils wieder verlassen wird.
35
Beweis
Die folgende Grafik soll die Situation verdeutlichen:
- A hat m Zustände (hier m = 15).
- A akzeptiert w = akbk mit k > m (hier w = a16b16).
- Bei d. Verarbeitung des a-Anfangsteils von w wird ein Zustand mindestens
zweimal durchlaufen werden (hier wird q3 insgesamt 4 mal durchlaufen).
Weitere spezielle
Eigenschaften von A,
die in der Grafik zu
erkennen sind, sind
für den Beweisgang
nicht von Bedeutung.
Grafik entnommen aus:
http://hsg.regionkaiserslautern.de/faecher/
inf/material/automaten/
anbn/index.php
36
Beweis
Der a-Anfangsteil lässt sich zerlegen in die Teile „vor der Schleife“, „in der
Schleife“, „nach der Schleife“. Es gilt: w = akbk = ap(aq)iarbk mit p+q*i+r=k
(hier: w = a16b16 = a3a4a4a4a1b16). Die Zahl i beschreibt die Anzahl der
Schleifendurchläufe beim gegebenen w.
(In der Grafik erkennt
man direkt, dass A
auch
w´ = a4b16 oder
w´´ = a8b16
akzeptiert.)
Grafik entnommen aus:
http://hsg.regionkaiserslautern.de/faecher/
inf/material/automaten/
anbn/index.php
37
Beweis
Wir betrachten ein w´ = ap(aq)jarbk mit einem j, das von i verschieden ist –
z. B. j = i+1. Das neue Wort w´ hat dann mehr a´s als b´s.
Jetzt gilt:
- w´ wird von A akzeptiert (da w´ genau wie w den AZ in einen EZ
überführt).
- w´ gehört nicht zur Sprache L (da w´ mehr a’s als b’s enthält).
A akzeptiert also ein Wort, das nicht zur Sprache L = {anbn | n  1} gehört.
Das ist ein Widerspruch zur Annahme, dass A die Sprache L akzeptiert.
Die Annahme muss daher falsch sein. Die Aussage des Satzes muss folglich
wahr sein.
38
Folgerungen
Es gibt Sprachen (wie z. B. die gezeigte Klammersprache), die
- nicht von einem endlichen Automaten erkannt werden können,
- nicht mit einer regulären Grammatik beschrieben werden können,
- nicht mit einem regulären Ausdruck beschrieben werden können.
Dieses Ergebnis zeigt insbesondere eine prinzipielle Grenze von endlichen
Automaten auf: Sie sind nicht in der Lage, komplexere Sprachen wie z. B.
eine Klammersprache zu erkennen.
39
Zielsetzung
Um auch Klammersprachen erkennen zu können, muss das bisher
betrachtete Automatenkonzept erweitert werden.
Ziel der folgenden Betrachtungen ist es, ein erweitertes Automatenmodell
und seine Spracherkennungsmöglichkeiten zu erkunden.
40
Aufgabe
Starten Sie das Programm „Automaton Simulator“ und öffnen Sie die Datei
„Klammersprache1“ im Verzeichnis „MaterialAutomatonSimulator“.
Lassen Sie den gezeigten erweiterten Automaten verschiedene „abstrakte
Klammerausdrücke“ wie aabb oder aaab oder aabbbb verarbeiten.
Versuchen Sie herauszufinden, wie Spracherkennung mit diesem erweiterten
Automaten funktioniert.
Ein Automat mit Zusatzspeicher
41
öffnen
öffnen
aabb
öffnen
aabb
push a
schliessen
a
push a
aabb
a
a
schliessen
aabb
pop
a
pop
Keller
Kellerautomat
Der Automat wird um einen Zusatzspeicher (Keller) erweitert, mit dem er
sich die „öffnenden“ Klammern merken kann.
Keller / Stapel
42
Ein Keller / Stapel ist ein Speicher, der nach dem LIFO-Prinzip (last in,
first out) arbeitet.:
push(...)
top
pop
...
liefert das
das oberste
auf den Stapel
oberste
Stapelelement
legen
Stapelelement
entfernen
43
Kellerautomat – Version 1
Ein Kellerautomat ist ein um einen Kellerspeicher erweiterter Automat:
- Der Kellerautomat verfügt zusätzlich über ein Kelleralphabet, das alle
Zeichen enthält, die im Keller gespeichert werden können.
- Die Zustandsübergänge hängen nicht nur von den Eingaben, sondern auch
vom jeweils obersten Kellerzeichen ab.
- Bei jedem Übergang wird eine Kelleroperation durchgeführt.
Oberstes Kellerzeichen / Eingabezeichen: Kelleroperation
Beim vorliegenden Kellerautomaten wird ein Wort genau dann akzeptiert,
wenn der Keller nach Abarbeitung des Wortes leer ist.
44
Aufgabe
Starten Sie das Programm „JFLAP“ und öffnen Sie die Datei
„Klammersprache1“ im Verzeichnis „MaterialJFlap“.
Lassen Sie den gezeigten erweiterten Automaten verschiedene „abstrakte
Klammerausdrücke“ wie aabb oder aaab oder aabbbb verarbeiten.
Was ist anders bei diesem Kellerautomaten?
Kellerautomat – Version 2
45
Anfangszustand
q0: öffnen
Aktueller Zustand
aabb
q0: öffnen
a, Z; aZ
Z
q1: schliessen
Eingabezeichen
aabb
a
Z
q1: schliessen
Oberstes
Kellerzeichen
aabb
Leere Eingabe
aabb
b, a; 
a
a
Z
neue
Kellerzeichen
q2: korrekt
, Z; Z
Z
Kellerstartzeichen
q0: öffnen
a, a; aa
b, a; 
a
Z
aabb
Endzustand
Z
46
Kellerautomat – Version 2
Ein Kellerautomat ist ein um einen Kellerspeicher erweiterter Automat:
- Der Kellerautomat verfügt zusätzlich über ein Kelleralphabet, das alle
Zeichen enthält, die im Keller gespeichert werden können. Hierzu gehört
auch das Kellerstartzeichen, das zu Beginn im Keller gespeichert ist.
- Die Zustandsübergänge hängen nicht nur von den Eingaben, sondern auch
vom jeweils obersten Kellerzeichen ab.
- Bei jedem Übergang wird eine Kelleroperation durchgeführt. Das oberste
Kellerzeichen wird dabei durch eine (ggf. leere) Folge „neuer“ Zeichen
ersetzt.
- Oft erlaubt man zusätzlich, dass auch spontane Übergänge stattfinden
können (d. h. dass leere Eingaben verarbeitet werden) und dass
Zustandsübergänge nicht-deterministisch erfolgen können.
47
Kellerautomat – Version 2
Eingabezeichen (evtl. leer) , oberstes Kellerzeichen ; Folge
von neuen Kellerzeichen
Beim vorliegenden Kellerautomat wird ein Wort genau dann akzeptiert,
wenn sich der Kellerautomat nach Abarbeitung des Wortes in einem
Endzustand befindet.
48
Aufgaben
Entwickeln Sie einen Kellerautomaten, der verallgemeinerte
Klammerausdrücke der folgenden Gestalt erkennt. Die Sprache dieser
Klammerausdrücke wird im Folgenden K2´genannt.
((x)(x)), (((x)((x)))(x))
Entwickeln Sie einen Kellerautomaten, der vereinfachte Rechenausdrücke
mit Binärzahlen erkennt.
Bsp.:
((100 – 11) * 101)
((11010 – 101) * (111 + 1100))
49
Ein Blick auf die Grammatiken
Wir betrachten Klammersprachen im Vergleich:
Klammersprache K3:
Klammersprache K2´:
K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... }
K2´ = {((x)(x)), (((x)((x)))(x))... }
Alphabet: { [, ], (, ), x }.
Alphabet: { (, ), x }.
Produktionen:
Produktionen:
A
A
B
B
C
A
A
B
B
C
 []
 [B]
C
 CB
 (x)
B
 BA
 (C)
 (A)
x
Anhand der Grammatiken kann man hier – zumindest auf den ersten Blick –
nicht unterscheiden, welche der beiden Sprachen komplexer ist.
Die Situation ändert sich, wenn man zur ersten Sprache eine einfachere
Grammatik angibt.
50
Ein Blick auf die Grammatiken
Wir betrachten Klammersprachen im Vergleich:
Klammersprache K3:
Klammersprache K2´:
K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... }
K2´ = {((x)(x)), (((x)((x)))(x))... }
Alphabet: { [, ], (, ), x }.
Alphabet: { (, ), x }.
Produktionen:
Produktionen:
A  [B
B]
B  (C
C  xD
D  )B
A
A
B
B
C
B
 BA
 (C)
 (A)
x
Die Grammatik zur Sprache K3 ist rechtslinear, während die Grammatik zur
Sprache K2´ eine komplexere Struktur hat. Auf der rechten Seite einer
Produktion stehen hier komplexere Wörter aus Terminal- und
Nichtterminalsymbolen.
51
Kontextfreie Grammatiken
Eine Produktion heißt kontextfrei genau dann, wenn für jede Regel gilt:
- Auf der linken Seite steht ein Nichtterminalsymbol.
- Auf der rechten Seite steht ein beliebiges Wort bestehend aus Terminalund Nichtterminalsymbolen.
Eine Grammatik heißt kontextfrei genau dann, wenn alle Produktionen
der Grammatik kontextfrei sind.
Eine Sprache heißt kontextfrei genau dann, wenn sie mit Hilfe einer
kontextfreien Grammatik beschrieben werden kann.
Beispiel für eine kontextfreie Grammatik:
A
A
B
B
C
B
 BA
 (C)
 (A)
x
52
Suche nach einfachen Grammatiken
Klammersprache K3:
Klammersprache K3:
K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... }
K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... }
Alphabet: { [, ], (, ), x }.
Alphabet: { [, ], (, ), x }.
Produktionen:
Produktionen:
A
A
B
B
C
A  [B
B]
B  (C
C  xD
D  )B
 []
 [B]
C
 CB
 (x)
Bemerkung:
Zur Beschreibung einer Sprache lassen sich oft viele verschiedene
Grammatiken angeben. Die „einfachste“ mögliche Grammatik legt den
Komplexitätsgrad der Sprache fest.
Beispiel: K3 ist regulär, da es eine reguläre Grammatik zu dieser Sprache gibt.
53
Aufgabe
Geben Sie die Grammatik zur Klammersprache K2´ in JFlap ein. Lassen Sie
JFlap dann diese Grammatik in einen nichtdeterministischen
Kellerautomaten („convert CFG to PDA (LL)“) übersetzen.
Testen Sie diesen Kellerautomaten, indem Sie ihn das Wort ((x)((x)))
überprüfen lassen. („fast run“). Aus dem Ablaufprotokoll („trace“) lässt sich
erkennen, wie der Kellerautomat arbeitet.
54
Äquivalenzsatz
Satz
Eine Sprache ist kontextfrei genau dann, wenn sie von einem
nichtdeterministischen Kellerautomaten erkannt wird.
Beweis: Studium
Beachte:
Mit deterministischen Kellerautomaten kann man nur eine echte Teilmenge
der kontextfreien Sprachen erkennen.
55
Teil 3
Kontextsensitive und allgemeine Sprachen
56
XML
JFlap benutzt – wie viele andere Programme auch – die standardisierte
Dokumentenbeschreibungssprache XML zur Darstellung der
abzuspeichernden Strukturen.
<?xml version="1.0"?>
<!-- Created with JFLAP 4.0b13. -->
<structure>
<type>grammar</type>
<!--The list of productions.-->
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
<production>
<left>A</left>
<right>a</right>
</production>
</structure>
57
XML
Die Extensible Markup Language (engl. für „erweiterbare
Auszeichnungs-Sprache“), abgekürzt XML, ist ein Standard zur Erstellung
maschinen- und menschenlesbarer Dokumente in Form einer Baumstruktur,
der vom World Wide Web Consortium (W3C) definiert wird.
Siehe: http://de.wikipedia.org/wiki/XML
<?xml version="1.0"?>
<!-- Created with JFLAP 4.0b13. -->
<structure>
<type>grammar</type>
<!--The list of productions.-->
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
...
</structure>
58
XML
XML benutzt Tags zur Strukturierung von Dokumenten. Im Gegensatz zu
HTML können hier beliebige Tags zur Strukturierung eingeführt werden. Wie
bei HTML muss zu jedem Anfangstag ein passendes Endtag folgen.
<?xml version="1.0"?>
<!-- Created with JFLAP 4.0b13. -->
<structure>
<type>grammar</type>
<!--The list of productions.-->
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
<production>
<left>A</left>
<right>a</right>
</production>
</structure>
59
Vereinfachtes XML
Informelle Beschreibung:
Ein vereinfachtes XML-Dokument besteht aus ineinandergeschachtelten Elementen. Ein
Element besteht aus einem Anfangstag, einem Bezeichner oder einer Elementliste und einem
passenden Endtag. Ein Bezeichner besteht aus beliebigen alphanumerischen Zeichen.
Der unten abgebildete XML-Quelltext ist in diesem Sinne ein vereinfachtes XML-Dokument.
<structure>
<type>grammar</type>
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
<production>
<left>A</left>
<right>a</right>
</production>
</structure>
60
Strukturanalyse
Klammerstruktur:
Hier werden beliebig konstruierbare Sorten von Klammern benutzt. Die verschiedenen
Klammersorten können beliebig geschachtelt werden. Es ist nur darauf zu achten, dass
entsprechende Klammern auch zusammenpassen.
<structure>
<type>grammar</type>
<production>
<left>S</left>
<right>a</right>
</production>
<production>
<left>S</left>
<right>A</right>
</production>
<production>
<left>A</left>
<right>a</right>
</production>
</structure>
Im Folgenden betrachten wir den Aspekt, dass
beliebig konstruierbare Klammern
zusammenpassen.
Bsp. für „wohlgeformte“ Klammerausdrücke:
<type>grammar</type>
<left>S</left>
<right>a</right>
Bsp. für „nicht-wohlgeformte“ Klammerausdr.:
<right>grammar</thgir>
<type>grammar<type>
<left>S</right>
61
Aufgabe
Wir vereinfachen die Klammersprache weiter (s. u.). Die unten gezeigte
Grammatik beschreibt diese Sprache K1. Testen Sie dies zunächst mit Hilfe
verschiedener Beispiele und Gegenbeispiele.
Schauen Sie sich Ableitungen von Wörtern, die zu K1 gehören, genauer an
und versuchen Sie zu verstehen, wie die Grammatik die zu K1 gehörenden
Wörter erzeugt.
Klammersprache K1:
Das Alphabet von K1 ist die Zeichenmenge {a, b, c}.
Zu K1 gehören alle Wörter über dem Alphabet {a, b, c}, die mit einem
beliebigen Wort w über dem Alphabet {a, b} beginnen, die dann das
Trennsymbol c enthalten und anschließend mit genau demselben Wort w
enden.
Bsp.: c, aca, abcab, bacba, abbacabba, ...
S  aAS
S  bBS
Sc
Aa  aA
Ab  bA
Ac  ca
Ba  aB
Bb  bB
Bc  cB
62
Aufgabe
Die Sprache LMyXML soll vereinfachte XML-artige Ausdrücke beschreiben.
- Jedes zu L gehörende Wort soll aus einem Anfangstag, einem Text und
einem Endtag bestehen.
- Anfangs- und Endtag sollen identisch sein.
- Die Tag-Bezeichner sind beliebige nicht-leere Zeichenketten, die nur aus
den Buchstaben a und b bestehen.
- Der Text zwischen den Anfangs- und End-Tag besteht nur aus den
Buchstaben a, b und c bestehen.
Beispiele:
<ab>acaa<ab>
...
Entwickeln Sie ausgehende von der gezeigten Grammatik für K1 eine
Grammatik für LMyXML.
Eine Grammatik für MyXML
63
S  <aAT>
S  <bBT>
T  aAT
T  bBT
TM
Aa  aA
Ab  bA
AM  Ma
Ba  aB
Bb  bB
BM  Mb
M  >N
M  aM
M  bM
M  cM
M<
MyXML.jff
64
A
A
B
B
Grammatiken im Vergleich
B
 BA
 (x)
 (A)
KlammerX.jff
S  aAS
S  bBS
Sc
Aa  aA
Ab  bA
Ac  ca
Ba  aB
Bb  bB
Bc  cB
K1.jff
MyXML.jff
S  <aAT>
S  <bBT>
T  aAT
T  bBT
TM
Aa  aA
Ab  bA
AM  Ma
Ba  aB
Bb  bB
BM  Mb
M  >N
N  aN
N  bN
N  cN
N<
Bisher stand auf der linken Seite einer Produktion immer ein einzelnes
Nicht-Terminalsymbol. Die jetzt betrachteten Grammatiken enthalten ganze
Wörter mit Terminal- und Nichtterminalsymbolen auf der linken Seite.
65
Allgemeine Produktionen
Eine Produktion u  v heißt allgemein genau dann, wenn u und v
beliebige Wörter aus Terminal- und Nichtterminalsymbolen sind.
Eine Produktion u  v heißt (Wortlängen-)monoton genau dann, wenn u
und v beliebige Wörter aus Terminal- und Nichtterminalsymbolen sind und
wenn v mindestens so lang wie u ist.
Eine Produktion u  v heißt kontextsensitiv genau dann, wenn diese
Produktion die Gestalt xAy  xwy hat, wobei
- A ein Nichtterminalsymbol ist und
- x und y beliebige Wörter bestehend aus Terminal- und
Nichtterminalsymbolen sind.
- w ein beliebiges, nicht-leeres Wort bestehend aus Terminal- und
Nichtterminalsymbolen ist.
Beachte: Bei einer kontextsensitiven Produktion xAy  xwy darf das
Nichtterminalsymbol A nur dann durch das Wort w ersetzt werden, wenn A
im Kontext x..y steht. Beachte, dass die Wörter x und y auch das leere Wort
sein können.
66
Monotone und kontextsensitive Prod.
S  <aAT>
S  <bBT>
T  aAT
T  bBT
TM
Aa  aA
Ab  bA
AM  Ma
Ba  aB
Bb  bB
BM  Mb
M  >N
N  aN
N  bN
N  cN
N<
MyXML.jff
N  aN
allgemein, monoton, kontextsensitiv, kontextfrei, rechtslinear
S  bBS
allgemein, monoton, kontextsensitiv, kontextfrei, nicht rechtslinear
Aa  aA
allgemein, monoton, nicht kontextsensitiv, nicht kontextfrei, nicht
rechtslinear
Beachte:
Jede rechtslineare Produktion ist kontextfrei.
Jede kontextfreie Produktion ist kontextsensitiv.
...
67
Monotone / kontextsensitive Sprachen
Eine Grammatik heißt allgemein genau dann, wenn alle Produktionen
allgemein sind.
Eine Grammatik heißt (Wortlängen-)monoton genau dann, wenn entweder
alle Produktionen monoton sind, oder wenn alle Produktionen monoton
sind außer S  , sofern das Startsymbol S nie auf der rechten Seite einer
Produktion vorkommt.
Eine Grammatik heißt kontextsensitiv genau dann, wenn entweder alle
Produktionen kontextsensitiv sind, oder wenn alle Produktionen
kontextsensitiv sind außer S  , sofern das Startsymbol S nie auf der
rechten Seite einer Produktion vorkommt.
Eine Sprache heißt monoton / kontextsensitiv genau dann, wenn sie
von einer monotonen / kontextsensitiven Grammatik erzeugt wird.
68
Monotone und kontextsensitive Prod.
Satz
Jede kontextsensitive Sprache ist monoton. Jede monotone Sprache ist
auch kontextsensitiv. D.h.: Zu einer monotonen Sprache lässt sich eine
kontextsensitive angeben, die diese Sprache erzeugt.
Das Beispiel soll verdeutlichen, wie man von monotonen Produktionen zu
kontextsensitiven Produktionen gelangt.
S  aAS
S  bBS
Sc
Aa  aA
Ab  bA
Ac  ca
Ba  aB
Bb  bB
Bc  cb
S  NaAS
S  NbBS
S  Nc
ANa  NaA
ANb  NbA
ANc  NcNa
BNa  NaB
BNb  NbB
BNc  NcNb
Na  a
Nb  b
Nc  c
ANa  AD
AD  CD
CD  CNa
CNa  ANa
ANb  AF
AF  EF
EF  ENb
ENb  ANb
ANc  AH
AF  GH
GH  GNc
GNc  ANc
69
Die Sprache MyXML ist
- allgemein (klar)
- monoton (offensichtlich)
- kontextsensitiv (nach Satz)
MyXML
Eine Grammatik für MyXML:
S  <aAT>
S  <bBT>
T  aAT
T  bBT
TM
Aa  aA
Ab  bA
AM  Ma
Ba  aB
Bb  bB
BM  Mb
M  >N
N  aN
N  bN
N  cN
N<
MyXML.jff
70
MyXML
Die Sprache MyXML ist nicht kontextfrei. Um
dies nachzuweisen, muss man zeigen, dass es
keine kontextfreie Grammatik gibt, die MyXML
erzeugt. Man zeigt dies, indem man
nachweist, dass es keinen Kellerautomaten
gibt, der diese Sprache akzeptiert.
(Beweis: Studium)
Eine Grammatik für MyXML:
S  <aAT>
S  <bBT>
T  aAT
T  bBT
TM
Aa  aA
Ab  bA
AM  Ma
Ba  aB
Bb  bB
BM  Mb
M  >M
M  aM
M  bM
M  cM
M<
MyXML.jff
71
Erweiterung des Automatenmodells
Zielsetzung:
Ziel ist es, ein Automatenmodell zu entwickeln, das auch komplexere
Sprachen (wie kontextsensitive / allgemeine Sprachen) erkennen kann.
Vorgehensweise:
Wir betrachten zunächst wieder die Sprache K1 / Lwcw der Wörter der
Gestalt wcw, wobei w ein beliebiges Wort über {a, b} ist.
Zunächst testen wir ein neues Maschinenmodell und analysieren dann seine
Arbeitsweise.
72
Aufgabe
Starten Sie das Programm „JFlap“ und öffnen Sie die Datei „wcwTM“ im
Verzeichnis „MaterialJFlap“.
Lassen Sie den gezeigten erweiterten Automaten folgende Wörter
verarbeiten: aabcaab, abbacabba, c, aacaab, aabcaa, ...
Wie arbeitet diese Maschine?
73
Turingmaschinen
Eine Turingmaschine ist ein Automat, der zustandsabhängig Zeichen
bearbeiten kann, die sich auf einem (nach links und rechts unbegrenzten)
Band befinden. Die Turingmaschine verfügt hierzu über einen Schreib/Lesekopf, der sich auf dem Band in beide Richtungen bewegen kann und
zustandsabhängig die Bandbeschriftung verändern kann.
Aktueller Zustand
Band mit aktueller
Beschriftung
Schreib-/Lesekopf
Zustandsbasierte
Verarbeitungseinheit
74
Arbeitsweise der Turingmaschine
- Die Turingmaschine befindet sich zu Beginn in einem Startzustand.
- Die Turingmaschine liest das Zeichen aus der Zelle, auf dem sich der
Schreib-/Lesekopf befindet, schreibt ein neues Zeichen in die Zelle und
bewegt den Schreib-/Lesekopf dann nach rechts oder links bzw. stoppt.
- Die Turingmaschine darf für Zwischenergebnisse zusätzliche Zeichen
verwenden, die nicht in den zu analysierenden Wörtern vorkommen.
- Ein Wort wird genau dann akzeptiert, wenn sich die Turingmaschine nach
Abarbeitung des Wortes in einem Endzustand befindet.
Gelesenes Zeichen; Geschriebenes Zeichen, Kopfbewegung
75
Aufgabe
Entwickeln Sie eine Turingmaschine, die die Sprache L = {anbn | n  1}
akzeptiert.
Entwerfen und testen Sie eine Turingmaschine, die die Sprache L = {anbncn|
n  0} akzeptiert.
76
Aufgabe
Zeigen Sie, dass die Sprache MyXML mit Hilfe einer Turingmaschine erkannt
werden kann.
Die Sprache MyXML kann sogar mit Hilfe einer sog. linear beschränkten
Turingmaschine erkannt werden. Eine linear beschränkte Turingmaschine ist
eine Turingmaschine, bei der die Eingabe durch Randmarkierungen # und #
eingeschlossen wird. Die Turingmaschine darf bei der Bearbeitung diese
Markierungen weder überschreiten noch überschreiben.
77
Äquivalenzsatz
Satz
Eine Sprache ist allgemein genau dann, wenn sie von einer
deterministischen (oder nichtdeterministischen) Turingmaschine erkannt
wird.
Satz
Eine Sprache ist kontextsensitiv genau dann, wenn sie von einer linear
beschränkten nichtdeterministischen Turingmaschine erkannt wird.
Bemerkung:
Deterministische und nichtdeterministische Turingmaschinen sind
gleich mächtig.
Chomsky-Hierarchie
78
Klassifikation von Sprachen (nach Noam Chomsky / 1958)
Typ
Grammatik
äquivalenter Automat
0
allgemein
(nicht)deterministische Turingmaschine
1
kontextsensitiv nichtdet. linear beschr. Turingmaschine
2
kontextfrei
nichtdeterministischer Kellerautomat
3
regulär
(nicht)deterministischer endl. Automat
79
Teil 4
Exkurs: natürliche Sprachen
80
Noam Chomsky
Noam Chomsky hat die Darstellung natürlicher Sprachen formalisiert. Die Neuerung war, die
einzelsprachlichen Ausdrücke mit Hilfe einer Metasprache rekursiv zu definieren. Die aus der
Metasprache abgeleiteten Klassen von Grammatiken können in eine Hierarchie eingeteilt
werden, die heute Chomsky-Hierarchie genannt wird. Seine Arbeit stellt einen wichtigen
Meilenstein für die Linguistik dar. Formale Sprachen und die Chomsky-Hierarchie spielen auch
in der Informatik eine wichtige Rolle, insbesondere in der Komplexitätstheorie und im
Compilerbau.
Zusammen mit den Arbeiten Alan Turings begründen sie einen eigenen Bereich in der
Mathematik und machen strukturelle Bereiche und Formalismen natürlicher Sprachen einer
mathematischen Betrachtung zugänglich, unter anderem mit dem Ergebnis, dass maschinelle
Übersetzungen prinzipiell möglich sind.
Vielen Forschern innerhalb der Computerlinguistik gelten Chomskys Theorien, insbesondere
die Generative Transformationsgrammatik und seine Government and Binding-Ansätze,
allerdings seit ungefähr 1980 zwar als bedeutende Pionierleistung, jedoch als heute veraltet,
insofern sie sich auf natürliche Sprachen beziehen - im Gegensatz zu Programmiersprachen
und anderen formalen Sprachen, wo seine Formalismen weiterhin mit Gewinn verwendet
werden können.
(siehe: http://www.philosophenlexikon.de/chomsky.htm)
81
Sprache und ihre Verwendung
Natürliche Sprachen sind Zeichensysteme, die u. a. für Kommunikation
genutzt werden.
82
Syntax, Semantik, Pragmatik
Aspekte natürlicher Sprachen:
Syntax: Lehre vom Satzbau
Anordnung der Zeichen
Semantik: Bedeutungslehre
Beziehung zwischen Zeichen und
Bezeichnetem
Pragmatik: Lehre von der
Verwendung sprachlicher Konstrukte
in Handlungssituationen
Beziehung zwischen Zeichen und
Zeichenbenutzer
Eine einfache Grammatik
83
<S> ::= <NP> <VP>
Ein Satz besteht aus einer Nominalphrase und einer Verbalphrase.
<NP> ::= <N> | <A> <N> | <N> <PP>
Eine Nominalphrase muss immer aus einem Nomen bestehen, welchem unter Umständen ein
Artikel vorangestellt ist. Ferner kann dem Nomen eine oder mehrere Präpositionalphrasen
nachgestellt sein.
<VP> ::= <V> | <V> <NP> | <VP> <PP>
Eine Verbalphrase besteht aus einem Verb, dem eine Nominal- oder Präpositionalphrase
nachgestellt sein kann.
<PP> ::= <P> <NP>
Eine Präpositionalphrase besteht aus einer Präposition und einer Nominalphrase.
<A>
<P>
<N>
<V>
::=
::=
::=
::=
der | die | das | dem | ein | einem | ...
mit | in | ...
Anna | Kuh | Park | Fernglas | ...
betrachtet | ...
(nach U. Schöning: Ideen der Informatik. Oldenbourg 2002)
84
Test der Grammatik
<S>
<NP>
<VP>
<PP>
<A>
<P>
<N>
<V>
::=
::=
::=
::=
::=
::=
::=
::=
<NP> <VP>
<N> | <A> <N> | <N> <PP>
<V> | <V> <NP> | <VP> <PP>
<P> <NP>
der | die | das | einem | ...
mit | in | ...
Anna | Kuh | Fernglas | ...
betrachtet | ...
<S> 
<NP> <VP> 
<N> <VP> 
<N> <VP> 
Anna <VP> 
Anna <VP> <PP> 
Anna <V> <NP> <PP> 
Anna betrachtet <NP> <PP> 
Anna betrachtet <A> <N> <PP> 
Anna betrachtet die <N> <PP> 
Anna betrachtet die Kuh <PP> 
Anna betrachtet die Kuh <P> <NP> 
Anna betrachtet die Kuh mit <NP> 
Anna betrachtet die Kuh mit <A> <N> 
Anna betrachtet die Kuh mit einem <N> 
Anna betrachtet die Kuh mit einem Fernglas
85
Automatische Übersetzung
Die Beschreibung, Erkennung und Übersetzung natürlicher Sprachen ist
sehr schwierig. Der Beschreibungsansatz über Grammatiken hat bisher
nicht zum Erfolg geführt. Heute versucht man, natürliche Sprachen mit
statistischen Methoden automatisch zu übersetzen.
86
Literaturhinweise
F. Gasper, I. Leiß, M. Spengler, H. Stimm: Technische und theoretische
Informatik. Bsv 1992.
E. Modrow: Automaten, Schaltwerke, Sprachen. Dümmlers Verlag 1988.
R. Baumann: Informatik für die Sekundarstufe II, Band 2. Klett-Verlag
1993.
Informatik heute, Band 2. Schroedel-Verlag 1988.
U. Schöning: Theoretische Informatik – kurzgefasst. Spektrum
Akademischer Verlag 2001.
J. E. Hopcroft / J. D. Ullman: Einführung in die Automatentheorie, Formale
Sprachen und Komplexitätstheorie. Addison-Wesley 1988.
S. H. Rodger, T. W. Finley: JFLAP. Jones and Bartlett Publishers 2006.
...