Theoretische Informatik Automaten und formale Sprachen

Werbung
Was bisher geschah: Formale Sprachen
I
Alphabet, Wort, Sprache
Operationen und Relationen auf Wörtern und Sprachen
I
reguläre Ausdrücke: Syntax, Semantik, Äquivalenz
I
Wortersetzungssysteme
I Wortersetzungsregeln und -systeme
I Ableitungen, Ableitungsgraph
I durch Wortersetzungssysteme definierte Sprachen
I Wortproblem in Wortersetzungssystemen
im Allgemeinen nicht algorithmisch lösbar,
aber algorithmisch lösbar für
I
I
I
nichtverlängernde Systeme
nichtverkürzende Systeme
Grammatiken
I Terminal-, Nichtterminalsymbole
I Ableitungen in Grammatiken
I durch Grammatiken definierte Sprachen
I Äquivalenz von Grammatiken
I Chomsky-Hierarchie für Grammatiken und Sprachen
70
Wortproblem für Typ-1-Sprachen
gegeben : Grammatik G = (N, T , P, S) vom Chomsky-Typ 1,
Wort w ∈ T ∗
Frage : Gilt w ∈ L(G ) ?
Satz
Es existiert ein Algorithmus, welcher für jede beliebige Eingabe
(G , w ), wobei
I
T ein endliches Alphabet,
I
w ∈ T ∗ und
I
G eine monotone Grammatik (Chomsky-Typ 1) über T sind
die Wahrheit der Aussage w ∈ L(G ) korrekt beantwortet.
(folgt aus entsprechendem Satz für nichtverkürzende
Wortersetzungssysteme)
demnächst spezielle (effizientere) Verfahren für Grammatiken vom
Chomsky-Typ 2 und 3
71
Dyck-Sprache
Klammerpaar ( und )
Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke
erzeugt durch Grammatik
= ({S}, {(, )}, P, S) mit


 S → ε 
S → SS
P =


S → (S)
G
Beispiele:
I
()(()()) ∈ L(G )
I
())(6∈ L(G )
I
ε ∈ L(G )
Achtung:
I
G hat Chomsky-Typ 0
I
Dyck-Sprache hat Chomsky-Typ 2
72
Allgemeine Dyck-Sprachen
Menge aller korrekt geklammerten Ausdrücke
mit n Paaren von Klammern: (i , )i für i ∈ {1, . . . , n}
erzeugt durch Grammatik
= ({S}, {(i , )i | i ∈ {1, . . . , n}}, P, S) mit
S → ε
P =
∪ {S → (i S)i | i ∈ {1, . . . , n}}
S → SS
G
Symbole müssen nicht notwendig Klammern sein, z.B.
aacdacababdbbcabdb ∈ Dyck-Sprache mit
a statt (1 , b statt )1 , c statt (2 und d statt )2
73
Beispiel HTML
mehrere Paare öffnender und schließender Klammern (Tags)
<html>
<head>
<title>
Theoretische Informatik
</title>
</head>
<body>
<h1>
Theoretische Informatik
</h1>
...
</body>
</html>
74
Wiederholung: abzählbare Mengen
(Mathematik 1. Semester)
Eine Menge M heißt genau dann abzählbar, wenn sie höchstens so
mächtig wie
ist.
(also eine surjektive Funktion f : → M existiert)
N
N
Mit dem ersten Diagonalverfahren von Cantor lässt sich z.B.
zeigen:
I
Z und Q sind abzählbar.
I
Für jedes endliche Alphabet A ist die Menge A∗ aller Wörter
über A abzählbar.
I
Für jedes endliche Alphabet A ist jede Sprache L ⊆ A∗
abzählbar.
Mengen, die nicht abzählbar sind, heißen überabzählbar.
75
Beispiele überabzählbarer Mengen
Mit dem zweiten Diagonalverfahren von Cantor lässt sich zeigen:
R
N
ist überabzählbar (mächtiger als ).
(Es gibt überabzählbar viele reelle Zahlen.)
R
[0, 1] ⊂ ist überabzählbar.
(Intervall [0, 1] enthält überabzählbar viele reelle Zahlen.)
2N (Menge aller Mengen natürlicher Zahlen) ist mächtiger als
.
(Überabzählbarkeit der Menge 2N )
Es gibt überabzählbar viele Mengen natürlicher Zahlen.
N
2{0,1}
2(A
∗
∗
)
Menge aller Sprachen L ⊆ {0, 1}∗ ist mächtiger als
{0, 1}∗ .
(Es gibt überabzählbar viele Sprachen über dem Alphabet
{0, 1}.)
ist für beliebiges endliches Alphabet A mächtiger als A∗
(Für jedes endliche Alphabet A ist die Menge aller
Sprachen über A überabzählbar. )
76
Lässt sich jede Sprache durch eine Grammatik erzeugen?
Existiert für jedes endliche Alphabet A zu jeder Sprache L ⊆ A∗ eine
Grammatik G mit L = L(G )?
Nein (Gegenbeispiel später)
Begründung:
∗
1. Wieviele Sprachen L ⊆ A∗ gibt es? (Mächtigkeit von 2(A ) )
überabzählbar viele
2. Wieviele Grammatiken über dem endlichen Alphabet A gibt es?
abzählbar viele, weil
I
I
I
I
Alphabet A0 = A ∪ {(, ), , , {, }, →, ε} endlich
∗
Menge (A0 ) aller Wörter über A0 abzählbar
∗
jede Grammatik über A ist ein Wort aus (A0 )
(endliche Beschreibung)
Menge aller Grammatiken über A ist Teilmenge der
∗
abzählbaren Menge (A0 ) , also selbst abzählbar
Damit existieren sogar sehr viel mehr (überabzählbar viele) Sprachen, die
nicht durch Grammatiken beschrieben werden können.
77
Zustandsübergangssystem Münzschließfach
fg
S
b
O
fo
A
G
Z
S
bg
bo
O
Aktionen: A aufschließen
Z zuschließen
O Tür öffnen
S Tür schließen
G Geld einwerfen
Zustände : fg frei, Tür zu
fo frei, Tür offen
bo bezahlt, Tür offen
bg bezahlt, Tür zu
b belegt
78
Endliche Automaten – Definition
NFA (nondeterministic finite automaton)
A = (X , Q, δ, I , F ) mit
X endliches Alphabet,
Q endliche Menge von Zuständen,
δ Übergangsrelationen δ : X → (Q × Q),
I ⊆ Q Startzustände,
F ⊆ Q akzeptierende Zustände.
79
NFA: Beispiel
A = (X , Q, δ, {0, 3}, {2, 3, 4}) mit
X
= {a, b, c}
Q = {0, 1, 2, 3, 4}
δ(a) = {(0, 0), (0, 1), (1, 3)}
δ(b) = {(0, 0), (1, 2)}
δ(c) = {(0, 3), (3, 3), (4, 1)}
a,b
a
0
c
3
b
1
a
2
c
c
4
80
Eigenschaften endlicher Automaten
NFA A = (X , Q, δ, I , F ) heißt
vollständig , falls ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≥ 1
deterministisch (DFA) , falls
1. |I | = 1 und
2. ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≤ 1
Beispiele:
a,b
b
b
a
0
b
a
b
b
1
a
vollständig
nicht deterministisch
0
b
1
nicht vollständig
deterministisch
0
1
a
vollständig
deterministisch
81
Wiederholung: zweistellige Relationen
Verkettung der Relationen R ⊆ M × M und S ⊆ M × M:
R ◦ S = {(a, b) | ∃c ∈ M : (a, c) ∈ R ∧ (c, b) ∈ S}
Beispiel:
M = {a, b, c}
R = {(a, a), (b, c)}
S
= {(a, c), (c, b)}
R ◦S
= {(a, c), (b, b)}
S ◦ R = {(c, c)}
82
Darstellung als Graph
als gerichteter Graph G = (V , E ) mit V = M und E = R
b
M = {a, b, c}
R = {(a, a), (b, c)}
a
S = {(a, c), (c, b)}
Verkettung als Wege mit passender Markierung
R ◦S
c
b
= {(a, c), (b, b)}
S ◦ R = {(c, c)}
a
c
83
Darstellung als Matrix
mit Booleschen Einträgen
= {a, b, c}
M

R
= {(a, a), (b, c)}
S
= {(a, c), (c, b)}

1 0 0
 0 0 1 
0 0 0


0 0 1
 0 0 0 
0 1 0
Verkettung als Matrixmultiplikation mit Booleschen Operationen

R ◦S
S ◦R
1
=  0
0

0
=  0
0
0
0
0
0
0
1

0
1 
0

1
0 
0
0
0
0
0
0
1
1
0
0
0
0
0
 
1
0 =
0
 
0
1 =
0
0
0
0
0
1
0
0
0
0
0
0
0

1
0 
0

0
0 
1
84
Übergangsrelation auf Wörtern
Fortsetzung der Übergangsrelationen δ : X → (Q × Q)
auf Wörter δ : X ∗ → (Q × Q):
δ(ε) = {(q, q) | q ∈ Q} = IQ
(Identität auf Q)
δ(wa) = δ(w ) ◦ δ(a)
= {(p, q) | ∃r ∈ Q : (p, r ) ∈ δ(w ) ∧ (r , q) ∈ δ(a)}
für alle w ∈ X ∗ , a ∈ X
Für w = w1 · · · wn ∈ X n gilt also
δ(w ) = δ(w1 ) ◦ · · · ◦ δ(wn )
(Multiplikation der Matrizen δ(w1 ), . . . , δ(wn ))
85
Beispiel
a,b
A = ({a, b}, {0, 1}, δ, I , F ) mit
δ(a) = {(0, 0)} und
δ(b) = {(0, 0), (0, 1), (1, 1)}
δ(a) =
1
0
δ(ba) = δ(b)δ(a) =
δ(abb) = δ(a)δ(b)δ(b) =
1
0
b
0
0
0
b
δ(b) =
1
0
0
0
1
1
1
0
1
0
1
1
0
0
1
0
1
1
1
=
1
0
1
1
1
0
0
0
=
1
0
1
0
86
Herunterladen