Folien (09.04.2013)

Werbung
Grundlagen der theoretischen Informatik
Kurt Sieber
Fakultät IV, Department ETI
Universität Siegen
SS 2013
Vorlesung vom 09.04.2013
Inhalt der Vorlesung
Teil I: Automaten und formale Sprachen (Kurt Sieber)
Zentrale Fragestellungen
Wie definiert man (formal) die Syntax einer Sprache (z.B. einer
Programmiersprache)?
Wie überprüft man, ob ein Wort (d.h. eine Zeichenreihe) zur
Sprache gehört?
Teil II: Berechenbarkeit und Komplexität (Hannes Diener)
Zentrale Fragestellungen
Welche Probleme (Aufgabenstellungen) sind prinzipiell mit einem
Computer lösbar bzw. nicht lösbar?
Welche Probleme sind mit vernünftigem Aufwand (an Speicherplatz und Laufzeit) lösbar?
Kurt Sieber
GTI - SS 2013
1
Zeichen, Wörter, Sprachen
Grundlagen für beide Teile: Zeichen, Wörter und Sprachen
Definition 1.1 Ein Alphabet oder Zeichenvorrat ist eine nichtleere
endliche Menge. Die Elemente eines Alphabets nennen wir Zeichen
oder Symbole.
Konvention: Alphabete werden mit Σ, Σ1, Σ0, . . . bezeichnet.
Kurt Sieber
GTI - SS 2013
2
Zeichen, Wörter, Sprachen
Beispiele
Σ1 = {1}
Σ2 = {0, 1}
Σ3 = {0, . . . , 9}
Σ4 = {a, . . . , z, A, . . . , Z}
Σ5 = Menge aller ASCII-Zeichen
Σ6 = {begin, end, if, then, else, ; , :=, +, ∗, . . .}
Kurt Sieber
GTI - SS 2013
3
Zeichen, Wörter, Sprachen
Definition 1.2 Ein Wort über dem Alphabet Σ ist eine endliche
Folge w = (a1, . . . , an), wobei n ≥ 0 und ai ∈ Σ für i = 1, . . . , n.
n heißt Länge des Wortes w, ai heißt i-tes Zeichen von w. Das Wort
() heißt leeres Wort.
Kurzschreibweise
a1 . . . an statt (a1, . . . , an)
Vorsicht: Zeichen a und Wort a nicht mehr unterscheidbar!
ε statt ()
Weitere Schreibweisen
|w| = Länge von w
Σ∗ = Menge aller Wörter über Σ
Σ+ = Σ∗ \ {ε} = Menge aller nichtleeren Wörter über Σ
Kurt Sieber
GTI - SS 2013
4
Zeichen, Wörter, Sprachen
Beispiele
{1}∗ = {ε, 1, 11, 111, . . .}
{0, 1}∗ = {ε, 0, 1, 00, 01, 10, 11, . . .}
ε, 0, 123, 0815 ∈ {0, . . . , 9}∗
Der Inhalt einer Datei ist ein Wort über dem ASCII-Alphabet
(denn Leerzeichen, Zeilenwechsel etc. sind Zeichen dieses Alphabets).
Ein Programm (in irgendeiner Programmiersprache) ist ebenfalls
ein Wort über dem ASCII-Alphabet.
Der Inhalt eines Buches ist ein Wort (über dem Alphabet der
Sprache, in der es geschrieben ist).
Kurt Sieber
GTI - SS 2013
5
Zeichen, Wörter, Sprachen
Alternative Definition für Σ∗ und Σ+
Σn = {(a1, . . . , an) | ai ∈ Σ für i = 1, . . . , n}
= {a1 . . . an | ai ∈ Σ für i = 1, . . . , n}
= Menge aller Wörter der Länge n über Σ
Speziell: Σ0 = {()}
= {ε}
Σ∗
=
S
n≥0 Σ
n
= Menge aller Wörter über Σ
S
+
n
Σ
=
n≥1 Σ
= Σ∗ \ {ε}
Kurt Sieber
GTI - SS 2013
6
Zeichen, Wörter, Sprachen
Definition 1.3 Seien v = a1 . . . am und w = b1 . . . bn Wörter über Σ.
Dann ist die Konkatenation v ◦ w von v und w definiert durch
v ◦ w = a1 . . . amb1 . . . bn
Kurzschreibweise: vw statt v ◦ w
Eigenschaften der Konkatenation
Assoziativität: (uv)w = u(vw) für alle u, v, w ∈ Σ∗
Neutrales Element: wε = εw = w für alle w ∈ Σ∗
Also: (Σ∗, ◦) ist ein Monoid mit neutralem Element ε
(vgl. natürliche Zahlen mit Multiplikation)
Kurt Sieber
GTI - SS 2013
7
Zeichen, Wörter, Sprachen
Definition 1.4 Sei w ∈ Σ∗ und n ∈ N. Dann ist die n-te Potenz wn
von w definiert durch wn = w
. . w} (speziell: an = a
. . a} falls a ∈ Σ).
| .{z
| .{z
n
n
Besser: Definition von wn durch Induktion über n
w0 = ε
wn = wwn−1 falls n > 0
Oder:
w0 = ε
wn = wn−1w falls n > 0
Beispiele
(bla)2 = blabla
(bla )3 = bla bla bla
Kurt Sieber
GTI - SS 2013
8
Zeichen, Wörter, Sprachen
Definition 1.5 Für w = a1 . . . an ∈ Σ∗ sei wR ∈ Σ∗ das Wort, das
durch “Spiegelung” aus w entsteht , d.h.
wR = an . . . a1
(R steht für engl. reverse)
Beispiel
(01001)R = 10010
Alternative
Definition von wR durch Induktion über |w|
(s. Übung!)
Kurt Sieber
GTI - SS 2013
9
Zeichen, Wörter, Sprachen
Definition 1.6 Sei x ∈ Σ∗.
u heißt Anfangswort oder Präfix von x, falls ein v ∈ Σ∗ existiert
mit x = uv.
v heißt Endwort oder Suffix von x, falls ein u ∈ Σ∗ existiert mit
x = uv.
v heißt Teilwort von x, falls u, w ∈ Σ∗ existieren mit x = uvw.
Beispiel
Präfixe von 010: ε, 0, 01, 010
Suffixe von 010: ε, 0, 10, 010
Teilwörter von 010: ε, 0, 1, 01, 10, 010
Kurt Sieber
GTI - SS 2013
10
Zeichen, Wörter, Sprachen
Die Beziehungen ‘Anfangswort’, ‘Endwort’ und ‘Teilwort’ sind zweistellige Relationen auf Σ∗. Jede dieser Relationen ist
reflexiv : Jedes w ∈ Σ∗ steht in Relation zu sich selbst.
transitiv : Wenn u in Relation zu v und v in Relation zu w steht,
dann steht auch u in Relation zu w.
antisymmetrisch: Wenn u in Relation zu v steht und v in Relation
zu u, dann ist v = u.
Also: Jede der Relationen definiert eine partielle Ordnung auf Σ∗.
Kurt Sieber
GTI - SS 2013
11
Zeichen, Wörter, Sprachen
Definition 1.7 Eine Sprache (oder formale Sprache) über dem Alphabet Σ ist eine (beliebige) Teilmenge von Σ∗.
Konvention:
Sprachen bezeichnen wir meist mit L, L1, L0, . . . (engl. language).
Alternative Formulierung
Eine Sprache über Σ ist ein Element der Potenzmenge ℘(Σ∗).
Kurt Sieber
GTI - SS 2013
12
Zeichen, Wörter, Sprachen
Beispiele
L1 = ∅
L2 = Σ∗
L3 = {ε}
L4 = {1n | n ist eine Primzahl}
L5 = Menge aller Binärdarstellungen natürlicher Zahlen
L6 = Menge aller Dezimaldarstellungen natürlicher Zahlen
L7 = Menge aller Java-Programme
L8 = Menge aller Sätze der deutschen Sprache
L9 = {0n1n | n ≥ 0}
L10 = {vw | v ∈ {0}∗, w ∈ {1}∗}
Kurt Sieber
GTI - SS 2013
13
Zeichen, Wörter, Sprachen
Definition 1.8 Seien L, L1, L2 ⊆ Σ∗. Dann sei
L1 ∪ L2 die Vereinigung von L1 und L2.
L1 ∩ L2 der Durchschnitt von L1 und L2.
L1 \ L2 = {w ∈ L1 | w ∈
/ L2} die Mengendifferenz von L1 und L2.
L̄ = Σ∗ \ L das Komplement von L.
L1 ◦ L2 = {vw | v ∈ L1, w ∈ L2} die Konkatenation von L1 und L2.
Kurzschreibweise: L1L2 statt L1 ◦ L2
Eigenschaften der Konkatenation
Assoziativität: (L1L2)L3 = L1(L2L3) für alle L1, L2, L3 ⊆ Σ∗
Neutrales Element: L{ε} = {ε}L = L für alle L ⊆ Σ∗
Also: (℘(Σ∗), ◦) ist ein Monoid mit neutralem Element {ε}.
Kurt Sieber
GTI - SS 2013
14
Zeichen, Wörter, Sprachen
Definition 1.9 Seien L ⊆ Σ∗ und n ∈ N. Dann ist die n-te Potenz
Ln von L definiert durch
Ln = L
. . ◦ L}
| ◦ .{z
n
= L
. . L}
| .{z
n
= {w1 . . . wn | wi ∈ L für i = 1, . . . , n}
Besser: Definition von Ln durch Induktion über n
L0 = {ε}
Ln = LLn−1 falls n > 0
Oder:
L0 = {ε}
Ln = Ln−1L falls n > 0
Kurt Sieber
GTI - SS 2013
15
Zeichen, Wörter, Sprachen
Definition 1.10 Für L ⊆ Σ∗ sei
LR = {wR | w ∈ L} die “Spiegelung” von L
S
∗
n
L =
n≥0 L
= {w1 . . . wn | n ≥ 0, wi ∈ L für i = 1, . . . , n}
der Kleene-Abschluss von L.
Speziell:
{w}∗ = {wn | n ≥ 0} falls w ∈ Σ∗
{a}∗
= {an | n ≥ 0} falls a ∈ Σ
L+ =
S
n
n≥1 L
= {w1 . . . wn | n ≥ 1, wi ∈ L für i = 1, . . . , n}
= LL∗
Folgerung: L∗ = L+ ∪ L0 = L+ ∪ {ε}
Kurt Sieber
GTI - SS 2013
16
Zeichen, Wörter, Sprachen
Rechenregeln für Potenzen
. . . von Sprachen
. . . von Wörtern
w0 = ε (neutrales Element)
L0 = {ε} (neutrales Element)
w1 = w
L1 = L
wmwn = wm+n
LmLn = Lm+n
(wm)n = wmn
(Lm)n = Lmn
Diese Regeln gelten in jedem Monoid (wenn man das Potenzieren
nach dem üblichen Schema definiert). Denn sie folgen allein aus der
Assoziativität und der Eigenschaft des neutralen Elements.
n
Warnung: Es gilt nicht (w1w2)n = w1nw2n oder (L1L2)n = Ln
1 L2 .
Denn dazu bräuchte man die Kommutativität.
Kurt Sieber
GTI - SS 2013
17
Zeichen, Wörter, Sprachen
Rechenregeln für ∗ und +
L ⊆ L∗
L ⊆ L+
(L∗)∗ = L∗
(L+)+ = L+
Mengenoperatoren mit diesen beiden Eigenschaften nennt man Abschluss- oder Hüllenoperatoren.
Beweis für ∗
S
∗
1
∗
1. L ⊆ L ist klar wegen L = L und L = n≥0 Ln.
2. L∗ = (L∗)∗:
‘⊆’ ist klar wegen 1.
‘⊇’: Sei w ∈ (L∗)∗, d.h. w = w1 . . . wn mit n ≥ 0 und wi ∈ L∗ für
i = 1, . . . , n. Dann existiert für jedes i ein mi ≥ 0 mit wi ∈ Lmi ,
also folgt w = w1 . . . wn ∈ Lm1 . . . Lmn = Lm1+...+mn ⊆ L∗.
2
Kurt Sieber
GTI - SS 2013
18
Zeichen, Wörter, Sprachen
Die Operatoren ∪, ◦,∗ , . . . lassen sich auch zur Beschreibung von Sprachen verwenden. Konvention: Die Postfixoperatoren n, + und ∗
binden am stärksten, ◦ bindet stärker als ∪.
Beispiele
Die Menge aller Dezimaldarstellungen natürlicher Zahlen:
Lnat = {0, . . . , 9}+ = {0, . . . , 9}{0, . . . , 9}∗
Die Menge aller Dezimaldarstellungen ganzer Zahlen:
Lint = {−, ε}Lnat
Die Menge aller dezimalen Festpunktzahlen:
Lfix = Lint {.} ∪ {.}Lnat ∪ Lint {.}Lnat
Die Menge aller dezimalen Fließpunktzahlen:
Lfloat = Lint {e, E}Lint ∪ Lfix ({ε} ∪ {e, E}Lint )
Kurt Sieber
GTI - SS 2013
19
Zeichen, Wörter, Sprachen
Die Menge aller Wörter über dem Alphabet {0, 1}, . . .
. . . die mit 00 beginnen:
L1 = {00}{0, 1}∗
. . . die 00 als Teilwort enthalten:
L2 = {0, 1}∗{00}{0, 1}∗
. . . die mindestens zwei Nullen enthalten:
L3 = {0, 1}∗{0}{0, 1}∗{0}{0, 1}∗ = {1}∗{0}{1}∗{0}{0, 1}∗
. . . die genau zwei Nullen enthalten:
L4 = {1}∗{0}{1}∗{0}{1}∗
. . . die höchstens zwei Nullen enthalten:
L5 = {1}∗{0, ε}{1}∗{0, ε}{1}∗
. . . deren erstes und letztes Zeichen übereinstimmen:
L6 = {0, 1} ∪ {0}{0, 1}∗{0} ∪ {1}{0, 1}∗{1}
Kurt Sieber
GTI - SS 2013
20
Reguläre Sprachen
Definition 2.1 Die Menge aller regulären Sprachen über Σ ist induktiv definiert durch:
Jede endliche Menge L ⊆ Σ∗ ist regulär.
Wenn L1, L2 ⊆ Σ∗ regulär sind, dann sind auch L1 ∪ L2 und L1 ◦ L2
regulär.
Wenn L regulär ist, dann ist auch L∗ regulär.
Mit anderen Worten:
Eine Sprache ist genau dann regulär, wenn sie sich durch wiederholte Anwendung der Operatoren ∪, ◦ und ∗ aus endlichen Sprachen
aufbauen lässt.
Damit haben wir eine endliche Beschreibung für jede reguläre Sprache.
Beispiele: Lnat , Lint , Lfix , Lfloat , L1, . . . , L6 sind reguläre Sprachen.
Kurt Sieber
GTI - SS 2013
21
Reguläre Sprachen
Die ‘Mengenausdrücke’ aus Definition 2.1 sind gut lesbare Beschreibungen für reguläre Sprachen (zumindest für die Beispiele aus der
Praxis wie Zahldarstellungen, Variablennamen, . . . .)
Aber:
Nachteil in der Praxis:
Ein Mengenausdruck für eine Sprache liefert noch keinen Algorithmus, um die Zugehörigkeit zur Sprache zu testen.
Nachteil in der Theorie:
Mit Definition 2.1 kann man nur schwer zeigen, dass eine Sprache
nicht regulär ist.
Deshalb:
Alternative Charakterisierungen der regulären Sprachen
Insbesondere algorithmische Charakterisierungen
Kurt Sieber
GTI - SS 2013
22
Endliche Automaten
Ein endlicher Automat ist eine ‘Maschine’, die (nur) endlich viele Zustände annehmen kann. Einer der Zustände heißt Startzustand, einige
Zustände heißen Endzustände (besser: akzeptierende Zustände).
Arbeitsweise
Der Automat erhält ein Wort w als Eingabe.
Zu Beginn befindet er sich im Startzustand.
Er liest w zeichenweise von links nach rechts, wobei jedes Zeichen
einen Zustandsübergang bewirkt.
Ist er nach Abarbeitung von w in einem Endzustand, so wird w
akzeptiert, andernfalls wird w abgelehnt.
Ein endlicher Automat kann also dazu benutzt werden, die Zugehörigkeit zu einer Sprache zu testen.
Kurt Sieber
GTI - SS 2013
23
Endliche Automaten
Graphische Darstellung eines endlichen Automaten
0
1
1
q0
q1
0
Konvention:
sind die Zustände
ist der Startzustand
sind die Endzustände
Akzeptierte Wörter: 0, 010, 01100
Abgelehnte Wörter: 1, 101, 11011
Kurt Sieber
GTI - SS 2013
24
Zugehörige Unterlagen
Herunterladen