Grundbegriffe der Informatik Einheit 6: formale Sprachen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/18
Überblick Formale Sprachen Formale Sprachen Produkt formaler Sprachen Konkatenationsabschluss formaler Sprachen 2/18
Überblick Formale Sprachen Formale Sprachen Produkt formaler Sprachen Konkatenationsabschluss formaler Sprachen Formale Sprachen 3/18
Sprachen natürliche Sprache: Aussprache Stil, z. B. Wortwahl und Satzbau Welche Formulierungen sind syntaktisch korrekt? Ist und syntaktische welcher korrekt nicht? Informatik: Sprachen, die nicht natürlich sind: Programmiersprachen Aufbau von Emails, WWW-Seiten,... Eingabedateien für... Syntax Wie spezifiziert man, was korrekt ist? Wie überprüft man, ob etwas korrekt ist? Semantik Wie definiert man, was syntaktisch korrekte Gebilde bedeuten? darum kümmern wir uns später Formale Sprachen 4/18
Überblick Formale Sprachen Formale Sprachen Produkt formaler Sprachen Konkatenationsabschluss formaler Sprachen Formale Sprachen Formale Sprachen 5/18
Formale Sprachen Alphabet A gegeben Eine formale Sprache (über einem Alphabet A) ist eine Teilmenge L A. im Zusammenhang mit syntaktischer Korrektheit: formale Sprache L der syntaktisch korrekten Gebilde syntaktisch falsche Gebilde gehören nicht zu L Beispiele: A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -}. formale Sprache der Dezimaldarstellungen ganzer Zahlen enthält z.b. 1, -22 und 192837465, aber nicht 2-3---41. formale Sprache der syntaktisch korrekten Java-Programme enthält alle Java-Programme enthält zum Beispiel nicht: [2] class int)( Formale Sprachen Formale Sprachen 6/18
Überblick Formale Sprachen Formale Sprachen Produkt formaler Sprachen Konkatenationsabschluss formaler Sprachen Formale Sprachen Produkt formaler Sprachen 7/18
Produkt oder Konkatenation formaler Sprachen kennen schon Konkatenation von Wörtern Produkt der Sprachen L 1 und L 2 : L 1 L 2 = {w 1 w 2 w 1 L 1 w 2 L 2 } Lemma. Für jede formale Sprache L ist L {ε} = L = {ε} L. Formale Sprachen Produkt formaler Sprachen 8/18
Produkt oder Konkatenation formaler Sprachen kennen schon Konkatenation von Wörtern Produkt der Sprachen L 1 und L 2 : L 1 L 2 = {w 1 w 2 w 1 L 1 w 2 L 2 } Lemma. Für jede formale Sprache L ist L {ε} = L = {ε} L. Formale Sprachen Produkt formaler Sprachen 8/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Neutrales Element des Produkts formaler Sprachen Beweis des Lemmas. Einfaches Nachrechnen: L {ε} = {w 1 w 2 w 1 L w 2 {ε}} = {w 1 w 2 w 1 L w 2 = ε} = {w 1 ε w 1 L} = {w 1 w 1 L} = L Analog zeigt man L = {ε} L. Formale Sprachen Produkt formaler Sprachen 9/18
Potenzen von Sprachen wir wollen Potenzen L k formaler Sprachen definieren Problem : Was soll L 0 sein? Definiere: L 0 = {ε} k N 0 : L k+1 = L L k Einfaches Nachrechnen ergibt z. B.: L 1 = L L 2 = L L L 3 = L L L Genau genommen: L 3 = L (L L), aber: Konkatenation von Sprachen ist eine assoziative Operation. Formale Sprachen Produkt formaler Sprachen 10/18
Potenzen von Sprachen wir wollen Potenzen L k formaler Sprachen definieren Problem : Was soll L 0 sein? Definiere: L 0 = {ε} k N 0 : L k+1 = L L k Einfaches Nachrechnen ergibt z. B.: L 1 = L L 2 = L L L 3 = L L L Genau genommen: L 3 = L (L L), aber: Konkatenation von Sprachen ist eine assoziative Operation. Formale Sprachen Produkt formaler Sprachen 10/18
Potenzen von Sprachen wir wollen Potenzen L k formaler Sprachen definieren Problem : Was soll L 0 sein? Definiere: L 0 = {ε} k N 0 : L k+1 = L L k Einfaches Nachrechnen ergibt z. B.: L 1 = L L 2 = L L L 3 = L L L Genau genommen: L 3 = L (L L), aber: Konkatenation von Sprachen ist eine assoziative Operation. Formale Sprachen Produkt formaler Sprachen 10/18
Potenzen von Sprachen wir wollen Potenzen L k formaler Sprachen definieren Problem : Was soll L 0 sein? Definiere: L 0 = {ε} k N 0 : L k+1 = L L k Einfaches Nachrechnen ergibt z. B.: L 1 = L L 2 = L L L 3 = L L L Genau genommen: L 3 = L (L L), aber: Konkatenation von Sprachen ist eine assoziative Operation. Formale Sprachen Produkt formaler Sprachen 10/18
Beispiele für Produkt von Sprachen (1) L = {aa, b} Dann ist L 0 = {ε} L 1 = {aa, b} L 2 = {aa, b} {aa, b} = {aa aa, aa b, b aa, b b} = {aaaa, aab, baa, bb} L 3 = {aa aa aa, aa aa b, aa b aa, aa b b, b aa aa, b aa b, b b aa, b b b} = {aaaaaa, aaaab, aabaa, aabb, baaaa, baab, bbaa, bbb} Formale Sprachen Produkt formaler Sprachen 11/18
Beispiele für Produkt von Sprachen (2) Sei L = {a n b n n N + }, also sozusagen (immer diese Pünktchen... ) Was ist L 2 = L L? L = {ab, aabb, aaabbb, aaaabbbb,... }. L 2 = {ab ab, ab aabb, ab aaabbb,... } {aabb ab, aabb aabb, aabb aaabbb,... } {aaabbb ab, aaabbb aabb, aaabbb aaabbb,... }. Mit anderen Worten L 2 = {a n1 b n1 a n2 b n2 n 1 N + n 2 N + }. Beachte: die Exponenten n 1 vorne und n2 hinten heißen verschieden. Formale Sprachen Produkt formaler Sprachen 12/18
Beispiele für Produkt von Sprachen (2) Sei L = {a n b n n N + }, also sozusagen (immer diese Pünktchen... ) Was ist L 2 = L L? L = {ab, aabb, aaabbb, aaaabbbb,... }. L 2 = {ab ab, ab aabb, ab aaabbb,... } {aabb ab, aabb aabb, aabb aaabbb,... } {aaabbb ab, aaabbb aabb, aaabbb aaabbb,... }. Mit anderen Worten L 2 = {a n1 b n1 a n2 b n2 n 1 N + n 2 N + }. Beachte: die Exponenten n 1 vorne und n2 hinten heißen verschieden. Formale Sprachen Produkt formaler Sprachen 12/18
Potenzen mehrfach definiert für Alphabet A und für i N 0 hatten wir schon Potenzen A i definiert. Jedes Alphabet A kann man als formale Sprache L A auffassen (enthält alle Wörter der Länge 1) Man mache sich klar: A i ist ( im Wesentlichen ) das Gleiche wie L i A. Formale Sprachen Produkt formaler Sprachen 13/18
Überblick Formale Sprachen Formale Sprachen Produkt formaler Sprachen Konkatenationsabschluss formaler Sprachen Formale Sprachen Konkatenationsabschluss formaler Sprachen 14/18
Konkatenationsabschluss von L bei Alphabeten schon gesehen: A = i=0 Ai. der Konkatenationsabschluss L von L ist L = i=0 der ε-freie Konkatenationsabschluss L + von L ist L + = i=1 L i L i Man sieht: L = L 0 L +. Formale Sprachen Konkatenationsabschluss formaler Sprachen 15/18
Beispiele für Konkatenationsabschluss Es sei wieder L = {a n b n n N + }. haben schon gesehen: analog L 2 = {a n 1 b n 1 a n 2 b n 2 n 1 N + n 2 N + }. L 3 = {a n 1 b n 1 a n 2 b n 2 a n 3 b n 3 n 1 N + n 2 N + n 3 N + }. wir erlauben uns Pünktchen... : L i = {a n 1 b n1 a n i b n i n 1,..., n i N + }. Dann kann man für L + notieren: L + = {a n 1 b n1 a n i b n i i N + n 1,..., n i N + }. Sie merken (hoffentlich): L + und L sind präziser und kürzer hinzuschreiben als viele Pünktchen. Formale Sprachen Konkatenationsabschluss formaler Sprachen 16/18
Zwei Warnungen Die Bezeichnung ε-freier Konkatenationsabschluss für L + ist irreführend. Wie steht es um das leere Wort bei L + und L? Klar ist: ε L 0 L Aber: L = L 1 L +, wenn also ε L, dann auch ε L +. Beachte {} = {ε} Formale Sprachen Konkatenationsabschluss formaler Sprachen 17/18
Zwei Warnungen Die Bezeichnung ε-freier Konkatenationsabschluss für L + ist irreführend. Wie steht es um das leere Wort bei L + und L? Klar ist: ε L 0 L Aber: L = L 1 L +, wenn also ε L, dann auch ε L +. Beachte {} = {ε} Formale Sprachen Konkatenationsabschluss formaler Sprachen 17/18
Was ist wichtig Das sollten Sie mitnehmen: was formale Sprachen sind, wie ihr Produkt definiert ist und wie Konkatenationsabschluss und ε-freier Konkatenationsabschluss definiert sind. Das sollten Sie üben: Erkennen von Strukturen der Form L, L +, L 1 L 2 Lesen von Ausdrücken der Form (L + 1 L 2) usw. Rechnen mit formalen Sprachen Formale Sprachen Konkatenationsabschluss formaler Sprachen 18/18