EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK Prof. Dr. Klaus Ambos-Spies Sommersemester 2011 1. ALPHABETE, WÖRTER, SPRACHEN Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 1 / 25 Vorbemerkung: Daten, Wörter, Zahlen Im Rahmen der Vorlesung: DATEN = WÖRTER Und damit: (ENTSCHEIDUNGS)PROBLEME = ˆ WORTMENGEN = SPRACHEN und FUNKTIONALE (BERECHNUNGS)PROBLEME = ˆ WORTFUNKTIONEN Mit Wörtern lassen sich beliebige Daten kodieren (vgl. z.B. Zahldarstellungen). Umgekehrt lassen sich - z.B. durch geeignetes Durchnummerieren - Wörter mit (natürlichen) Zahlen identifizieren. Wir können daher Wörter auch durch Zahlen ersetzen und erhalten: DATEN = ˆ WÖRTER = ˆ ZAHLEN Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 2 / 25 Alphabete, Wörter, Sprachen Im Folgenden gehen wir auf Alphabete, Wörter und Sprachen näher ein und führen einige grundlegende Begriffe und Notationen ein. ALPHABET = eine endliche, geordnete Menge von Buchstaben (Symbolen) WORT (STRING) = eine endliche Folge von Buchstaben (über festem Alphabet) SPRACHE Theoretische Informatik (SoSe 2011) = eine beliebige Menge von Wörtern (über festem Alphabet) 1. Alphabete, Wörter, Sprachen 3 / 25 Alphabete Ein Alphabet (Σ, <) besteht aus: I I einer endlichen, nichtleeren Menge Σ einer totalen (= linearen) Ordnung < auf Σ Die Elemente von Σ heißen die Buchstaben (Symbole) des Alphabets. Wir listen Alphabete geordnet auf: Schreiben wir Σ = {a0 , . . . , an }, so gilt a0 < a1 < · · · < an . Ein Alphabet mit n Buchstaben heißt n-äres Alphabet und wird mit Σn bezeichnet. Insbesondere: I I Σ1 = {1}(= {0} = {|}) unäres Alphabet Σ2 = {0, 1} binäres Alphabet Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 4 / 25 Wörter Ein Wort über dem Alphabet (Σ, <) ist eine endliche (geordnete) Folge von Buchstaben aus Σ. Das leere Wort (d.h. die leere Folge) wird mit λ bezeichnet. Nichtleere Wörter w geben wir durch Auflisten der Buchstaben in der Reihenfolge ihrer Vorkommen an: w = w(0) . . . w(n − 1) wobei w(i) der (i + 1)te Buchstabe in w ist. Die Länge |w| eines Wortes w ist die Anzahl der Vorkommen von Buchstaben in w: |λ| = 0 und |w(0) . . . w(n − 1)| = n Daneben betrachten wir die Funktionen #a (w) = Anzahl der Vorkommen des Buchstaben a im Wort w Offensichtlich gilt: |w| = ∑a∈Σ #a (w) Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 5 / 25 Wörter (2) Σ∗ Menge aller Wörter über Σ Σ+ Menge aller nichtleeren Wörter über Σ Σn Menge der Wörter der Länge n über Σ Σ≤n Menge der Wörter der Länge ≤ n über Σ usw. Es gilt: |Σnk | = k n I |Σn | = 1 I |Σn | = 2 Insbesondere: 1 und |Σ<n 1 |=n n 2n und |Σ<n 2 | = 2 −1 BEISPIELE: Σ51 = {00000}, Σ0k = {λ}, Σ22 = {00, 01, 10, 11}. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 6 / 25 Wörter als Baum-Knoten Wörter über dem k-ären Alphabet kann man als Knoten im (unendlichen) vollständigen k -ären Baum auffassen. Die Wörter der Länge n entsprechen dabei den Knoten der Tiefe n. (Entsprechend kann man auch Σ≤n k mit dem vollständigen k -ären Baum der Tiefe n identifizieren.) In den folgenden Abbildungen haben wir (für den Fall k = 2 bzw. k = 1) die Knoten, die das Wort 010 bzw 000 repräsentieren, hervorgehoben: h h 0 1 0 h h h 0 0 0 1 1 h h h h h 0 0 1 0 1 0 1 0 1 •h h h •h h h h h h 0 h Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 7 / 25 Verkettung von Wörtern Die grundlegende Operation auf Wörtern ist die Verkettung (Konkatenation) ◦ von Wörtern: v = v (0) . . . v (m) & w = w(0) . . . w(n) ⇒ v ◦ w = v (0) . . . v (m)w(0) . . . w(n) w ◦λ = λ◦w = w SCHREIBWEISE: Statt v ◦ w schreiben wir meist einfach vw. BEMERKUNG: Die Verkettung ist assoziativ (aber nicht kommutativ). Das leere Wort ist neutrales Element bzgl. der Verkettung. (D.h. (Σ∗ , ◦) ist Halbgruppe mit 1.) BEISPIELE: I I (ab ◦ bca) ◦ c = abbca ◦ c = abbcac = ab ◦ bcac = ab ◦ (bca ◦ c) a ◦ b = ab 6= ba = b ◦ a Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 8 / 25 Verkettung von Wörtern (2) Mit Hilfe der Verkettung definieren wir: Gilt w = xyz so sind I I I x, y, z Teilwörter (Infixe) von w x ein Anfangsstück (Präfix) von w (x v w) Gilt yz 6= λ so ist x ein echtes Anfangsstück von w (x < w). z ein Endstück (Suffix) von w. SCHREIBWEISE: w n = w(0) . . . w(n − 1) ist das Anfangsstück von w der Länge n. Die n-fache Iteration w n eines Wortes w ergibt sich durch Verketten von n Kopien von w. Induktiv: w 0 = λ und w n+1 = w n w. BEISPIELE: abb v abb und abb 2 = ab < abb (abb)3 = abbabbabb (cc)0 (ab)2 c 3 (bb)3 9 = ababcccbbbbbb 9 = ababcccbb Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 9 / 25 Homomorphismen Eine mit der Konkatenation verträgliche Abbildung nennt man Homomorphismus. Formal: Ein Homomorphismus h ist eine Abbildung h : Σ∗ → T ∗ , für die gilt: h(λ) = λ und ∀x, y ∈ Σ∗ [h(x ◦ y ) = h(x) ◦ h(y)] BEMERKUNG: Jeder Homomorphismus h ist bereits durch sein Verhalten auf den Buchstaben (d.h. Wörtern der Länge 1) bestimmt: Jede Abbildung h : Σ → T ∗ lässt sich in eindeutiger Weise zu einem Homomorphismus fortsetzen. (Übung!) BEISPIEL: Für den von h(a) = 11, h(b) = λ, h(c) = 0 induzierten Homomorphismus h : Σ∗3 → Σ∗2 gilt z.B.: h(bacbba) = h(b)h(a)h(c)h(b)h(b)h(a) = λ ◦ 11 ◦ 0 ◦ λ ◦ λ ◦ 11 = 11011 Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 10 / 25 Homomorphismen (2): Binärkodierung Ein Beispiel für einen Homomorphismus ist die Binärkodierung: Den von bink : Σk → Σ∗2 mit bink (ai ) = 0i 1k−i (Σk = {a0 , ..., ak −1 }, k ≥ 3) induzierten Homomorphismus bink : Σ∗k → Σ∗2 bezeichnet man als Binärkodierung. NB: |bink (w)| = k|w| und bink injektiv. Man beachte, dass jeder Homomorphismus berechenbar ist. Die (partielle) Umkehrabbildung von bink ist offensichtlich auch berechenbar aber kein Homomorphismus (und auch nicht zu einem Homomorphismus fortsetzbar; Warum?). Im Gegensatz zu bink gibt es keinen injektiven Homomorphismus h : Σ∗k → Σ∗1 für k ≥ 2. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 11 / 25 Ordnungen auf Wörtern (1): Lexikographische Ordnung Die Wörter über einem Alphabet Σ lassen sich mit Hilfe der Ordnung < des Alphabets lexikographisch ordnen: v <lex w ⇔ v < w oder ∃ x ∈ Σ∗ ∃ a, b ∈ Σ (a < b & xa v v & xb v w). BEISPIELE (Σ = Σ3 ): λ <lex a, abb <lex abba, aaaa <lex b, bcaac <lex bcaba Fasst man die Wörter über Σk als Knoten des unendlichen vollständigen k -ären Baumes auf, so erhält man die gemäß <lex geordneten Wörter, wenn man den Baum in Preorder durchläuft. Die lexikographische Ordnung hat den Nachteil, dass Wörter unendlich viele Vorgänger haben können. Z.B. gilt für k = 2: λ <lex 0 <lex 00 <lex 000 <lex 0000 <lex · · · <lex 1 Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 12 / 25 Ordnungen auf Wörtern (2): Längen-lexikographische Ordnung Man betrachtet daher in der Regel die längen-lexikographische Ordnung < auf Σ∗ , bei denen die Wörter zunächst nach ihrer Länge (Hauptordnungskriterium) und dann Wörter gleicher Länge lexikographisch (Nebenordnungskriterium) geordnet werden: v < w ⇔ |v | < |w| oder [|v | = |w| und v <lex w] Diese Ordnung entspricht dem Breitendurchlauf durch den Baum Σ∗ . BEISPIELE (Σ = Σ3 ): I I cb < a3 (da |cb| < |aaa|) ac < ba (da |ac| = |ba| und ac <lex ba) Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 13 / 25 Mehr zur längen-lexikographischen Ordnung Beim unären Alphabet Σ1 = {1} stimmt < mit <lex überein: 10 (= λ) < 11 (= 1) < 12 (= 11) < 13 < 14 < . . . Für das binäre Alphabet Σ2 = {0, 1} gilt λ < 0 < 1 < 00 < 01 < 10 < 11 < 000 < 001 < . . . (N, <) ist (effektiv) isomorph zu (Σ∗ , <), d.h. es gibt eine (berechenbare) Bijektion f : N → Σ∗ , die ordnungserhaltend ist, d.h. m < n ⇔ f (m) < f (n) erfüllt (m, n ∈ N = {0, 1, 2, 3, . . . }). Die Wörter in Σ∗ lassen sich also bzgl. ≤ durchnummerieren. (Σ,<) wn := das (n + 1)-te Wort in Σ∗ bzgl. < (Σ2 ,<) SCHREIBWEISE: wn := wn Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 14 / 25 Wörter vs. Zahlen Manchmal identifizieren wir das Binärwort wn mit der Zahl n, d.h. fassen wn als Darstellung von n auf. wn stimmt nicht mit der üblichen Binärzahldarstellung Bin(n) überein (da bei dieser führende Nullen keinen Einfluss auf den Zahlwert haben; s. Übungen). Da sich die (natürlichen) Zahlen und die Wörter über einem gegebenem Alphabet effektiv bijektiv ineinander überführen lassen, können wir die Berechenbarkeitstheorie wahlweise auf Wörtern (→ Turingmaschinen) oder Zahlen (→ Registermaschinen, rekursive Funktionen) entwickeln. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 15 / 25 Sprachen Eine Sprache L über dem Alphabet Σ ist eine Menge von Wörtern über Σ, d.h. eine Teilmenge von Σ∗ . Die Menge aller Sprachen über Σ ist also gerade die Potenzmenge von Σ∗ : P (Σ∗ ) = {L : L ⊆ Σ∗ } Eine Menge von Sprachen (über festem Alphabet Σ) bezeichnen wir als Klasse . BEZEICHNUNGEN: • • • • a, b, c, . . . : Buchstaben . . . , u, v , w, x, y , z: Wörter A, B, C, . . . , Z : Sprachen A, B, C, . . . , Z: Klassen Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 16 / 25 Mengenoperationen auf Sprachen Da Sprachen Mengen sind, können wir die üblichen mengentheoretischen Operationen verwenden (L, L1 , L2 ⊆ Σ∗ ): L1 ∪ L2 = {x ∈ Σ∗ : x ∈ L1 oder x ∈ L2 } (Vereinigung) L1 ∩ L2 = {x ∈ Σ∗ : x ∈ L1 & x ∈ L2 } (Durchschnitt) L1 \ L2 = {x ∈ Σ∗ : x ∈ L1 & x 6∈ L2 } ((Mengen-)Differenz) L = {x ∈ Σ∗ : x 6∈ L} (= Σ∗ \ L) (Komplement) L1 4L2 = (L1 \ L2 ) ∪ (L2 \ L1 ) (Symmetrische Differenz) Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 17 / 25 Wortoperationen auf Sprachen Die auf den Wörtern definierten Operationen der Verkettung und Iteration induzieren entsprechende Sprachoperationen: L1 L2 = {xy : x ∈ L1 & y ∈ L2 } Verkettung von L1 und L2 Ln = {x1 . . . xn : xi ∈ L} (L0 = {λ}, L1 = L, L2 = LL, . . . ) n-te Potenz von L L∗ = {x1 . . . xn : n ≥ 0 & xi ∈ L} = Iteration von L S L+ = {x1 . . . xn : n ≥ 1 & xi ∈ L} = S n n≥0 L n n≥1 L Hierbei schreiben wir aL statt {a}L. BEISPIELE. 1. {00}∗ 1{1}∗ = {00}∗ {1}+ = {02m 1n : m ≥ 0 & n ≥ 1}. 2. λ ∈ L∗ für alle Sprachen L. Z.B. 0/ ∗ = {λ}. 3. λ ∈ L+ ⇔ λ ∈ L. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 18 / 25 Mächtigkeit von Sprachen und Klassen In der Mengenlehre unterscheidet man die Kardinalität (Mächtigkeit, Größe) unendlicher Mengen. Insbesondere unterscheidet man zwischen abzählbaren und überabzählbaren Mengen, indem man den Größenbegriff endlicher Mengen verallgemeinert. Die Kardinalität von Mengen vergleicht man durch |M1 | ≤ |M2 | ⇔ ∃ f : M1 → M2 injektiv M1 und M2 sind gleichmächtig (|M1 | = |M2 |), falls |M1 | ≤ |M2 | und |M2 | ≤ |M1 | gilt. M ist abzählbar unendlich, falls |M| = |N|. M ist (höchstens) abzählbar, wenn |M| ≤ |N|, d.h. wenn M endlich oder abzählbar unendlich ist. Ist M nicht abzählbar, so nennt man M überabzählbar. In diesem Fall gilt |N| < |M|. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 19 / 25 Mächtigkeit von Sprachen und Klassen (2) SATZ. Für jedes Alphabet Σ gilt: (a) Jede Sprache L über Σ ist abzählbar. (b) Die Menge aller Sprachen über Σ ist nicht abzählbar. Es gibt also mehr Sprachen als Wörter! BEWEIS. (a) Wie schon gezeigt, ist Σ∗ abzählbar unendlich. Weiter ist jede Teilmenge einer abzählbaren Menge wiederum abzählbar. (b) Der Beweis benutzt das bekannte Cantor-Diagonalargument (mit dessen Hilfe man auch zeigt, dass es überabzählbar viele reelle Zahlen gibt): Widerspruchsannahme: hLn : n ≥ 0i sei eine Liste aller Sprachen über Σ. Die Sprache L über Σ mit wnΣ ∈ L :⇔ wnΣ 6∈ Ln kommt in dieser Liste nicht vor. Widerspruch! Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 20 / 25 Darstellung von Sprachen Unter einer Darstellung einer Sprache L verstehen wir eine endliche Beschreibung der Sprache. Eine einheitliche Methode zur Darstellung von Sprachen bezeichnen wir als Darstellungsweise. Formaler kann man die Darstellungen bzgl. einer festen Darstellungsweise als Wörter über einem geeigneten Alphabet auffassen. Da es mehr Sprachen als Wörter gibt, gibt es also für jede Darstellungsweise Sprachen, die nicht darstellbar sind! Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 21 / 25 Darstellung (un)endlicher Sprachen Endliche Sprachen lassen sich durch eine vollständige Auflistung der Elemente darstellen: L1 = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}. Diese Darstellung ist i.a. jedoch sehr länglich und unübersichtlich. Eine Darstellung der Sprache durch Angabe einer charakteristischen Eigenschaft der Elemente wird daher meist vorgezogen: L1 = {x ∈ N : x ≤ 24 & x gerade} Dieses Vorgehen ermöglich auch die Beschreibung unendlicher Sprachen: L01 = {x ∈ N : x gerade} (= {0, 2, 4, . . . }) Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 22 / 25 Explizite vs. implizite Darstellungen Beschreibt man eine Sprache durch Auflisten der Elemente oder Angabe einer charakteristischen Eigenschaft derselben, so sprechen wir von einer expliziten Darstellung. Alternativ können Sprachen implizit durch eine induktive (rekursive) Charakterisierung dargestellt werden. BEISPIEL (s. Übungen): I I Explizit: L2 = {w ∈ Σ∗2 : #0 (w) = #1 (w)}. Implizit: L2 ist die kleinste Sprache L ⊆ Σ∗ mit folgenden 3 Eigenschaften: • λ∈L • Gehört w zu L, so auch 0w1 und 1w0 • Gehören v und w zu L, so auch vw Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 23 / 25 Informatische Sprachdarstellungen In der Vorlesung werden wir informatische Sprachdarstellungen betrachten: BERECHENBARKEITSTHEORIE: In der Berechenbarkeitstheorie betrachten wir algorithmische Darstellungen von Sprachen, d.h. geben Algorithmen an, die die Sprachen eindeutig festlegen. Dabei unterscheiden wir: I ENTSCHEIDUNGSVERFAHREN: Der Algorithmus stellt bei Eingabe eines Wortes fest, ob dieses zur Sprache gehört. I AUFZÄHLUNGSVERFAHREN: Der Algorithmus gibt alle Elemente der Sprache (und nur diese) sukzessive aus. (Ist die Sprache unendlich, so läuft das Verfahren unendlich lang; die Beschreibung des Verfahrens ist jedoch endlich!) FORMALE SPRACHEN: I Hier werden wir Sprachen mit Hilfe (generativer = erzeugender) GRAMMATIKEN beschreiben. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 24 / 25 Mehrdimensionale Sprachen und Wortfunktionen Sprachen beschreiben eindimensionale Entscheidungsprobleme. Zur Beschreibung mehrdimensionaler Probleme oder funktionaler Probleme (Berechnungs-, Such-, bzw. Optimierungsprobleme) verwenden wir mehrdimensionale Sprachen bzw. Wortfunktionen: MEHRDIMENSIONALE SPRACHEN: • L ⊆ Σ∗1 × · · · × Σ∗n (inhomogen) • L ⊆ Σ∗ × · · · × Σ∗ (homogen) (1-DIM.) WORTFUNKTIONEN: • f : Σ∗1 → Σ∗2 MEHRDIMENSIONALE WORTFUNKTIONEN: • f : Σ∗1 × · · · × Σ∗n → T ∗ ∗ stellen wir durch m mehrdim. Wortfunktionen f : Σ∗ × · · · × Σ∗ → T ∗ dar. Funktionen vom Typ f : Σ∗1 × · · · × Σ∗n → T1∗ × · · · × Tm n i 1 i Wie bei Sprachen können wir bei Wortfunktionen zwischen inhomogenen (s.o.) und homogenen (alle Alphabete gleich) Funktionen unterscheiden. Im folgenden betrachten wir häufig nur den 1-dimensionalen Fall und lassen die Verallgemeinerung zum mehrdimensionalen Fall als Übung. Theoretische Informatik (SoSe 2011) 1. Alphabete, Wörter, Sprachen 25 / 25