ppt - Informatik

Download Report

Transcript ppt - Informatik

Spracherkennung mit Automaten
Klaus Becker
2013
2
Spracherkennung mit Automaten
0
1
0
1
3
Teil 1
Spracherkennung mit endlichen Automaten
4
2.0
Zahldarstellung in Python
floatnumber:
002.0
2.200
2.
pointfloat:
.2
2.2.2
2e10
exponentfloat:
e10
.2e01
2e-1
2e1.0
intpart:
fraction:
2e+1
2E1
.e2
exponent:
Aufgabe:
Welche Zeichenfolgen sind korrekt?
digit:
5
Sprachbeschreibung mit Produktionen
F -> P
floatnumber:
F -> E
P -> R
P -> IR
pointfloat:
P -> I.
E -> IX
E -> PX
exponentfloat:
I -> D
I -> DI
R -> .I
X -> eI
intpart:
fraction:
X -> e+I
X -> e-I
D -> 0
D -> 1
…
exponent:
Produktionen
digit:
6
Spracherkennung mit Produktionen
F -> P
F -> E
P -> R
P -> IR
P -> I.
E -> IX
E -> PX
I -> D
I -> DI
R -> .I
X -> eI
X -> e+I
X -> e-I
D -> 0
D -> 1
…
Aufgabe: Teste die Spracherkennung mit Hilfe von JFlap.
7
F -> P
F -> E
P -> R
P -> IR
P -> I.
Spracherkennung mit Produktionen
F ->
P ->
I. ->
DI. ->
2I. ->
2D. ->
21.
#
#
#
#
#
#
mit
mit
mit
mit
mit
mit
E -> IX
E -> PX
I -> D
I -> DI
R -> .I
X -> eI
X -> e+I
X -> e-I
D -> 0
D -> 1
…
Produktionen
F->P
P->I.
I->DI
D->2
I->D
D->1
Ableitung mit „Intelligenz“
8
F -> P
Spracherkennung mit Produktionen
F ->
P ->
F -> E
R ->
P -> R
.I # keine Fortsetzung möglich
IR ->
DR ->
0R # keine Fortsetzung möglich
1R # keine Fortsetzung möglich
2R
2.I # keine Fortsetzung möglich
DIR ->
P -> IR
P -> I.
E -> IX
E -> PX
I -> D
...
I -> DI
Ableitung nach der Brute-Force-Methode
R -> .I
X -> eI
X -> e+I
X -> e-I
D -> 0
D -> 1
…
Produktionen
9
Spracherkennung mit einem Automaten
Wir betrachten zunächst vereinfachte Gleitkommazahlen, die nach den folgenden Regeln
gebildet werden.
kommazahl ::= intpart "." intpart
intpart ::= digit+
digit ::= "0"|"1"|"2"
Die Spracherkennung bei den oben beschriebenen Kommazahlen lässt sich mit einem
zustandsbasierten System durchführen, das sukzessive die einzelnen Zeichen der zu
analysiedenden Zeichenkette verarbeitet.
10
Spracherkennung mit einem Automaten
Aufgabe: Erkunde und teste die Spracherkennung mit einem zustandsbasierten System mit
Hilfe von JFlap.
11
Spracherkennung mit einem Automaten
Wir betrachten jetzt Gleitkommazahlen ohne Exponenten. Die Grammatikregeln für diese
Zahlen erhält man, indem man in den Grammatikregeln für Python-Gleitkommazahlen die
Regeln für "exponentfloat" weglässt.
pointfloat ::= [intpart] fraction | intpart "."
intpart ::= digit+
fraction ::= "." digit+
digit ::= "0"|"1"|"2"
12
Spracherkennung mit einem Automaten
Aufgabe:
Erkläre, wie die Spracherkennung mit dem zustandsbasierten System hier funktioniert.
pointfloat ::= [intpart] fraction | intpart "."
intpart ::= digit+
fraction ::= "." digit+
digit ::= "0"|"1"|"2"
13
Fachkonzept - Akzeptor
Ein Akzeptor bzw. erkennender Automat ist
eine Verarbeitungseinheit, die durch folgende
Bestandteile festgelegt wird:
Z = {q0, q1, q2, q3, q4, q5}
 eine nichtleere, endliche Menge Z von
Zuständen
f: (q0, 0) -> q1; (q0, 1) -> q1; ...
 eine nichtleere, endliche Menge E von
Eingabesymbole
 eine Überführungsfunktion f: Z x E -> Z,
die jedem Paar aus aktuellem Zustand und
Eingabe einen Folgezustand zuordnet
 ein ausgezeichnetes Element z0 aus Z, der
sogenannte Anfangszustand
 einer Teilmenge ZE von Z, den
sogenannten Endzuständen
E = {., 0, 1, 2}
z0 = q0
ZE = {q2, q3}
14
Fachkonzept - Akzeptor
Die Menge E der Eingabesymbole eines
Akzeptors A = (Z, E, f, z0, ZE) kann als
Alphabet einer Sprache aufgefasst werden.
Z = {q0, q1, q2, q3, q4, q5}
Unter der Sprache eines Akzeptors versteht
man die Menge aller Wörter über dem
Alphabet E, die den Automaten vom
Anfangszustand z0 in einen Endzustand aus
ZE überführen.
f: (q0, 0) -> q1; (q0, 1) -> q1; ...
Wenn A = (Z, E, f, z0, ZE) ein gegebener
Akzeptor ist, dann schreiben wir L(A) für die
Sprache des Akzeptors A.
A = (Z, E, f, z0, ZE)
E = {., 0, 1, 2}
z0 = q0
ZE = {q2, q3}
L(A) = {0, 1, 2, ..., 12., ...}
15
Fachkonzept - Akzeptor
Ein Akzeptor ist also eine Verarbeitungseinheit, die Symbole eines Eingabeworts verarbeitet und
sich dabei stets in einem bestimmten Zustand befindet. Anhand des aktuellen Zustands kann
dann festgestellt werden, ob das zu verarbeitende Eingabewort akzeptiert wird oder nicht.
Die Symbole des zu verarbeitenden Eingabeworts sind in einzelne Zellen eines Eingabebandes
geschrieben. Bei der Berarbeitung des Eingabeworts werden die einzelnen Symbole des Worts
mit einem Lesekopf erfasst. Abhängig vom jeweils gelesenen Symbol wird die eigentliche
Verarbeitungseinheit in einen passenden Zustand versetzt. Die Verarbeitung endet, wenn der
Lesekopf alle Symbole des Wortes erfasst hat. Befindet sich die Verarbeitungseinheit dann in
einem Endzustand, so wird das Wort akzeptiert.
16
Übungen
Aufgabe:
Binärzahlen sind Zahlen, die im Dualsystem / Zweiersystem dargestellt sind und daher nur die
Symbole 0 und 1 zur Zahldarstellung benutzen. Die folgende Zahlenreihe beschreibt, wie man
im Dualsystem / Zweiersystem zählt:
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
Binärzahlen sind Wörter über dem Alphabet Σ = {0, 1}. Die Sprache der Binärzahlen LBin
besteht aus sämtlichen Wörtern über Σ = {0, 1}, die eine Binärzahl darstellen:
LBin = {0, 1, 10, 11, 100, 101, 110, 111, 1000, ...}
Entwickle einen erkennenden Automaten, der die Sprache Lbin erkennt.
17
Übungen
Aufgabe:
Betrachte jetzt beliebige Python-Gleitkommazahlen. Hier eine Grammatik (in EBNF) für diese
Zahlen (mit eingeschränktem Ziffernbereich):
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
intpart ::= digit+
fraction ::= "." digit+
exponent ::= "e" ["+" | "-"] digit+
digit ::= "0"|"1"|"2"
(a) Entwickle einen erkennenden Automaten, der genau die beschriebenen Gleitkommazahlen
akzeptiert.
(b) Teste das entwickelte System mit verschiedenen Eingaben. Teste insbesondere auch lange
Eingaben. Warum kann der Automat auch lange Eingaben sehr schnell verarbeiten?
18
Übungen
Aufgabe:
Betrachte Binärwörter, die nur aus den Zeichen 0 und 1 bestehen.
(a) Entwickle einen erkennenden Automaten, der nur Binärwörter mit einer geraden Anzahl
von Einsen akzeptiert.
(b) Entwickle einen erkennenden Automaten, der nur Binärwörter mit einer geraden Anzahl
von Einsen und einer geraden Anzahl von Nullen akzeptiert.
19
Übungen
Aufgabe:
Entwickle einen erkennenden Automaten, der Emoticons für ein lachendes Gesicht akzeptiert
(siehe http://de.wikipedia.org/wiki/Emoticon):
:-) :) =) :] :> :c) x) :o)
:-D ;D :D =D xD XD :oD
20
Übungen
Aufgabe
Die Stadt Karlsruhe vergibt ihre Autokennzeichen nach einem fest vorgegebenen Schema:
Bewohner des direkten Stadtgebietes bekommen ein Kennzeichen, das aus der
Zeichenfolge KA für die Stadt Karlsruhe, genau zwei beliebigen Buchstaben und einer
dreistellige Zahl als Registrierungsnummer besteht (bsp.: KARG626).
Bewohner des Landkreises Karlsruhe (also alles außerhalb des direkten Stadtgebiets)
bekommen Kennzeichen, das nach der Zeichenfolge KA für die Stadt Karlsruhe wie folgt
aufgebaut ist: Die Registrierungsnummer besteht aus ein oder zwei Buchstaben. Die
folgende Zahl kann zwischen 1 und 9999 liegen. Allerdings darf die Zahl im Fall von 2
Buchstaben nicht dreistellig sein. Damit ist eine eindeutige Unterscheidung
zwischen Fahrzeugen aus dem Stadtgebiet und dem Landkreis möglich.
Beachte, dass die Nummer eines Autokennzeichens in Deutschland niemals mit der Ziffer 0
beginnt. Somit ist beispielsweise eine Nummer "032" nicht möglicht!
Entwickle einen erkennenden Automaten, der die Kennzeichen der Stadt Karlsruhe akzeptiert.
21
Ausblick - Theoriebildung
Wir betrachten die Sprache LEMail der stark
vereinfachten E-Mail-Adressen, die durch
folgende Syntaxdiagramme festgelegt wird.
Beachte, dass in diesen Adressen nur die
Symbole b, @ und . vorkommen dürfen.
Eine nach diesen Syntaxdiagrammen
gültige E-Mail-Adresse ist z.B.
[email protected].
Problem:
Gibt es einen Akzeptor A, der die Sprache
LEMail erkennt?
Aufgabe:
Versuche, einen Akzeptor A mit L(A) =
LEMail zu konstruieren.
Emailadresse:
User:
Domain:
Subdomains:
Topleveldomain:
Name:
Buchstabe:
22
Ausblick - Theoriebildung
Wir betrachten die Sprache LKlammer der stark vereinfachten
Klammerausdrücke, die durch folgende Syntaxdiagramme
festgelegt wird. Zur Sprache Lklamme gehören also alle
Klammerausdrücke der Gestalt ((())), bei denen nach einer
Folge öffnender Klammern genau so viele schließende
Klammern folgen.
Problem:
Gibt es einen Akzeptor A, der die Sprache LKlammer erkennt?
Aufgabe:
Versuche, einen Akzeptor A mit L(A) = LKlammer zu
konstruieren.
23
Teil 2
Endliche Automaten und reguläre Sprachen
24
Fallstudie - Binärzahlen
Zusammenhänge zwischen Sprachen und Automaten lassen sich sehr gut mit dem Werkzeug
JFlap erkunden. In einem ersten Schritt werden solche Zusammenhänge durch Experimente
erkundet. In einen zweiten Schritt werden die Zusammenhänge dann aufgegriffen und
präzisiert. Als Untersuchungsgegenstand wird in diesem Abschnitt die Sprache der Binärzahlen
gewählt.
Binärzahlen sind Zahlen, die im Dualsystem / Zweiersystem dargestellt sind und daher nur die
Symbole 0 und 1 zur Zahldarstellung benutzen. Die folgende Zahlenreihe beschreibt, wie man
im Dualsystem / Zweiersystem zählt:
0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
Binärzahlen sind Wörter über dem Alphabet Σ = {0, 1}. Die Sprache der Binärzahlen LBin
besteht aus sämtlichen Wörtern über Σ = {0, 1}, die eine Binärzahl darstellen:
LBin = {0, 1, 10, 11, 100, 101, 110, 111, 1000, ...}
25
JFlap: Vom Automaten zur Grammatik
Aufgabe: Wie wird die Grammatik aus dem Akzeptor erzeugt? Wenn du es verstanden hast,
dann gib einen Automaten vor, erzeuge selbst die zugehörige Grammatik und überprüfe deinen
Vorschlag.
26
JFlap: Von der Grammatik z. Automaten
Aufgabe: Wie der Akzeptor aus der Grammatik erzeugt? Wenn du es verstanden hast, dann gib
eine Grammatik vor, erzeuge selbst den zugehörigen Akzeptor und überprüfe deinen Vorschlag.
Reguläre Sprachen
27
Zum erkennenden Automaten A lässt sich die Grammatik GA erzeugen. Es fällt auf, dass alle
Produktionen dieser Grammatik GA eine bestimmte Struktur haben.
S -> 0B
B -> λ
S -> 1A
A -> 0A
A -> 1A
A -> λ
Nichtterminalsymbol
Nichtterminalsymbol
A -> λ
S -> 0B
Terminalsymbol
Nichtterminalsymbol
leeres Wort
28
Fachkonzept - reguläre Sprache
Eine Produktion u -> v heißt regulär genau
dann, wenn gilt: Die linke Seite u der
Produktion ist ein Nichtterminalsymbol. Die
rechte Seite v der Produktion besteht aus
einem Terminalsymbol gefolgt von einem
Nichtterminalsymbol, oder sie besteht nur
aus dem leeren Wort.
Eine Grammatik heißt regulär genau dann,
wenn alle Produktionen der Grammatik
regulär sind.
Eine Sprache heißt regulär genau dann,
wenn es eine reguläre Grammatik gibt, die
diese Sprache erzeugt.
LBin = {0, 1, 10, 11, 100, 101, 110, 111, ...}
S -> 0B
B -> λ
S -> 1A
A -> 0A
A -> 1A
A -> λ
S -> 0
S -> 1R
R -> ZR
R -> λ
Z -> 0
Z -> 1
reguläre Grammatik für LBin
nicht-reguläre Grammatik für LBin
Beachte, dass es zu einer regulären Sprache durchaus nicht-reguläre Grammatiken geben
kann. Um nachzuweisen, dass eine Sprache regulär ist, reicht es aus, eine reguläre Grammatik
zur Sprache zu konstruieren. Zu einer Sprache kann man stets eine Vielzahl von Grammatiken
angeben. Auch wenn man noch keine reguläre Grammatik zu einer Sprache gefunden hat, so
heißt das noch nicht, dass die Sprache nicht-regulär ist.
29
Nichtdeterministischer Automat
Zur Grammatik G lässt sich ein Automat AG erzeugen. Es fällt auf, dass dieser Automat kein
endlicher Automat im bisherigen Sinne ist.
A -> 1B
A -> 0C
A -> 1C
C -> λ
B -> 0B
B -> 1B
B -> 0D
B -> 1D
D -> λ
nichtdeterministische
Zustandsübergänge
Zustandsübergänge ohne
Eingaben
30
Fachkonzept - Nichtdeterm. Automat
Einen endlichen Automaten, der nichtdeterministische Zustandsübergänge und λ-Übergänge
zulässt, nennt man nichtdeterministischen endlichen Automaten (kurz: NFA für
nondeterministic finite automaton). Entsprechend nennt man einen endlichen Automaten, der
keine nichtdeterministische Zustandsübergänge und keine λ-Übergänge enthält, einen
deterministischen endlichen Automaten (kurz: DFA für deterministic finite automaton).
deterministischer
endlicher Automat
nichtdeterministischer
endlicher Automat
31
Spracherkennung mit einem NFA
Spracherkennung mit nichtdeterministischen Automaten funktioniert so ähnlich wie
Spracherkennung mit deterministischen Automaten. Man muss nur alle möglichen
Zustandsübergänge für eine Eingabe durchspielen. Wenn nach der Verarbeitung des gesamten
Eingabeworts ein Endzustand erreicht werden kann, dann gilt die Eingabe als akzeptiert,
ansonsten als nicht akzeptiert.
32
Zusammenhang zwischen DFA und NFA
Satz (Zusammenhang zwischen deterministischen und nichtdeterministischen Automaten):
Zu jedem nichtdeterministischen erkennenden Automaten gibt es einen deterministischen
erkennenden Automaten, der dieselbe Sprache erkennt. Man kann den deterministischen
erkennenden Automaten automatisiert aus dem nichtdeterministischen erkennenden
Automaten erzeugen.
33
Theorie - reg. Sprachen und Automaten
Satz (Zusammenhang zwischen deterministischen Automaten und regulären Sprachen):
Die Sprache eines deterministischen erkennenden Automaten (Akzeptors) ist regulär: Zum
deterministischen erkennenden Automaten gibt es eine reguläre Grammatik, die dieselbe
Sprache erzeugt, die vom Automaten erkannt wird. Man kann diese reguläre Grammatik
automatisiert erzeugen.
S -> 0B
B -> λ
S -> 1A
A -> 0A
A -> 1A
A -> λ
34
Theorie - reg. Sprachen und Automaten
Satz (Zusammenhang zwischen regulären Sprachen und nichtdeterministischen Automaten):
Zu jeder regulären Sprache gibt es einen nichtdeterministischen erkennenden Automaten, der
diese Sprache erkennt. Der nichtdeterministische erkennende Automat kann automatisiert aus
einer reguläre Grammatik zur regulären Sprache erzeugt werden.
Satz (Zusammenhang zwischen regulären Sprachen und deterministischen Automaten):
Zu jeder regulären Sprache gibt es einen deterministischen erkennenden Automaten, der diese
Sprache erkennt. Der deterministische erkennende Automat kann automatisiert aus einer
reguläre Grammatik zur regulären Sprache erzeugt werden.
A -> 1B
A -> 0C
A -> 1C
C -> λ
B -> 0B
B -> 1B
B -> 0D
B -> 1D
D -> λ
Anwendung der Theorie
35
Problem:
Gibt es einen Akzeptor A, der die Sprache LEMail (die durch
die Syntaxdiagramme festgelegt wird) erkennt?
E -> U@D
U -> N
D -> ST
S -> N.
S -> N.S
T -> bb
N -> B
N -> BN
B -> b
E -> bU
U -> bU
U -> @S
S -> bB
B -> bB
B -> .S
B -> .T
T -> bZ
Z -> b
E -> bU
U -> bU
U -> @S
S -> bB
B -> bB
B -> .S
B -> .T
T -> bZ
Z -> bX
X -> λ
regulär
Lösung:
Nach dem Satz über den Zusammenhang zwischen regulären
Sprachen und deterministischen Automaten gibt es zu dieser
Grammatik einen deterministischen erkennenden Automaten,
der die von der Grammatik erzeugte Sprache erkennt. Dieser
Automat kann auch Schritt für Schritt erzeugt werden.
Aufgabe:
Erzeuge einen Akzeptor A, der die Sprache LEMail erkennt.
36
Anwendung der Theorie
Problem:
Gibt es einen Akzeptor A, der die Sprache LEMail (die durch
die Syntaxdiagramme festgelegt wird) erkennt?
NFA
Lösung:
Der Automat zur Erkennung von LEMail ist nichtdeterministisch.
Nach dem Satz über den Zusammenhang zwischen
deterministischen und nichtdeterministischen Automaten gibt
es einen deterministischen erkennenden Automaten, der
dieselbe Sprache erkennt. Dieser Automat kann auch Schritt
für Schritt (z.B. mit Hilfe von JFlap) erzeugt werden.
Aufgabe:
Erzeuge einen Akzeptor A, der die Sprache LEMail erkennt.
37
JFlap: Vom reg. Ausdruck z. Automaten
JFlap kann aus einem regulären Ausdruck einen endlichen Automaten erzeugen. Der
Erzeugungsprozess ist bei komplexeren regulären Ausdrücken schwer zu durchschauen.
Einfacher geht das, wenn man nur Teilausdrücke von Jflap verarbeiten lässt, z.B. die regulären
Ausdrücke 10 (als Beispiel für eine Konkatenation), 0+1 (als Beispiel für eine Alternative) und
1* (als Beispiel für eine Iteration). Probiere das einmal aus und versuche, das
Umwandlungsverfahren zu beschreiben.
38
JFlap: Vom Automaten z. reg. Ausdruck
JFlap kann ebenfalls aus einem endlichen Automaten einen regulären Ausdruck erzeugen.
Probiere das einmal aus.
39
Vom regulären Ausdruck z. Automaten
Ø ist ein regulärer Ausdruck.
Er beschreibt die leere Wortmenge {}.
λ ist ein regulärer Ausdruck.
Er beschreibt die Wortmenge {λ}, in der nur
das leere Wort vorkommt.
Für jedes a aus Σ ist a ein regulärer
Ausdruck.
Der reguläre Ausdruck a beschreibt die
Wortmenge {a}.
Wenn α und β reguläre Ausdrücke sind, dann
ist auch die Konkatenation αβ ein regulärer
Ausdruck.
Wenn α die Wortmenge A und β die
Wortmenge B beschreibt, dann beschreibt
die Konkatenation αβ die Menge {ab | a aus
A und b aus B} aller Wörter, die mit einem
Wort aus A beginnen und mit einem Wort
aus B enden.
40
Vom regulären Ausdruck z. Automaten
Wenn α und β reguläre Ausdrücke sind, dann
ist auch die Alternative α+β ein regulärer
Ausdruck.
Wenn α die Wortmenge A und β die
Wortmenge B beschreibt, dann beschreibt
die Alternative α+β die Menge {w | w aus A
oder w aus B} aller Wörter, die in A oder in B
vorkommen.
Wenn α ein regulärer Ausdruck ist, dann ist
auch die Iteration α* ein regulärer Ausdruck.
Wenn α die Wortmenge A beschreibt, dann
beschreibt die Iteration α* die Menge A*
aller Wörter, die durch endlich-maliges
Aneinanderfügen von Wörtern aus A
entstehen.
41
Theorie - reg. Ausdrücke u. Automaten
Satz (Zusammenhang zwischen regulären Ausdrücken u. (nicht)deterministischen Automaten):
Zu jedem regulären Ausdruck gibt es einen nichtdeterministischen erkennenden Automaten
(und folglich auch einen deterministischen erkennenden Automaten), der die vom regulären
Ausdruck beschriebene Sprache erkennt. Der (nicht)deterministische erkennende Automat
kann automatisiert aus dem regulären Ausdruck erzeugt werden.
0+1(0+1)*
Aufgabe: Entwickle analog einen endlichen Automaten, der die Sprache zum regulären
Ausdruck a(a+b)*ab erkennt.
42
Theorie - reg. Ausdrücke u. Automaten
Satz (Zusammenhang zwischen (nicht)deterministischen Automaten u. regulären Ausdrücken):
Zu jedem nichtdeterministischen erkennenden Automaten (und folglich auch deterministischen
erkennenden Automaten) gibt es einen regulären Ausdruck, der die vom
(nicht)deterministische Automat erkannte Sprache beschreibt. Der reguläre Ausdruck kann
automatisiert aus dem erkennenden Automaten erzeugt werden.
Satz (über reguläre Sprachen und endliche Automaten):
Die Klasse der Sprachen, die mit einer regulären Grammatik beschrieben werden können, ist
identisch mit der Klasse der Sprachen, die mit einem regulären Ausdruck beschrieben werden
können, ebenso mit der Klasse der Sprachen, die von deterministischen endlichen Automaten
erkannt werden können, und ebenso mit der Klasse der Sprachen, die von
nichtdeterministischen endlichen Automaten erkannt werden können.
43
Aufwand bei der Spracherkennung
Grammatiken und reguläre Ausdrücke dienen zur Beschreibung von Sprachen. Sie sind nicht
auf schnelle Spracherkennung optimiert. Das zeigt sich, wenn man Experimente mit JFlap
durchführt.
44
Aufwand bei der Spracherkennung
Wenn man einen deterministischen endlichen Automaten zur Spracherkennung benutzt, dann
erhält man ohne Wartezeiten direkt eine Rückmeldung.
Grenzen von endlichen Automaten
45
Problem: Gesucht ist ein endlicher Automat, der die der Klammerausdrücke erkennt.
(((())))
aaaabbbb
ok
A
((())
aaabb
Fehler
Versuche, einen solchen endlichen Automaten A zu konstruieren, scheitern an der
Schwierigkeit, die Anzahl der öffnenden Klammern im Automaten mitzuzählen. Es scheint, dass
diese Schwierigkeit bei endlichen Automaten - die ja eine feste Anzahl von Zuständen haben unüberwindbar ist.
Die folgende Argumentation zeigt, dass das tatsächlich der Fall ist. Wir benutzen dabei einen
Beweis durch Widerspruch. Wir nehmen an, dass es einen Automaten A gibt, der die Sprache
der Klammerausdrücke erkennt und führen diese Annahme dann zu einem Widerspruch. Die
Annahme muss folglich falsch sein.
Grenzen von endlichen Automaten
46
Gibt es einen endlichen Automaten, der L = {anbn | n = 1, 2, 3, ...} erkennt?
(((())))
aaaabbbb
ok
DFA
((())
aaabb
Fehler
Angenommen, es gibt einen endlichen Automaten A mit L(A) = L. Dieser Automat A hat eine
feste Anzahl Zustände, etwa m = 15 (die Zahl 15 ist hier willkürlich gewählt, sie spielt für die
Argumentation keine Rolle).
Wie wählen nun ein Wort w = akbk aus L = {anbn | n = 1, 2, 3, ...} aus mit k > m, etwa k = 16.
Bei der Abarbeitung des Wortes w = akbk muss bereits bei der Verarbeitung der 16 a's
mindestens ein Zustand z mindestens zweimal durchlaufen werden, denn es gibt mehr a's als
Zustände.
Wir nehmen einmal an, dass der Zustand z mit dem dritten a und mit dem siebten a erreicht
wird. Für die folgende Argumentation ist nicht entscheidend, mit welchen a's man z erreicht,
sondern nur, dass z zweimal durchlaufen wird.
Es entsteht eine Schleife, die erst mit dem ersten b wieder verlassen wird. Wie die 16 b's den
Automaten in einen Endzustand bringen, ist für die Argumentation ohne Belang.
47
Grenzen von endlichen Automaten
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.region-kaiserslautern.de/faecher/inf/material/automaten/anbn/index.php
48
Grenzen von endlichen Automaten
Dem Bild kann man direkt entnehmen,
dass neben w = a16b16 auch andere
Wörter wie a4b16 (Schleife wurde nicht
durchlaufen) oder auch a8b16 (Schleife
wurde einmal durchlaufen) akzeptiert
werden.
Der Automat akzeptiert folglich auch
Wörter, die nicht zu L = {anbn | n = 1, 2,
3, ...} gehören. Das steht aber im
Widerspruch zur Annahme, dass der
Automat A die Sprache L = {anbn | n =
1, 2, 3, ...} erkennt.
Da die Annahme, dass es einen
endlichen Automaten gibt, der die
Sprache L = {anbn | n = 1, 2, 3, ...}
erkennt, zu einem Widerspruch führt,
muss die Annahme falsch sein.
49
Grenzen von endlichen Automaten
Satz (über die Grenzen von endlichen Automaten):
Die Sprache L = {anbn | n = 1, 2, 3, ...} kann nicht von einem endlichen Automaten erkannt
werden. Sie ist also nicht regulär.
50
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.
...
Die Darstellung hier orientiert sich an den Materialien auf den Webseiten:
http://www.inf-schule.de