Teil II Grundlagen und Notationen

Werbung
Teil II
Grundlagen und Notationen
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen
Grundlagen
Sprachen
1/6
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen .
2
Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben
Grundlagen
Sprachen
1/6
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen .
2
Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben
3
Σn := {a1 a2 . . . an | ai ∈ Σ} ist die Menge aller Wörter der Länge n
über Σ
Grundlagen
Sprachen
1/6
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen .
2
Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben
3
4
Σn := {a1 a2 . . . an | ai ∈ Σ} ist die Menge aller Wörter der Länge n
über Σ
ε ist das leere Wort, Σ0 = {ε}
Grundlagen
Sprachen
1/6
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen .
2
Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben
3
4
5
Σn := {a1 a2 . . . an | ai ∈ Σ} ist die Menge aller Wörter der Länge n
über Σ
ε ist das leere Wort, Σ0 = {ε}
S
Σ∗ := Sn∈N Σn ist die Menge aller Wörter über Σ
Σ+ := n∈N>0 Σn ist die Menge aller nicht leeren Wörter über Σ
Grundlagen
Sprachen
1/6
Alphabete, Wörter, Sprachen
1
N := {0, 1, 2, 3 . . .} ist die Menge der natürlichen Zahlen.
N>0 := {1, 2, 3 . . .} ist die Menge der positiven natürlichen Zahlen .
2
Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben
3
4
5
Σn := {a1 a2 . . . an | ai ∈ Σ} ist die Menge aller Wörter der Länge n
über Σ
ε ist das leere Wort, Σ0 = {ε}
S
Σ∗ := Sn∈N Σn ist die Menge aller Wörter über Σ
Σ+ := n∈N>0 Σn ist die Menge aller nicht leeren Wörter über Σ
Eine (formale) Sprache (über Σ) ist eine Teilmenge von Σ∗ .
Also: Eine Sprache ist eine Menge von Wörtern.
Grundlagen
Sprachen
1/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
Grundlagen
Sprachen
2/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
1
C++ ist die Menge aller syntaktisch richtig aufgebauten C++
Programme. Das Alphabet ist die Menge aller ASCII-Symbole.
Grundlagen
Sprachen
2/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
1
2
C++ ist die Menge aller syntaktisch richtig aufgebauten C++
Programme. Das Alphabet ist die Menge aller ASCII-Symbole.
die Menge der im Duden aufgeführten Wörter über dem Alphabet
{a,A,b,B,. . . ,z,Z,ä,Ä,ö,Ö,ü,Ü,ß,-}
Grundlagen
Sprachen
2/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
1
2
3
C++ ist die Menge aller syntaktisch richtig aufgebauten C++
Programme. Das Alphabet ist die Menge aller ASCII-Symbole.
die Menge der im Duden aufgeführten Wörter über dem Alphabet
{a,A,b,B,. . . ,z,Z,ä,Ä,ö,Ö,ü,Ü,ß,-}
die Menge aller Sätze in der natürlichen Sprache Deutsch, das
Alphabet ist die Menge aller deutschen Wörter
Grundlagen
Sprachen
2/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
1
2
3
4
C++ ist die Menge aller syntaktisch richtig aufgebauten C++
Programme. Das Alphabet ist die Menge aller ASCII-Symbole.
die Menge der im Duden aufgeführten Wörter über dem Alphabet
{a,A,b,B,. . . ,z,Z,ä,Ä,ö,Ö,ü,Ü,ß,-}
die Menge aller Sätze in der natürlichen Sprache Deutsch, das
Alphabet ist die Menge aller deutschen Wörter
die Menge aller DNA(DNS)-Sequenzen, Alphabet ist {A,C,G,T}
Grundlagen
Sprachen
2/6
Modellierung mit formale Sprachen
Wozu eignen sich formale Sprachen?
Wörter eignen sich zur Modellierung von Objekten, die als endliche
Folge von diskreten Elementen aufgefasst werden können.
Formale Sprachen eigenen sich zur Modellierung von Mengen von
Objekten, die sich als Wörter modellieren lassen.
1
2
3
4
5
C++ ist die Menge aller syntaktisch richtig aufgebauten C++
Programme. Das Alphabet ist die Menge aller ASCII-Symbole.
die Menge der im Duden aufgeführten Wörter über dem Alphabet
{a,A,b,B,. . . ,z,Z,ä,Ä,ö,Ö,ü,Ü,ß,-}
die Menge aller Sätze in der natürlichen Sprache Deutsch, das
Alphabet ist die Menge aller deutschen Wörter
die Menge aller DNA(DNS)-Sequenzen, Alphabet ist {A,C,G,T}
XML-Dokumente, HTML-Dokumente, . . .
Grundlagen
Sprachen
2/6
Modellierung von Sprachen
Vorsicht
Nicht jede dieser Sprachen
ist eindeutig definiert.
Grundlagen
Sprachen
3/6
Modellierung von Sprachen
Vorsicht
Nicht jede dieser Sprachen
ist eindeutig definiert.
Fragen
Wie definiert man Sprachen?
Welche Formalismen eignen sich?
Was macht einen guten“
”
Formalismus aus?
Grundlagen
Sprachen
3/6
Modellierung von Sprachen
Vorsicht
Nicht jede dieser Sprachen
ist eindeutig definiert.
Fragen
Wie definiert man Sprachen?
Welche Formalismen eignen sich?
Was macht einen guten“
”
Formalismus aus?
Ausdrucksstärke: Der Formalimus sollte
möglichst viele verschiedene Sprachen
beschreiben können.
Grundlagen
Sprachen
3/6
Modellierung von Sprachen
Vorsicht
Nicht jede dieser Sprachen
ist eindeutig definiert.
Fragen
Wie definiert man Sprachen?
Welche Formalismen eignen sich?
Was macht einen guten“
”
Formalismus aus?
Ausdrucksstärke: Der Formalimus sollte
möglichst viele verschiedene Sprachen
beschreiben können.
Handhabbarkeit: Der Formalismus soll
(schnell) ausgewertet werden können;
außerdem möchte man Aussagen darüber
treffen können (z.B. Verifikation,
Minimierung).
Grundlagen
Sprachen
3/6
Modellierung von Sprachen
Vorsicht
Nicht jede dieser Sprachen
ist eindeutig definiert.
Fragen
Wie definiert man Sprachen?
Welche Formalismen eignen sich?
Was macht einen guten“
”
Formalismus aus?
Ausdrucksstärke: Der Formalimus sollte
möglichst viele verschiedene Sprachen
beschreiben können.
Handhabbarkeit: Der Formalismus soll
(schnell) ausgewertet werden können;
außerdem möchte man Aussagen darüber
treffen können (z.B. Verifikation,
Minimierung).
Grundlagen
Sprachen
Wortproblem für L
Eingabe: w ∈ Σ∗
Frage: Ist w ∈ L?
3/6
Einschränkungen
Beispiel C++
1
die Menge aller syntaktisch richtig aufgebauten C++ Programme
2
die Menge aller syntaktisch richtig aufgebauten C++ Programme,
die immer terminieren
Frage
Wie schwer ist das Wortproblem
für diese beiden Sprachen?
Grundlagen
Sprachen
4/6
Einschränkungen
Beispiel C++
1
die Menge aller syntaktisch richtig aufgebauten C++ Programme
2
die Menge aller syntaktisch richtig aufgebauten C++ Programme,
die immer terminieren
Frage
1
Wie schwer ist das Wortproblem
für diese beiden Sprachen?
1. Sprache: Wird von jedem
C++ Compiler gelöst
2
2. Sprache: unentscheidbar
Grundlagen
Sprachen
4/6
Einschränkungen
Beispiel C++
1
die Menge aller syntaktisch richtig aufgebauten C++ Programme
2
die Menge aller syntaktisch richtig aufgebauten C++ Programme,
die immer terminieren
Frage
1
Wie schwer ist das Wortproblem
für diese beiden Sprachen?
1. Sprache: Wird von jedem
C++ Compiler gelöst
2
2. Sprache: unentscheidbar
Grundidee
Um handhabbare Formalismen zu bekommen,
muss man Ausdrucksstärke opfern.
Grundlagen
Sprachen
4/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Grundlagen
Klassen von Sprachen
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Grundlagen
Klassen von Sprachen
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Operationen auf Sprachen
∪, ∩, −, L
Grundlagen
(Mengenoperationen)
Klassen von Sprachen
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Operationen auf Sprachen
∪, ∩, −, L
(Mengenoperationen)
L1 · L2 := {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 }
Grundlagen
Klassen von Sprachen
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Operationen auf Sprachen
∪, ∩, −, L
(Mengenoperationen)
L1 · L2 := {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 }
S
prefix(L) := w∈L prefix(w)
S
suffix(L) := w∈L suffix(w)
Grundlagen
Klassen von Sprachen
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Operationen auf Sprachen
∪, ∩, −, L
(Mengenoperationen)
L1 · L2 := {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 }
S
prefix(L) := w∈L prefix(w)
S
suffix(L) := w∈L suffix(w)
für n ∈ N: Ln := {w1 · . . . · wn | wi ∈ L}
Grundlagen
Klassen von Sprachen
(n-fache Konkatenation)
5/6
Operationen auf Wörtern und Sprachen
Operationen auf Wörtern
Konkatenation: u · v := uv
Menge aller Präfixe: prefix(w) := {u ∈ Σ∗ | ex. v ∈ Σ∗ mit uv = w}
Menge aller Suffixe: suffix(w) := {v ∈ Σ∗ | ex. u ∈ Σ∗ mit uv = w}
Operationen auf Sprachen
∪, ∩, −, L
(Mengenoperationen)
L1 · L2 := {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 }
S
prefix(L) := w∈L prefix(w)
S
suffix(L) := w∈L suffix(w)
für n ∈ N: Ln := {w1 · . . . · wn | wi ∈ L}
S
L∗ := n∈N Ln
S
L+ := n∈N>0 Ln
Grundlagen
Klassen von Sprachen
(n-fache Konkatenation)
(Kleene-Stern)
(Kleene-Plus)
5/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Klasse aller endlichen Sprachen
FINΣ := {L ⊂ Σ∗ | L ist endlich},
[
FIN :=
FINΣ .
Σ ist ein Alphabet
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Lemma
Die Klasse FIN ist
Klasse aller endlichen Sprachen
FINΣ := {L ⊂ Σ∗ | L ist endlich},
[
FIN :=
FINΣ .
Σ ist ein Alphabet
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Lemma
Die Klasse FIN ist
1
abgeschlossen unter ∪, ∩, −,
·, prefix und suffix,
Klasse aller endlichen Sprachen
FINΣ := {L ⊂ Σ∗ | L ist endlich},
[
FIN :=
FINΣ .
Σ ist ein Alphabet
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Lemma
Die Klasse FIN ist
1
abgeschlossen unter ∪, ∩, −,
·, prefix und suffix,
2
für jedes n ∈ N abgeschlossen
unter Ln ,
Klasse aller endlichen Sprachen
FINΣ := {L ⊂ Σ∗ | L ist endlich},
[
FIN :=
FINΣ .
Σ ist ein Alphabet
Grundlagen
Klassen von Sprachen
6/6
Klassen und Abschlusseigenschaften
Eine Menge von Sprachen heißt auch Klasse.
Wir interessieren uns besonders für Klassen, deren Sprachen
gemeinsame Eigenschaften haben.
Abgeschlossen
Sei Op eine n-stellige Operation
auf Sprachen (n ≥ 1). Eine Klasse
C ist abgeschlossen unter Op
wenn Op(L1 , . . . , Ln ) ∈ C für alle
Li ∈ C.
Klasse aller endlichen Sprachen
FINΣ := {L ⊂ Σ∗ | L ist endlich},
[
FIN :=
FINΣ .
Lemma
Die Klasse FIN ist
1
abgeschlossen unter ∪, ∩, −,
·, prefix und suffix,
2
für jedes n ∈ N abgeschlossen
unter Ln ,
3
nicht abgeschlossen unter
L, + und ∗
Beweis: Tafel/Übung
Σ ist ein Alphabet
Grundlagen
Klassen von Sprachen
6/6
Herunterladen