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