EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK Prof. Dr. Klaus Ambos-Spies Sommersemester 2016 1. ALPHABETE, WÖRTER, SPRACHEN Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 1 / 26 Vorbemerkung: Daten, Wörter, Zahlen (1) Daten sind endliche Darstellungen mathematischer Objekte. Im Rahmen der Vorlesung: DATEN = WÖRTER Und damit: (ENTSCHEIDUNGS)PROBLEME = ˆ WORTMENGEN = SPRACHEN und FUNKTIONALE (BERECHNUNGS)PROBLEME = ˆ WORTFUNKTIONEN Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 2 / 26 Vorbemerkung: Daten, Wörter, Zahlen (2) 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 Natürliche Zahlen: N = {0, 1, 2, . . . } Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 3 / 26 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 2016) = eine beliebige Menge von Wörtern (über festem Alphabet) 1. Alphabete, Wörter, Sprachen 4 / 26 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 = {0}(= {1}, = {|}) unäres Alphabet Σ2 = {0, 1} binäres Alphabet Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 5 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 6 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 7 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 8 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 9 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 10 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 11 / 26 Homomorphismen (2): Binärkodierung Beispiele für Homomorphismen sind Block-Codes - insbesondere 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 2016) 1. Alphabete, Wörter, Sprachen 12 / 26 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 = {a, b, c}): λ <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 Präorder (Tiefendurchlauf) durchläuft. Die lexikographische Ordnung hat den Nachteil, dass Wörter unendlich viele Vorgänger haben können. Z.B. gilt für das binäre Alphabet Σ2 : λ <lex 0 <lex 00 <lex 000 <lex 0000 <lex · · · <lex 1 Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 13 / 26 Ordnungen auf Wörtern (2): Längen-lexikographische Ordnung Man betrachtet daher in der Regel die längen-lexikographische Ordnung < auf Σ∗ , bei der 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 2016) 1. Alphabete, Wörter, Sprachen 14 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 15 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 16 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 17 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 18 / 26 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 auch 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 2016) 1. Alphabete, Wörter, Sprachen 19 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 20 / 26 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, gibt es eine Bijektion f : N → Σ∗ , weshalb |N| = |Σ∗ |. Die Menge Σ∗ aller Wörter über Σ ist daher 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 2016) 1. Alphabete, Wörter, Sprachen 21 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 22 / 26 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öglicht auch die Beschreibung unendlicher Sprachen: L01 = {x ∈ N : x gerade} (= {0, 2, 4, . . . }) Theoretische Informatik (SoSe 2016) 1. Alphabete, Wörter, Sprachen 23 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 24 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 25 / 26 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 2016) 1. Alphabete, Wörter, Sprachen 26 / 26