Theoretische Informatik A, SS06 Prof. Dr. Wolfram Conen [email protected] Raum: P -1.08 Version 0.7, 28. März 2006 c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen „Meine Gedankenwelt, d.h. die Gesamtheit S aller Dinge, welche Gegenstand meines Denkens sein können, ist unendlich“ (Richard Dedekind in Was sind und was sollen die Zahlen?, 1888, Vieweg) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 2 Inhalte • Mengen und das Unendliche • Sprachen, Grammatiken und Automaten: Von regulären Sprachen über XML zu Turing • Die Komplexität von Problemen: P, NP, Approximation • Algorithmische Komplexität und Zufall c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 3 Literatur... • Oliver Deiser: Einführung in die Mengenlehre, Springer 2002 (demnächst in neuer Auflage – tut auch Not, denn es haben sich einige Tipp-Fehler in die 1. Auflage eingeschlichen – aber ein schönes Buch!) • Martin Davis: Engines of Logic, Norton, 2000 bzw. 2001 (Taschenbuch) – ein schönes, kluges Buch für einen Überblick zur Geschichte und zu den frühen, aber zentralen Resultaten der (theoretischen) Informatik. Das deutsche Buch, das wir zu formalen Sprachen, Grammatiken und Automaten verwenden werden ist: • Hedtstück, Einführung in die theoretische Informatik, Oldenbourg, 2004 (2. Auflage) Wir werden das ergänzen mit Material aus Sipser, Introduction to the Theory of Computation, PWS, 2005, 2. Aufl. – (der Klassiker) und eventuell Hromkovic, Algorithmische Konzepte der Informatik, Teubner, 2001. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 4 Unterlagen... Für Skriptversionen, Übungsblätter, aktuelle Nachrichten usw. schauen Sie bitte unter http://www.informatik.fh-gelsenkirchen.de/conen/index.htm c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 5 Mengen und das Unendliche Was ist Mengenlehre? „Die Mengenlehre ist die Untersuchung von Ordnung und Größe in der Mathematik.“ (Oliver Deiser in Einführung in die Mengenlehre, 2002, Springer) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 6 Mengen und das Unendliche Fragen zur Mengenlehre • • • • Was ist eine Menge, was ist ein Element? Wie definiert man Mengen? Wie mißt man die Größe einer Menge? Wie vergleicht man Mengen? Was kann man mit der Mengenlehre tun? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 7 Mengen und das Unendliche Historischer Überblick Die Mengenlehre wurde im letzten Viertel des 19. Jahrhunderts von G EORG C AN TOR entwickelt - zunächst galt das (nicht unproblematische) „naive Kompressionsprinzip“: „Zu jeder Eigenschaft existiert die Menge aller Objekte, auf die diese Eigenschaft zutrifft“ E RNESTO Z ERMELO und andere (u.a. auch J OHN VON N EUMANN !) haben die Mengenlehre axiomatisch präzisiert und formalisiert. Die axiomatische Mengenlehre kann alle Objekte der Mathematik zur Verfügung stellen, z.B. Zahlen aller Art, Funktionen, geometrische Gebilde etc. - d.h. es existieren auf dem Mengenbegriff basierende Definitionen dieser Begriffe, die alle erwünschten und in der Mathematik benötigten Eigenschaften der Objekte bereitstellt. Die Mengenlehre eignet sich damit als Grundlagendisziplin für die Mathematik selbst (und auch die Informatik)! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 8 Mengen und das Unendliche Bedeutung der Mengenlehre Deiser schreibt: „Heute ist die Mengenlehre nicht nur Rahmen für die Mathematik, sondern selbst eine schillernde mathematische Theorie. Sie fasziniert ... durch die stille Schönheit ihrer ersten Konzepte und durch deren erstaunliche und anscheinend noch bei weitem nicht ausgelotete Reichweite und Tragfähigkeit.“ c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 9 Mengen und das Unendliche Menge und Element Im weiteren schreiben wir für „a ist Element von X “ a ∈ X . C ANTOR 1895 im Original: „Unter einer Menge verstehen wir jede Zusammenfassung M von bestimmten wohlunterschiedenen Objekten m unserer Anschauung oder unseres Denkens (welche die Elemente von M genannt werden) zu einem Ganzen.“ „Zwei Mengen sind genau dann gleich, wenn sie dieselben Elemente haben“ (Extensionalitätsprinzip) Den Begriff Menge hat übrigens B ERNARD B OLZANO eingeführt. Neben Menge wurden auch Mannigfaltigkeit, Gesamtheit, Inbegriff, Varietät, und Klasse verwendet (die Liste ist sicher nicht komplett). Heute gilt Menge als ein nicht weiter definierter Grundbegriff - irgendwo muss man anfangen! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 10 Mengen und das Unendliche Mengen sind Ideen . . . Nochmals C ANTOR: „Unter einer ... Menge verstehe ich nämlich allgemein jedes Viele, welches sich als Eines denken läßt, d.h. jeden Inbegriff bestimmter Elemente, welcher durch ein Gesetz zu einem Ganzen verbunden werden kann, und ich glaube hiermit etwas zu definieren, was verwandt ist dem Platonischen ... iδα.“ Mengen existieren als Ideen unabhängig von uns! (Und dies gilt allgemein für die Objekte der Mathematik) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 11 Mengen und das Unendliche Zahlen Wir setzen: • • • • N = „die Menge der natürlichen Zahlen“ Z = „die Menge der ganzen Zahlen“ Q = „die Menge der rationalen Zahlen“ R = „die Menge der reellen Zahlen“ c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 12 Mengen und das Unendliche Natürliche und ganze Zahlen • Die natürlichen Zahlen, N, enthalten die 0 als Element. • Natürliche Zahlen schreiben wir in Dezimalschreibweise: 0,1,2,3,. . . ,10,11,. . . .1 • Eine ganze Zahl schreiben wir in der Form +n oder −n, wobei n eine natürliche Zahl ist. Also +0,-0,+1,-1,+2,-2 . . . . Es gilt +0 = −0. • Jede nichtleere Menge von natürlichen Zahlen hat ein kleinstes Element. Ist A eine nichtleere Menge von natürlichen Zahlen, so sei min(A) = „das (eindeutig bestimmte) kleinste Element von A (Minimum von A)“ Beispiel: min({7, 9, 15, 4, 6}) = 4. 1 Regelmäßig finden sie auch Autoren, die N mit {1, 2, 3, . . . } gleichsetzen und bei Hinzunahme der 0 dann N 0 schreiben. Das wollen wir nicht tun, denn 0 ist ja keine un-natürliche Zahl, sondern eine ganz „normale“ natürliche Zahl, die in N gehört. Es kann Sinn machen, für {1, 2, 3, . . . } N+ zu verwenden. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 13 Mengen und das Unendliche Rationale Zahlen Schreibweisen: • Bruch: +n/m bzw. −n/m, mit n, m ∈ N, m 6= 0 • Endlicher Dezimalbruch: ±n, a1 . . . ak • Periodisch endender, unendlicher Dezimalbruch: ±n, b1 . . . bma1 . . . ak a1 . . . ak . . . (wobei n, m, k ∈ N und 0 ≤ ai, bj < 10 für alle 1 ≤ i ≤ k bzw. 1 ≤ j ≤ m gilt.) Beispiele: −17/8 = −2, 125, 1/7 = 0, 142857142857142857 . . . , 1/700 = 0, 00142857142857142857 . . . , 1/3 = 0, 333 . . . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 14 Mengen und das Unendliche Reelle Zahlen • Dezimalbruch: ±n, a1a2a3 . . . , n ∈ N, 0 ≤ ai < 10 für alle i ≥ 1. • Sei x eine reelle Zahl. Ist eine Dezimaldarstellung von x in der Form ±n, a1 . . . ak 000 . . . , so sagen wir, dass diese Dezimaldarstellung von x trivial endet. • Jede reelle, von 0 verschiedene Zahl x hat eine eindeutige nicht trivial endende Dezimaldarstellung! Es gilt beispielsweise: 1,000 1,1245000. . . -1,01000 = = = 0,999. . . 1,1244999. . . -1,009999. . . Diese nicht-triviale Dezimaldarstellung nennen wir die kanonische (unendliche) Dezimaldarstellung von x. Beachte: 0,000. . . ist die kanonische, unendliche Dezimaldarstellung der 0. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 15 Mengen und das Unendliche Mathematische Objekte Wir setzten im Weiteren N, Q, Z, R, die üblichen Rechenoperationen und die natürlichen Ordnungsbeziehungen < und ≤ als gegeben voraus. Die mathematischen Grundobjekte (Urelemente) sind die natürlichen, ganzen, rationalen und reellen Zahlen. Jede Menge ist ein mathematisches Objekt. Beachten Sie: Ist b eine Menge und a ∈ b, so ist a ein Grundobjekt oder eine Menge. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 16 Mengen und das Unendliche Einige Konvention • Wir identifizieren n ∈ N mit +n ∈ Z • +n bzw. −n ∈ Z mit +n/1 bzw. −n/1 ∈ Q • ±n, a1 . . . ak ∈ Q mit ±n, a1 . . . ak 000 · · · ∈ R, d.h., jede natürliche Zahl ist eine ganze Zahl, jede ganze Zahl eine rationale Zahl und jede rationale Zahl eine reelle Zahl. • Der Betrag |x| einer reellen Zahl x ist definiert durch ( |x| = x, falls x ≥ 0, −x, sonst. Später führen wir die Mächtigkeit einer Menge M ein, diese wird mit |M | bezeichnet, der Bezug wird Verwechselungen verhindern. • Sind x1, . . . , xn reelle Zahlen, so bezeichnet min(x1, . . . , xn) die Kleinste und max(x1, . . . , xn) die Größte der Zahlen x1, . . . , xn. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 17 Mengen und das Unendliche Einfache Mengenbildungen • a ∈ b: „a ist Element von b“, „a Element b“, „a in b“ • a∈ 6 b (oder auch non(a ∈ b)): „a ist nicht Element von b“ Definition 1. [Direkte Angabe der Elemente, Einermengen, Paarmengen] Seien n ∈ N, n ≥ 1 und a1, . . . , an Objekte. Wir setzen: {a1, . . . , an} = „die Menge, die genau a1, . . . , an als Elemente enthält“. Speziell heißen für Objekte a, b die Menge {a} die Einermenge von a und {a, b} die (ungeordnete) Paarmenge von a, b. Es gilt also für alle x x ∈ {a1, . . . , an} gdw. x = ai für ein i ∈ N mit 1 ≤ i ≤ n. Hier steht gdw. für genau dann, wenn bzw. dann und nur dann, wenn. Beachte: Für die Bildung von Paarmengen ist a 6= b nicht vorausgesetzt! Nach dem Extensionalitätsprinzip gilt: {a} = {a, a} = {a, a, . . . , a} c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 18 Mengen und das Unendliche {a, b} = {b, a} {a, b} = {a} gdw. a = b Definition 2. [Leere Menge] Wir setzen: ∅ = „die Menge, die keine Elemente enthält“. ∅ heißt die leere Menge oder die Nullmenge. Sie wird auch mit {} bezeichnet. Merke: Die leere Menge kann Element einer anderen Menge sein! M = {∅} = {{}} hat ein Element (die leere Menge). M = {∅, {∅}} hat zwei (verschiedene!) Elemente. Jetzt können wir Mengen durch Aufzählung definieren (in dem wir ihre Extension, also ihre Elemente, angeben). „Einfacher“ ist es häufig, Mengen über eine Eigenschaft, die ihren Elementen gemeinsam ist, zu definieren. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 19 Mengen und das Unendliche Mengenbildung über Eigenschaften Definition 3. Sei E(x) eine Eigenschaft. Wir setzen: {x|E(x)} = „die Menge aller Objekte x, auf die E(x) zutrifft“. Wir sagen auch: {x|E(x)} ist die „Menge aller x mit E(x)“. Es gilt z.B. z ∈ {x|E(x)} gdw. E(z) (die Eigenschaft also für z gilt). Eine genaue Definition von Eigenschaften ist hier (noch) nicht nötig. Intuitiv ist eine Eigenschaft E eine mathematische Aussage über mathematische Objekte. Es gilt für jedes Objekt z und jede Eigenschaft E entweder E(z) oder non(E(z)) (d.h., z hat die Eigenschaft E oder es hat die Eigenschaft E nicht). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 20 Mengen und das Unendliche Auswahl von Elementen Man bezieht sich häufig auf eine bereits definierte Menge und wählt Elemente daraus aus, z.B. U = {x ∈ N|x ist ungerade} (alle ungeraden natürlichen Zahlen). Definition 4. [Aussonderung] Sei M eine Menge und E(x) eine Eigenschaft. Wir setzen: {x ∈ M |E(x)} = {x|x ∈ M und E(x)} Definition 5. [Parameter einer Eigenschaft] Sei E eine Eigenschaft. Die Parameter von E sind die in E vorkommenden mathematischen Objekte. In M = {x|x < 11 und x ∈ N} sind 11 und N die Parameter (und x eine Variable). Jede „aufgezählte“ Menge der Form {a1, . . . , an} können wir auch über eine Eigenschaft definieren („intensional“): {a1, . . . , an} = {x|x = a1 oder . . . oder x = an} (hier sind a1, . . . , an dann die Parameter). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 21 Mengen und das Unendliche Das naive Komprehensionsprinzip (Komprehension: lat. Zusammenfassung) Naives Komprehensionsprinzip für Eigenschaften: Ist E eine Eigenschaft über mathematische Objekte, so existiert die Menge {x|E(x)} aller Objekte x, für die E(x) erfüllt ist. Dieses Prinzip führt zu Problemen! Warum? Erinnern Sie sich an den ersten Übungszettel! Wir kommen darauf zurück. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 22 Mengen und das Unendliche Teilmengen Definition 6. [Teilmenge und Obermenge] Seien a und b Mengen. 1. a ist Teilmenge von b, in Zeichen a ⊆ b, falls für alle x ∈ a gilt x ∈ b. 2. a ist echte Teilmenge von b, in Zeichen a ⊂ b, falls a ⊆ b und a 6= b. 3. Ist a ⊆ b, so heißt b Obermenge von a, in Zeichen b ⊇ a. 4. Ist a ⊂ b, so heißt b echte Obermenge von a, in Zeichen b ⊃ a. Wenn Sie nach einer Definition für = suchen, dann erinnern Sie sich an das Extensionalitätsprinzip: zwei Mengen sind genau dann gleich, wenn Sie die gleichen Elemente haben, mit anderen Worten: Seien a und b Mengen. Dann schreiben wir a = b, falls für alle x ∈ a gilt x ∈ b und für alle x ∈ b gilt x ∈ a, oder, kürzer: Definition 7. [Gleichheitskriterium] Für alle Mengen a, b gilt: a = b gdw. a ⊆ b und b ⊆ a. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 23 Mengen und das Unendliche Beachten sie: Die leere Menge ist Teilmenge jeder Menge (mit folgender Begründung: es ist für eine Menge M zu überprüfen, ob jedes x ∈ ∅ auch in M ist. Es gibt aber gar keine x in ∅, also ist jedes x ∈ ∅ in M ! q.e.d) Die Teilmengen-„Relation“ ⊆ ist transitiv: seien Mengen a, b, c mit a ⊆ b und b ⊆ c, dann gilt auch a ⊆ c! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 24 Mengen und das Unendliche Einfache Operationen mit Mengen (1) Definition 8. [Vereinigung; Schnitt; Subtraktion; Disjunktheit] Seien a, b Mengen. Die Vereinigung a ∪ b (sprich: a vereinigt b), der Schnitt a ∩ b (a geschnitten b) und die Subtraktion a − b (oft auch: a\b, sprich a minus b bzw. a ohne b) sind definiert durch: a ∪ b = {x|x ∈ a oder x ∈ b} a ∩ b = {x|x ∈ a und x ∈ b} a − b = {x|x ∈ a und x 6∈ b} = {x ∈ a|x 6∈ b} a und b heißen disjunkt, falls a ∩ b = ∅ (d.h., ihre Schnittmenge ist leer). Assoziativgesetze für Vereinigung und Durchschnitt: Seien a, b, c Mengen. Dann gilt: (i) (a ∪ b) ∪ c = a ∪ (b ∪ c) (ii) (a ∩ b) ∩ c = a ∩ (b ∩ c) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 25 Mengen und das Unendliche Einfache Operationen mit Mengen (2) Definition 9. [Relative Komplemente] Seien a, b Mengen und a ⊆ b. Dann heißt b − a das relative Komplement von a in b. Ist b fixiert, so nennen wir b − a kurz das Komplement von a, und setzen ac = b − a. Satz 10. [Eigenschaften der relativen Komplemente] Sei d eine Menge. Weiter seien a, b ⊆ d. Dann gilt für die relativen Komplemente in d: (i) a ∪ ac = d (ii) a ∩ ac = ∅ (iii) (a ∩ b)c = ac ∪ bc (iv) (a ∪ b)c = ac ∩ bc. Die beiden letzen Aussagen werden auch als de Morgansche Regeln bezeichnet. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 26 Mengen und das Unendliche Beweise der letzten Aussagen Zu (iii): Wir zeigen zunächst (a ∩ b)c ⊆ ac ∪ bc: Sei x ∈ (a ∩ b)c, so gilt (1) x ∈ d und (2) x 6∈ a oder x 6∈ b.2 Für x 6∈ a ist wg. 1. x ∈ d − a = ac. Für x 6∈ b ist wg. 1. x ∈ d − b = bc. Also gilt immer: x ∈ ac oder x ∈ bc, also x ∈ ac ∪ bc. Nun zu (a ∩ b)c ⊇ ac ∪ bc: Sei x ∈ ac ∪ bc, dann gilt: x ∈ d − a oder x ∈ d − b. Im ersten Fall ist x ∈ d − (a ∩ b) wg. d − a ⊆ d − (a ∩ b). Im zweiten Fall ist x ∈ d − (a ∩ b) wg. d − b ⊆ d − (a ∩ b). Also gilt in beiden Fällen: x ∈ d − (a ∩ b) = (a ∩ b)c. Aus dem Gleichheitskriterium folgt die behauptete Aussage (a ∩ b)c = ac ∪ bc. (iv) läßt sich analog zeigen. 2 Warum? x ist im Komplement von (a ∩ b), d.h. x ∈ (d − (a ∩ b)), also gilt x ∈ d und x 6∈ a ∩ b. Das Zweite ist gleichbedeutend (äquivalent) mit x 6∈ a oder x 6∈ b. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 27 Mengen und das Unendliche Weitere einfache Eigenschaften Distributivgesetz: Für alle Mengen a, b, c gilt: (i) (a ∪ b) ∩ c = (a ∩ c) ∪ (b ∩ c) (ii) (a ∩ b) ∪ c = (a ∪ c) ∩ (b ∪ c) Beweis in den Übungen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 28 Mengen und das Unendliche Mengensysteme Definition 11. [Mengensysteme] Ein Mengensystem M ist eine Menge, deren Elemente alle Mengen sind, d.h. M enthält keine Grundobjekte als Elemente. Sei nun M ein Mengensystem. Dann setzen wir: Durchschnitt von M : M = {x| Für alle a ∈ M ist x ∈ a} Vereinigung von M : M = {x| es existiert ein a ∈ M mit x ∈ a} T S S T T Erläuterung: Streng nach Definition (so sagt Deiser) gilt: ∅ = ∅ und ∅ = {x| ist ein Objekt }. Deiser erklärt: Sei x beliebig. Wir zeigen x ∈ ∅. Hierzu ist zu zeigen: Für alle a ∈ ∅ gilt x ∈ a. Es gibt aber gar keine a ∈ ∅, also ist die Aussage sicher richtig. So ganz streng nach der Definition ist das Zweite aber im Grunde nur unter Berücksichtigung einer Setzung, die auf einer Konvention in der (mathematischen) Logik beruht, zu der wir später noch kommen werden: eine Eigenschaft ist für alle x ∈ M genau dann erfüllt, wenn es kein x ∈ M gibt, für dass sie nicht erfüllt ist – und dies ist insbesondere immer dann erfüllt, wenn es gar kein x in M gibt – das letztere ist die Konvention, deren Sinn man philosophisch hinterfragen könnte. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 29 Mengen und das Unendliche Potenzmenge Definition 12. [Potenzmenge] Sei M eine Menge. Dann ist die Potenzmenge von M , in Zeichen P(M ), die Menge aller Teilmengen von M : P(M ) = {a|a ⊆ M } • Für alle Mengen M gilt: ∅ ∈ P(M ), M ∈ P(M ). • Weiter gilt für alle Mengen a: mit a ∈ P(M ) folgt M − a ∈ P(M ). Beispiel: M = {1, 2, 3} P(M ) = { ∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} } c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 30 Mengen und das Unendliche Grundlegende Fragen (A) Was ist eigentlich ein mathematisches Objekt? – Alle mathematischen Objekte (Zahlen, Funktionen, usw.) können als Mengen interpretiert werden. (B) Welche mathematischen Objekte (=Mengen) existieren? – Axiome bestimmen grundlegende Mengen. Axiome und darin verwendete Eigenschaften von Mengen/Objekten werden als logische Formeln formuliert. Mit ihrer Hilfe kann man die Existenz von Mengen folgern und Zusammenhänge zwischen Mengen beweisen. Beispiel Potenzmengenaxiom: Zu jeder Menge M existiert die Potenzmenge von M , d.h.: Für alle M gibt es ein P mit der Eigenschaft: Für alle x gilt x ∈ P gdw. x ⊆ M. Als logische Formel: ∀M ∃P ∀x(x ∈ P ↔ ∀y(y ∈ x → y ∈ M )), zu lesen als: Für alle M existiert ein P , so dass für alle x gilt: x ist in P genau dann, wenn für alle y gilt: aus y in x folgt y in M . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 31 Mengen und das Unendliche Mit der Abkürzung a ⊆ b für ∀c(c ∈ a → c ∈ b): ∀M ∃P ∀x(x ∈ P ↔ x ⊆ M ) Verwendete Symbole: ∀ entspricht „für alle“ ∃ entspricht „es existiert ein“ (mindestens eins, nicht genau eins!) → entspricht „(es) folgt“ (bzw. „aus . . . folgt . . . “) ↔ entspricht „gdw.“ (C) Was genau ist ein mathematischer Beweis einer Aussage? – Eine schrittweise Umformung von Formeln mit Hilfe eines Kalküls, der Regeln angibt, wie bestimmte Zeichenketten in andere verwandelt werden dürfen. Mit den Axiomen und einem präzisen Beweisbegriff kann man metamathematische Fragen stellen, z.B. Was ist beweisbar?. Wesentlich sind folgende Fragen: (L1) Ist das Axiomensystem widerspruchsfrei? (Zu bejahen, wenn die Aussagen 0 = 1 oder ∃x x 6= x sich formal nicht aus den Axiomen ableiten lassen) (L2) Ist das Axiomensystem vollständig? (Zu bejahen, wenn für jede Aussage φ ein Beweis von φ oder ein Beweis der Negation von φ, in Zeichen ¬φ, existiert – jede Aussage läßt sich also entweder beweisen oder widerlegen) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 32 Mengen und das Unendliche Glauben Sie, dass sich ein solches Axiomensystem für die Mengenlehre (und, darauf aufbauend, für die anderen Zweige der Mathematik) finden läßt? K URT G ÖDEL beantwortete in den 30er Jahren des 20. Jahrhunderts die Fragen wie folgt (aufbauend auf F REGE , H ILBERT, RUSSELL): (zu L1): Wir können es nicht sicher wissen: die Widerspruchsfreiheit der axiomatischen Mengenlehre ist unbeweisbar! (zu L2): Nein! Ist das zugrunde gelegte Axiomensystem der Mengenlehre widerspruchsfrei, so gibt es stets Aussagen, die weder beweisbar noch widerlegbar sind! (Ist es widerspruchsvoll, dann verliert die Frage ihren Sinn, denn dann ist jede Aussage beweisbar) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 33 Mengen und das Unendliche Abbildungen zwischen Mengen • Sehr nützlich ist der Begriff des geordneten Paares P von zwei Objekten a,b, in Zeichen: P = (a, b). Aber in der Mengenlehre gilt immer: {a, b} = {b, a} für zwei beliebige Objekte a,b. • Geordnete Paare müssen die folgende Eigenschaft erfüllen: (a, b) = (c, d) gdw. a = c und b = d. Definition 13. [Geordnetes Paar] 3 Seien a, b Objekte. Dann ist das geordnete Paar von a und b, in Zeichen (a, b), definiert durch: (a, b) = {{a}, {a, b}} 3 Andere Definitionen sind möglich, z.B. von Hausdorff die Obige ist von Kuratowski): (a, b) = {{a, 1}, {b, 2}}. Die ist aber nicht so schön, weil wir neue, von a und b unterscheidbare Objekte einführen müssen, und für ein Paar aus diesen Objekten 1 und 2 brauchen wir dann neue „Indikatorobjekte“ usw. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 34 Mengen und das Unendliche Kreuzprodukt Definition 14. [Kreuzprodukt oder kartesisches Produkt] Seien A, B Mengen. Dann ist das Kreuzprodukt von A, B , in Zeichen A × B (sprich: A kreuz B ), definiert durch: A × B = {(a, b)|a ∈ A, b ∈ B} = {x|x = (a, b) für ein a ∈ A und ein b ∈ B}. Beispiel: Für A = {1, 2} und B = {a, b, c} ist A × B = {(1, a), (1, b), (1, c), (2, a), (2, b), (2, c)}. Das Kreuzprodukt sammelt also alle Möglichkeiten ein, die Objekte der beiden beteiligten Mengen miteinander zu paaren. Man kann das Kreuzprodukt natürlich auch für 3 oder mehr Mengen definieren: Das n-fache kartesische Produkt über einer Menge A ist die Menge aller n-Tupel von Elementen aus A: An = A×· · ·×A = {(a1, . . . , an)|ai ∈ A, i = 1, . . . , n}. Es ist A1 = A. Analoges kann man mit n verschiedenen Mengen A1, . . . , An definieren, nur gibt es dann natürlich die abkürzende Schreibweise An nicht. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 35 Mengen und das Unendliche Relation Mit Hilfe der geordneten Paare können wir nun den Begriff der Relation definieren (wir kennen bereits die Beziehungen/Relationen =,⊆,∈ usw.): Eine Relation ist eine Menge von geordneten Paaren. D.h., jede Menge R von geordneten Paaren liefert eine Relation (genannt R). Zwei Objekte a, b stehen in der Relation R zueinander genau dann, wenn (a, b) ∈ R. Definition 15. [Relation] Eine Menge R heißt (zweistellige) Relation, falls jedes x ∈ R ein geordnetes Paar ist. Ist A eine Menge und gilt R ⊆ A × A, so heißt R Relation auf A. Sind a, b Objekte und gilt (a, b) ∈ R, so schreiben wir hierfür auch aRb (InfixNotation). Beispiel: Für A = {1, 2} und B = {a, b, c} (s. Kreuzproduktbeispiel) bestimmt jede Teilmenge von A × B eine Relation, z.B. R1 = {(1, a), (2, b)} oder auch R2 = {(1, a), (1, b), (2, b), (2, c)}. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 36 Mengen und das Unendliche Definitions- und Wertebereich Definition 16. [Definitionsbereich, Wertebereich] Sei R eine Relation. Wir setzen: dom(R) = {a| es existiert ein b mit (a, b) ∈ R} rng(R) = {b| es existiert ein a mit (a, b) ∈ R}. dom(R) heißt der Definitionsbereich von R (dom für engl. domain). rng(R) heißt der Wertebereich von R (rng für engl. range). Beispiel: Der Definitionsbereich dom(R1) von R1 aus dem letzten Beispiel ist {1, 2}, der Wertebereich rng(R1) ist {a, b}. • Die Ordnungsbeziehungen „kleiner“ und „kleinergleich“ auf den Zahlmengen N, Z, Q, R sind Relationen: <N= {(n, m) ∈ N × N|n ist kleiner als m} ≤Q= {(p, q) ∈ Q × Q | p ist kleiner als q oder p ist gleich q}. • Man kann nun z.B. ≤R als <R ∪{(x, x)|x ∈ R} definieren. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 37 Mengen und das Unendliche • Es gilt <N ⊆ <Z ⊆ <Q ⊆ <R (den Index lassen wir i.d.R. weg). • Zur Schreibweise: Normalerweise schreiben wir (a, b) ∈<N als a <N b, beide Schreibweisen sind austauschbar. Definition 17. [reflexiv, symmetrisch, transitiv] Sei R eine Relation auf einer Menge A. 1. R heißt reflexiv, falls für alle x ∈ A gilt xRx. 2. R heißt symmetrisch, falls für alle x, y ∈ A gilt: aus xRy folgt yRx. 3. R heißt transitiv, falls für alle x, y, z ∈ A gilt: aus xRy und yRz folgt xRz . Anmerkung: Diese Definition läßt sich auch auf Relationen zwischen zwei Mengen B, C anwenden, indem man B ∪ C = A setzt. Definition Umkehrrelation: Sei R eine Relation. Dann ist R−1 = {(b, a)|(a, b) ∈ R} die Umkehrrelation zu R. Anmerkungen: R−1 −1 = R, R ist die Umkehrrelation zu R−1. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 38 Mengen und das Unendliche Äquivalenzrelation Definition 18. [Äquivalenzrelation] Sei R eine Relation auf einer Menge A. R heißt Äquivalenzrelation auf A, falls R reflexiv, symmetrisch und transitiv ist. Für jedes x ∈ A ist dann die Äquivalenzklasse von x bzgl. der Äquivalenzrelation R, in Zeichen x/R (sprich: x modulo R), definiert durch x/R = {y ∈ A|xRy}. Weiter ist A/R (Sprich: A modulo R) definiert durch A/R = {x/R|x ∈ A}. x/R ist also die Menge aller Elemente aus A, die mit x in Relation R stehen. A/R ist die Menge all dieser Klassen. Beispiel: für ein festes m ∈ N, m ≥ 1, sei die Relation %m auf N definiert durch: %m = {(a, b) ∈ N × N| a und b haben den gleichen Rest bei Division durch m }. Dann ist %m eine Äquivalenzrelation auf N (prüfen sie: %m ist reflexiv, symmetrisch und transitiv). Für m = 3 gilt z.B. 2 %3 5 (denn beide lassen sich mit Rest 1 durch 3 teilen) und es gibt genau drei Äquivalenzklassen (welche? Natürlich die natürlichen Zahlen, die sich mit Rest 0, 1 oder 2 durch 3 teilen lassen) – übrigens bilden diese drei Klassen eine Zerlegung von N (vgl. Übungsaufgabe 26 auf Blatt 6). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 39 Mengen und das Unendliche Der Funktionsbegriff Intuition: eine Funktion kann man als eine „Vorschrift“ ansehen, die Objekten andere Objekte eindeutig zuordnet. Aber zunächst definieren wir den Begriff „extensional“: Definition 19. [Funktion] Sei f eine Menge von geordneten Paaren. f heißt Funktion, falls für alle a, b1, b2 gilt: aus (a, b1) ∈ f und (a, b2) ∈ f folgt b1 = b2. (Rechtseindeutigkeit) Funktionen sind rechtseindeutige Relationen! Wir schreiben auch f (a) = b für (a, b) ∈ f . Definition 20. [Bild unter einer Funktion] Ist f eine Funktion und f (a) = b, so heißt b das Bild von a unter f . Definition 21. [Funktion von A nach B ] Sei f eine Funktion und seien A, B Mengen. f heißt Funktion von A nach B , in Zeichen f : A → B , falls gilt: dom(f ) = A und rng(f ) ⊆ B . Die Menge B werden wir auch Zielbereich nennen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 40 Mengen und das Unendliche Beispiel: Bei f (n) = 0 für alle n ∈ N schreibt man z.B. f : N → N. Definition 22. [injektiv,surjektiv,bijektiv] Sei f eine Funktion. 1. f heißt injektiv, falls für alle a1, a2, b gilt: aus f (a1) = b und f (a2) = b folgt a1 = a2. (Linkseindeutigkeit: es werden nur verschiedene b „getroffen“!) 2. f heißt surjektiv nach B , falls gilt rng(f ) = B , d.h. für alle b ∈ B existiert ein a ∈ dom(f ) mit f (a) = b. (Alle b aus B werden getroffen!) 3. f heißt bijektiv von A nach B , falls gilt: f ist injektiv und surjektiv von A nach B . (Jedes b aus B wird genau einmal getroffen!) Beachten Sie: die Eigenschaft injektiv benötigt keinen Zielbereich, um gelten zu können (also können alle Funktionen nach Def. 19 diese Eigenschaft haben). Surjektivität und Bijektivität machen hingegen nur Sinn, wenn man sich für einen bestimmten Zielbereich interessiert (also können nur Funktionen, für die ein solcher Bezug nach Def. 21 angegeben wurde, auf Surjektivität und Bijektivität untersucht werden). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 41 Mengen und das Unendliche Einige einfache Folgerungen (s. auch Übung): 1. Ist f : A → B , so ist f : A → rng(f ) surjektiv. 2. Ist f : A → B injektiv, so ist f : A → rng(f ) bijektiv. 3. Ist f : A → B bijektiv, so existiert ein bijektives g : B → A. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 42 Mengen und das Unendliche Einfache Operationen auf Funktionen (I) Definition 23. [Einschränkung und Fortsetzung einer Funktion] Seien f : A → B und C ⊆ A. Dann setzen wir f |C = {(a, b) ∈ f |a ∈ C}. f |C heißt die Einschränkung von f auf C . Sind f, g Funktionen mit f ⊆ g , so heißt g eine Fortsetzung von f . Definition 24. [Umkehrfunktion] Sei f eine injektive Funktion. Dann ist die Umkehrfunktion von f , in Zeichen f −1, definiert durch f −1 = {(b, a)|(a, b) ∈ f }. −1 Es gilt: f −1 ist injektiv, dom(f −1) = rng(f ), rng(f −1) = dom(f ), f −1 = f. Beachten Sie: Injektivität und Umkehrbarkeit bauen auf dem allgemeinen Funktionsbegriff aus Def. 19 auf, sie benötigen also keinen Zielbereich, um zu „funktionieren“. Definition 25. [Verkettung/Verknüpfung von Funktion] Seien f : A → B und g : B → C . Dann ist die Verkettung g ◦ f der Funktionen f und g (sprich: g nach f), definiert durch: g ◦ f = {(a, c)|a ∈ A, (f (a), c) ∈ g}. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 43 Mengen und das Unendliche Einfache Operationen auf Funktionen (II) Definition 26. [Identität] Sei A eine Menge. Dann ist die Identität auf A, in Zeichen idA, definiert durch idA = {(a, a)|a ∈ A}. Es gilt idA : A → A. idA ist natürlich eine Bijektion von A nach A. Satz 27. [Verkettung zur Identität] (a) Die folgenden Aussagen sind äquivalent: (i) f : A → B ist injektiv (ii) Es existiert eine Funktion g : B → A mit g ◦ f = idA (b) Die folgenden Aussagen sind äquivalent: (i) f : A → B ist surjektiv (ii) Es existiert eine Funktion g : B → A mit f ◦ g = idB c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 44 Mengen und das Unendliche Beweis zur ersten Äquivalenz Beweis: Beachten Sie zunächst, dass zwei Aussagen (i) und (ii) äquivalent sind, in Zeichen (i) ⇔ (ii), wenn die eine jeweils aus der anderen folgt, also (i) ⇒ (ii) und (ii) ⇒ (i). Äquivalenzen von drei oder mehr Aussagen kann man zeigen, indem man Ringe von Schlüssen bildet. Bei drei Aussagen (i),(ii),(iii) zeigt man dann z.B. (i) ⇒ (ii), (ii) ⇒ (iii) und (iii) ⇒ (i). Aus der Transitivität der logischen Implikation folgt dann auch (i) ⇒ (iii), (iii) ⇒ (ii) und (ii) ⇒ (i), und damit folgen die gewünschten Äquivalenzen. Hier ist aber nur die Äquivalenz von zwei Aussagen zu zeigen. Nun zu (a): Wir zeigen zunächst (i) ⇒ (ii), d.h. wir zeigen, dass aus der Injektivität einer Funktion f : A → B folgt, dass eine Funktion g : B → A existiert mit g ◦ f = idA.4 Seien B 0 = rng(f ) und a ∈ A beliebig. Definiere nun g : B → A durch g|B 0 = f −1 (das sind also die Fälle, in denen b aus dem Range von f stammt) und g(b) = a 4 Unsere Aufgabe ist es, eine Funktion g tatsächlich anzugeben, die die gewünschte Eigenschaft hat. Intuitiv ist klar, dass die Umkehrfunktion von f eine wichtige Rolle spielen wird. Allerdings trifft f nicht notwendigerweise alle Elemente von B , deshalb müssen wir die Umkehrfunktion noch sinnvoll erweitern für die Fälle, in denen ein b ∈ B nicht im Range von f liegt. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 45 Mengen und das Unendliche für b 6∈ B 0. Dann ist natürlich g ◦ f = idA. Nun zur Richtung (ii) ⇒ (i): Sei f (a1) = b = f (a2) für a1, a2 ∈ A. Dann ist g(b) = g(f (a1)) = idA(a1) = a1 und g(b) = g(f (a2)) = idA(a2) = a2, also a1 = a2. Also ist f injektiv.5 Ganz ähnlich gehen wir beim Beweis von (b) vor: (i) ⇒ (ii): Definiere g : B → A durch g(b) = „ein a ∈ A mit f (a) = b“. Beachte: Ein a ∈ A mit f (a) = b existiert wg. rng(f ) = B nach Voraussetzung. Dann gilt g : B → A und nach Definition von g ist f (g(b)) = b für alle b ∈ B . Also f ◦ g = idB . (ii) ⇒ (i): Sei b ∈ B . Wg. f ◦ g = idB ist f (g(b)) = b. Also ist b ∈ rng(f ), denn f (a) = b für a = g(b). Also ist f : A → B surjektiv. 5 Hier wird also die Injektivitätbedingung geprüft – eine Funktion ist injektiv, wenn es kein Objekt in ihrem Range gibt, das von zwei Objekten des Domains getroffen wird – mit anderen Worten: wenn für zwei beliebig ausgewählte Objekte aus dem Domain die Bilder gleich sind, dann müssen die Objekte selbst identisch sein. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 46 Mengen und das Unendliche Forts. zu Funktionen Definition 28. [Bild, Urbild] Sei f eine Funktion. Weiter seien A ⊆ dom(f ) und B eine beliebige Menge. Wir 00 00 setzen f A = {f (a)|a ∈ A} und f −1 B = {a ∈ dom(f )|f (a) ∈ B}. 00 00 f heißt das Bild von A unter f (sprich: f zwei Strich von A). f −1 B heißt das Urbild von B unter f . 00 00 Es gilt f A ⊆ rng(f ) für alle A ⊆ dom(f ) und f −1 B ⊆ dom(f ) für alle Mengen B . (Warum?) Manche sprechen anstelle von Funktion auch von Abbildung, Transformation, Zuordnung oder auch Operator. Das suggeriert irgendeine „Tätigkeit“ – wir nehmen hier anstelle einer etwas vagen, leicht geheimnisvoll scheinenden Position, die einer Funktion etwas Dynamisches zuschreibt, eine Position ein, in der die Funktion nichts tut, sondern (im statischen Sinne) nur ist. [In Anlehnung an P.R.Halmos, 1982, in „Naive Mengenlehre“] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 47 Mengen und das Unendliche Größenvergleiche Wie vergleichen Neandertaler zwei große Haufen Nüsse? Große Zahlen kennen Sie nicht! Wiegen können Sie nicht! Der Algorithmus des Abtragens: Nimm je eine Nuss von Haufen H1 und eine von Haufen H2 weg und lege sie beiseite. Wiederhole diese Paarbildung, bis einer der beiden Haufen aufgebraucht ist. Mögliche Resultate: (I) H1 ist am Ende aufgebraucht. (II) H2 ist am Ende aufgebraucht. (III) H1 und H2 sind am Ende aufgebraucht. Das entspricht den drei Fällen: (I) H1 hat weniger oder ebensoviele Nüsse wie H2. (II) H2 hat weniger oder ebensoviele Nüsse wie H1. (III) H1 und H2 haben gleichviele Nüsse. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 48 Mengen und das Unendliche Diese Entsprechung bezeichnen wir als Korrektheit der Algorithmus, von der wir intuitiv überzeugt sind (hoffentlich ;) Übersetzen wir das bisher gesehene in unsere Sprache der Mengenlehre: Der Algorithmus erzeugt eine Funktion: Sei f die Menge aller Paare (a, b) ∈ H1 × H2, die während des Abtragens entstehen. Im Fall (I) ist f : H1 → H2 injektiv. Im Fall (II) ist g = f −1 = {(b, a)|(a, b) ∈ f }. Dann ist g : H2 → H1 injektiv. Im Fall (III) ist f : H1 → H2 bijektiv. Aus der Korrektheit des Algorithmus folgt, dass das Ergebnis nicht vom Verlauf der Paarbildung abhängt, d.h. jede mögliche Durchführung bzw. Funktion f , liefert das gleiche Resultat. Wir setzen: |H1| ≤ |H2|, falls (I) eintritt. |H2| ≤ |H1|, falls (II) eintritt. |H1| = |H2|, falls (III) eintritt. Beachte: Die Begriffe mehr, weniger, gleichviel beruhen nicht auf dem Zahlbegriff! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 49 Mengen und das Unendliche Definition 29. [Größenvergleich] Seien A und B Mengen. Dann ist die Mächtigkeit von A kleinergleich der Mächtigkeit von B , in Zeichen |A| ≤ |B|, falls gilt: Es existiert ein injektives f : A → B . Definition 30. [Gleichmächtig] Seien A und B Mengen. Dann ist A gleichmächtig zu B , in Zeichen |A| = |B|, falls gilt: Es existiert ein bijektives f : A → B . Wir kommen jetzt zu einem wichtigen Satz, den C ANTOR 1883 formulierte und den der 19-jährige F ELIX B ERNSTEIN 1897 bewies, den Satz von Cantor-Bernstein. Der Satz selbst besagt etwas scheinbar triviales: Aus |M | ≤ |N | und |N | ≤ |M | folgt |N | = |M |, d.h., wenn es zwei Injektionen f : M → N und g : N → M gibt, so gibt es auch eine Bijektion h : M → N . Dies ist allerdings keineswegs klar! B ERNSTEIN benötigte zunächst einen vorbereitenden Satz: Satz 31. [Inklusionssatz(**)] 6 Seien M, N Mengen mit N ⊆ M und |N | = |M |. Weiter sei N 0 eine Menge mit N ⊆ N 0 ⊆ M . Dann gilt |N 0| = |M | = |N |. 6 (**)Gibt es solche Mengen N, M, N 0 überhaupt? Nehmen wir mal an, dass alle Mengen paarweise verschieden sind. Dann folgt aus N ⊆ M , dass jedes Element von N auch in M ist. Wir können also in jedem Fall eine Injektion von N nach M finden, nämlich die Identität, die jedem Element aus dem Definitionsbereich sich selbst zuordnet. Aus |N | = |M | folgt, dass es sogar eine Bijektion zwischen M und N gibt. Im Endlichen folgt hier unmittelbar N = M ! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 50 Mengen und das Unendliche Satz 32. [Inklusionssatz, alternative Formulierung**] Seien A, B, C paarweise disjunkte Mengen mit |A ∪ B ∪ C| = |A|. Dann gilt auch |A ∪ B ∪ C| = |A ∪ B|. Satz 33. [Äquivalenzsatz von C ANTOR -B ERNSTEIN] Seien M, Q Mengen mit |M | ≤ |Q| und |Q| ≤ |M |. Dann gilt |M | = |Q|. Definition 34. [Echt kleinere Mächtigkeit] Seien A, B Mengen. A ist von echt kleinerer Mächtigkeit als B , in Zeichen |A| < |B|, falls |A| ≤ |B| und |A| 6= |B|. Folgerung: Aus |A| < |B| und |B| < |C| folgt |A| < |C|. Satz 35. [Vergleichbarkeitssatz] Seien M, N Mengen. Dann gilt |M | ≤ |N | oder |N | ≤ |M |. Und damit ergibt sich der Rest von selbst (denn aus N ⊆ N 0 ⊆ M und N = M folgt unmittelbar N 0 = M – und der Inklusionssatz ist ziemlich inhaltsleer). Allerdings können wir das noch gar nicht so genau zeigen, denn der Begriff der Endlichkeit ist noch nicht definiert. Aber im Unendlichen wird der Inklusionssatz wieder interessant (fragen sie sich einmal, ob es mehr natürliche Zahlen gibt, als gerade natürliche Zahlen!) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 51 Mengen und das Unendliche Unendliche Mengen (I) Seien N = {0, 1, 2, 3, . . . } und G = {0, 2, 4, 6, . . . } die Menge der geraden Zahlen. Definiere f : N → G durch f (n) = 2n für n ∈ N. Dann ist f : N → G bijektiv! Es gilt also: |N| = |G|. Zudem ist G ⊂ N. Beachten Sie, dass beide „Größenbegriffe“ (Mächtigkeit und Inklusion) durchaus sinnvoll sind. Bedenken Sie aber auch, dass manche Mengen hinsichtlich der Inklusion gar nicht in eine Ordnung gebracht werden können – die Teilmengenbeziehung ist weniger „universell“ als der Mächtigkeitsbegriff (wenn es um „Größe“ geht), z.B. können Sie mit der Teilmengenrelation nicht eine Menge von Äpfeln und eine Menge von Birnen vergleichen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 52 Mengen und das Unendliche Unendliche Mengen (II) Definition 36. [Unendlichkeit nach Dedekind] Sei M eine Menge. M heißt unendlich, falls es eine echte Teilmenge N von M gibt, die sich bijektiv auf M abbilden läßt, d.h. es gibt ein N ⊂ M mit |N | = |M |. Hilbert’sche Hotel: Dieses sehr spezielle Hotel hat für jede natürliche Zahl ein Zimmer – allerdings sind alle Zimmer belegt! Dennoch schafft es der Portier immer wieder, neue Gäste unterzubringen: (i) Jeder alte Gast zieht von Zimmer n nach Zimmer n + 1. (ii) Der neue Gast wird in Zimmer 0 einquartiert. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 53 Mengen und das Unendliche Einige Sätze über unendliche Mengen Satz 37. [Übertragung der Unendlichkeit auf Obermengen] Seien A, B Mengen und es gelte A ⊆ B . Dann gilt: Ist A unendlich, so ist auch B unendlich. Beweis: Sei A unendlich. Dann existieren A0 ⊂ A und f : A → A0 bijektiv. Definiere g : B → B durch: ( g(b) = f (b), falls b ∈ A b, falls b 6∈ A. Also g = f ∪ idB−A. Wg. f : A → A injektiv ist g injektiv. Weiter ist rng(g) = rng(f ) ∪ (B − A) = A0 ∪ (B − A) ⊂ B wegen A0 ⊂ A, A ⊆ B . Also ist g eine Bijektion von B auf die echte Teilmenge rng(g) von B , und damit ist B unendlich. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 54 Mengen und das Unendliche Satz 38. [Übertragung der Unendlichkeit auf gleichmächtige u. größere Mengen] Seien A, B Mengen und es gelte |A| ≤ |B|. Dann gilt: Ist A unendlich, so ist auch B unendlich. Satz 39. [Entfernen eines Elementes] Sei A eine unendliche Menge. Weiter seien a ∈ A und B = A − {a}. Dann ist auch B unendlich. Korollar 40. [Hinzufügen eines Elementes] Sei B eine endliche Menge, a ein beliebiges Objekt, a 6∈ B . Weiter sei A = B ∪ {a}. Dann ist auch A endlich. Der Apparat, der uns zur Verfügung steht, ist bisher ein wenig schwerfällig. Wir verknüpfen jetzt die Endlichkeit enger mit den natürlichen Zahlen: c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 55 Mengen und das Unendliche Endlichkeit und natürliche Zahlen Definition 41. [Die Mengen n̄ für n ∈ N] Für n ∈ N sei n̄ = {0, 1, . . . , n − 1} = {m ∈ N|m < n}. Übrigens: Funktioniert der Algorithmus des Abtragens eigentlich, wenn beide Mengen unendlich sind? Satz 42. [Endlichkeit von n̄] Jede Menge n̄ ⊂ N ist endlich. Korollar 43. Seien n, m ∈ N und sei f : n̄ → m̄ bijektiv. Dann gilt n = m. Satz 44. [Einbettbarkeit der natürlichen Zahlen in unendliche Mengen] Sei M eine Menge. Dann sind äquivalent: (i) M ist unendlich (ii) |N| ≤ |M |. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 56 Mengen und das Unendliche Satz 45. [Charakterisierung der endlichen Mengen mit Hilfe der natürlichen Zahlen] Sei M eine Menge. Dann sind äquivalent: (i) M ist endlich (ii) Es existiert ein n ∈ N mit |M | = |n̄|. Die Vereinigung zweier endlicher Mengen ist endlich. Die Vereinigung endlich vieler endlicher Mengen ist endlich. Alternative Definition von Endlichkeit/Unendlichkeit: Eine Menge M ist endlich, falls es ein n ∈ N gibt mit |M | = |n̄|. Eine Menge ist unendlich, falls sie nicht endlich ist. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 57 Mengen und das Unendliche Anmerkungen zur Unendlichkeit DAVID H ILBERT, 1925: „Durch diese Bemerkung wollte ich nur dartun, daß die endgültige Aufklärung über das Wesen des Unendlichen weit über den Bereich spezieller fachwissenschaftlicher Interessen vielmehr zur Ehre des menschlichen Verstandes selbst notwendig geworden ist . . . “ „Die Endlichkeit des Wirklichen haben wir nun in zwei Richtungen festgestellt: nach dem Unendlichkleinen und dem Unendlichgroßen. Dennoch könnte es sehr wohl zutreffen, daß das Unendliche in unserem Denken einen wohlberechtigten Platz hat und die Rolle eines unentbehrlichen Begriffs einnimmt . . . “ c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 58 Mengen und das Unendliche Abzählbare Mengen Definition 46. [Abzählbare Mengen] Eine Menge M heißt abzählbar, falls gilt: (i) M ist endlich, oder (ii) es existiert ein f : N → M bijektiv. Satz 47. Sei M eine Menge. Dann sind äquivalent: M ist abzählbar, |M | ≤ |N|. Beweis: (i) ⇒ (ii): Sei M abzählbar. Ist M endlich, so existiert ein n̄ mit |M | = |n̄|, und dann gilt offenbar |M | ≤ |N|. Ist |M | = |N|, so ist trivialerweise |M | ≤ |N| (ii) ⇒ (i): Sei |M | ≤ |N| und f : M → N injektiv. Definiere, solange möglich, x0 = min(rng(f )), xn+1 = min(rng(f ) − {x0, . . . , xn}). Ist n minimal mit xn nicht definiert, so ist |M | = |n̄|. Ist xn definiert für alle n ∈ N, so gilt |M | = |N|, denn g : N → N mit g(n) = xn für n ∈ N ist bijektiv. Also ist M abzählbar. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 59 Mengen und das Unendliche Satz 48. Sei M eine unendliche Menge. Dann existiert eine abzählbar unendliche Teilmenge von M . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 60 Mengen und das Unendliche Forts. Abzählbarkeit Die „entscheidende“ Frage: Ist jede Menge abzählbar? Es folgen einige Beispiel: Sind die ganzen Zahlen abzählbar? Z = {. . . , −1, 0, 1, . . . } f : Z → N definiert durch f (x) = ( 2x, falls x ≥ 0, −2x − 1 falls x < 0 (1) Dann ist f bijektiv! Also ist Z abzählbar! Satz 49. Seien A und B abzählbar, dann ist auch A ∪ B abzählbar! Beweis: Übung! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 61 Mengen und das Unendliche Forts. Abzählbarkeit Ist N × N abzählbar? Satz 50. N × N ist abzählbar. Beweis: Hier hilft die berühmte Cantor’sche Paarungsfunktion: definiere π : N × N → N bijektiv durch π(a, b) = 1/2(a + b)(a + b + 1) + a. Beispiel: π(1, 2) = 1/2(1 + 2)(1 + 2 + 1) + 1 = 7 Übrigens: Es gibt nur dieses eine Polynom zweiten Grades, das N × N aufzählen kann (und natürlich seine symmetrische Form). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 62 Mengen und das Unendliche Forts. Abzählbarkeit Das Ergebnis kann man auf höhere Dimensionen verallgemeinern: ein πn : Nn → N existiert für alle n ≥ 2! (und ist dann ein Polynom n-ten Grades). Satz 51. Eine Vereinigung abzählbar vieler abzählbarer Mengen ist abzählbar! Beweis: Seien An, n ∈ N, abzählbare Mengen. Für jedes n ∈ N fixieren wir ein fn : An → N injektiv. Sei A = funktion). S n∈N An. Sei π : N × N → N bijektiv (etwa die Cantor’sche Paarungs- Wir definieren g : A → N durch: g(x) = π(n, fn(x)), wobei n = „das kleinste n ∈ N mit x ∈ An“ ist. Dann ist g injektiv, also |A| ≤ |N|. Erläuterungen: Wie kommt man auf die Idee, ein solches g anzugeben – und wieso ist es injektiv? Versuchen wir mal, den Gedankengang mit einem Beispiel nachzuvollziehen. Zunächst sollten wir aber festhalten, was wir tun müssen: wir suchen c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 63 Mengen und das Unendliche eine injektive Abbildung von A (das steht für die Vereinigung der abzählbar vielen abzählbaren Mengen) in die natürlichen Zahlen, denn wir wissen nach Satz 47, dass A dann abzählbar ist. Wie finden wir eine solche Abbildung? Zunächst schauen wir mal ein Beispiel für die Mengen An an, z.B. so: A0 = {1, 5, 7}, A1 = {2, 3, 4, 5}, A2 = {2, 4, 6, . . . }, A3 = {1, 3, 5, 7, . . . }, . . . . Weil jede Menge An abzählbar ist, muß es für jede eine Funktion fn geben, die injektiv von An nach N zeigt, also jedem Element aus An eine Nummer zuordnet. Geben wir mal solche Funktionen für unsere Mengen von oben an: f0 = {(1, 1), (5, 2), (7, 4)}, f1 = {(2, 1), (3, 2), (4, 3), (5, 4)}, f2 = {(2, 2), (4, 4), (6, 6), . . . }, f3 = {(1, 1), (3, 2), (5, 3), (7, 4), (9, 5), (11, 6), . . . }, .... S Eine erste Idee auf der Suche nach g könnte es sein, alle fn in einen Topf zu werfen, also g = = n∈N fn zu bilden, d.h. hier g {(1, 1), (5, 2), (7, 4), (2, 1), (3, 2), (4, 3), (5, 4), (2, 2), . . . }. Das ist aus zwei Gründen problematisch. Schauen wir zunächst auf das erste Problem: g geht zwar von A aus, aber es ist keine Funktion mehr! So wird z.B. die 5 auf die 2, die 4, die 3 und eventuell auf weitere Zahlen abgebildet. Dieses Problem können wir wie folgt heilen: wir suchen für jedes Element x aus A nach den Mengen, in denen es c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 64 Mengen und das Unendliche vorkommt und bestimmen dann den kleinsten Index n dieser Mengen. Im Beispiel wäre das die 0 für 1, 5, 7, die 1 für 2, 3, 4 (nicht die 5!), die 2 für 6, 8, . . . , die 3 für 9, 11, . . . usw. Jetzt wollen wir mit dieser Regel in unser g nur alle Paare (x, fn(x)) aufnehmen. Beachten sie: für jedes x ∈ A gibt es jetzt genau ein solches Paar, also ist das neue g eine Funktion. Es bleibt aber noch das zweite Problem – schauen wir zunächst das neue g an: g = {(1, 1), (5, 2), (7, 4), (2, 1), (3, 2), (4, 3), (6, 6), (8, 8), . . . , (9, 5), (11, 6), . . . }. Offensichtlich ist dieses g nicht injektiv, z.B. wird die 1 zweimal getroffen (von der 1 und der 2). Wir können wir dieses Problem beseitigen? Wir können jedem x nicht nur den Funktionswert zuordnen, den er unter „seiner“ Funktion fn erhält, sondern auch noch den Index der Funktion fn, wir ordnen jedem x also ein Paar (n, fn(x)) zu, d.h. wir bilden eine Funktion g 0 = { (1, (0, 1)),(5, (0, 2)),(7, (0, 4)),(2, (1, 1)),(3, (1, 2)), . . . }. Jetzt werden die getroffenen „Werte“, die jetzt geordnete Paare sind, nur genau einmal getroffen! So werden die beiden Zahlen 1 und 2, die oben noch beide die 1 trafen, jetzt auf die Paare (0, 1) bzw. (1, 1) abgebildet – und das gilt natürlich immer: seien a1, a2 ∈ A mit a1 6= a2 und g 0(a1) = (n1, fn1 (a1)) und c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 65 Mengen und das Unendliche g 0(a2) = (n2, fn2 (a2)). Dann gilt entweder n1 6= n2 (und damit sind die Paare unterschiedlich) oder es gilt n1 = n2. Dann werden a1 und a2 aber von derselben Funktion fn1 mit einem Funktionswert versehen. Weil aber jedes fn injektiv ist, muß dann mit a1 6= a2 auch fn1 (a1) 6= fn1 (a2) gelten – also ist g 0 injektiv. Jetzt haben wir also eine injektive Abbildung gefunden, die jedes x ∈ A mit einem Paar aus N × N versorgt – wir wollen aber eine Funktion, die A nach N abbildet! Das ist aber kein wirkliches Problem: wir wissen schon, dass N × N sich bijekttiv (also auch injektiv!) nach N abbilden lässt, nämlich mit der Cantor’schen Paarungsfunktion π ! Die im Beweis angegebene Funktion g ist nichts anderes, als die Hintereinanderausführung von unserem gerade entwickelten g 0 und π , d.h. g = π ◦ g 0 d.d. g(x) = π(g 0(x)) = π(n, fn(x))7, wobei n eben der kleinste Index der Mengen ist, in denen x vorkommt. Das war’s – eigentlich ganz clever, oder? 7 Wir sind hier, wie auch bei er Einführung der Cantorschen Paarungsfunktion etwas lax in der Schreibweise, den wir machen aus einem geordneten Paar (a, b) einfach zwei Parameter a und b, aber das ist als vereinfachende Schreibweise völlig ok, solange keine Mißverständnisse entstehen können. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 66 Mengen und das Unendliche Forts. Abzählbarkeit Sind die rationalen Zahlen abzählbar? Satz 52. Q ist abzählbar. Beweis: Idee: Wir zerlegen Q in abzählbar viele abzählbare Teilmengen (und dann wenden wir einfach Satzes 51!) an!). Ausführung: Für q ∈ Q seien N (q) bzw. Z(q) Nenner bzw. Zähler des gekürzten Bruches |q|, wobei |q| = q für q ≥ 0 bzw. |q| = −q für q < 0. Wir setzen für n ∈ N An = {q ∈ Q|N (q) + Z(q) = n}. Dann ist jedes An abzählbar (sogar endlich!), und Q = n∈N An. Also ist Q abzählbar. S Veranschaulichung: Wie sehen die An aus? Z.B. ist A0 = {0}, A1 = {}, A2 = {1, −1}, A3 = {1/2, −1/2, 2, −2} usw. 8 0 Anmerkung: Hinter diesem Beweis steht die folgende Spiral-Aufzählung des Z2 -Gitters. Für n ∈ N setzen wir An 0 = {(a, b) ∈ R2 | |a| + |b| = n und |a|, |b| ≤ n}. Die Mengen An sind Quadrate im Raum R2 mit den Ecken (n, 0), (0, n), (−n, 0), (0, −n). 8A 1 ist leer, weil wir nur gekürzte Brüche betrachten und definieren wollen, dass 0 die gekürzte Variante für alle Brüche der Form 0/m steht. Wenn wir das nicht wollen, könnten wir auch 0 in jede Menge aufnehmen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 67 Mengen und das Unendliche Forts. Abzählbarkeit Sind die reellen Zahlen abzählbar? Zunächst ein wenig Vorbereitung: Definition 53. [Überabzählbare Mengen] Sei M eine Menge. M heißt überabzählbar, falls M nicht abzählbar ist. Anmerkungen – offenbar sind die folgenden Aussagen äquivalent: (i) M ist überabzählbar. (ii) non(|M | ≤ |N|), d.h. es existiert kein injektives f : M → N. (iii) Es existiert kein surjektives f : N → M (iv) |N| < |M |. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 68 Mengen und das Unendliche Forts. Abzählbarkeit der reellen Zahlen? Satz 54. [Satz von C ANTOR über die Überabzählbarkeit der reellen Zahlen] Die Menge R der reellen Zahlen ist überabzählbar. Beweis: Es genügt zu zeigen: Es existiert kein surjektives f : N → R. Sei hierzu f : N → R beliebig. Wir finden ein x ∈ R mit x 6∈ rng(f ) wie folgt. Für n ∈ N schreiben wir f (n) in kanonischer unendlicher Dezimaldarstellung (mit 0 = 0, 0000 . . . ). Sei also f (0) = z0, a0,0a0,1a0,2 . . . f (1) = z1, a1,0a1,1a1,2 . . . f (2) = z2, a2,0a2,1a2,2 . . . f (3) = z3, a3,0a3,1a3,2 . . . ... f (n) = zn, an,0an,1an,2 . . . ... c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 69 Mengen und das Unendliche Wir definieren x = 0, b0b1b2 · · · ∈ R durch ( bn = 1, falls an,n = 2, 2, falls an,n 6= 2. Dann ist x in kanonischer Dezimaldarstellung (also eine reele Zahl), die sich aber von jeder Zahl im Range von f an mindestens einer Stelle unterscheidet, denn für jedes f (n) gilt, an,n 6= bn – also wird nicht jedes Element von R getroffen, d.h., f ist nicht surjektiv, da x 6∈ rng(f )! Diese Beweismethode heißt Diagonalisierung, weil wir eine Zahl konstruiert haben, die von Ziffern auf der Diagonale der angenommenen Tabelle abweicht. Merken sie sich: es geht darum, eine Zahl (oder später auch etwas anderes) zu konstruieren, die nicht im Range einer vermeintlich surjektiven Funktion liegen kann. Korollar 55. [Jedes reelle Intervall ist überabzählbar] Seien x, y ∈ R, x < y . Dann ist ]x, y[= {z ∈ R|x < z < y} überabzählbar. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 70 Mengen und das Unendliche Weitere Resultate zur Überabzählbarkeit Satz 56. [Subtraktion abzählbarer Mengen] Sei M eine überabzählbare Menge. Weiter sei A ⊆ M abzählbar. Dann gilt |M − A| = |M |. Satz 57. Es gilt |R| = |P(N)|. Satz 58. [Satz von C ANTOR über die Potenzmengen] Sei M eine Menge und P(M ) = {X|X ⊆ M } die Potenzmenge von M . Dann gilt |M | < |P(M )|. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 71 Mengen und das Unendliche Exkurs: Das Kontinuumsproblem Cantors Kontinuumsproblem: Folgen die reellen Zahlen in der Hierarchie der Mächtigkeiten unmittelbar nach den natürlichen Zahlen oder gibt es eine Menge M , für die gilt |N| < |M | < |R|? H ILBERT (ein berühmter Mathematiker, der lange in Göttingen lebte und lehrte und 1900 auf einem Mathematiker-Kongress in Paris eine berühmte Rede hielt, in der er eine Liste mit den 23 seiner Ansicht nach wichtigsten Problemen, die die Mathematik im nächsten Jahrhundert lösen sollte, formulierte) stellte das Kontinuumsproblem an den Anfang seiner Liste! Es wurde erst 1938 (K URT G ÖDEL) bzw. 1963 (PAUL C OHEN) gelöst - und zwar durch den Beweis seiner Unlösbarkeit! (trotzdem beschäftigen sich Mathematiker auch heute noch intensiv mit verwandten Fragestellungen - wir aber in dieser Veranstaltung nicht) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 72 Mengen und das Unendliche Ordnungen Definition 59. [Lineare Ordnung] Sei M eine Menge und sei < ⊆ M × M eine zweistellige Relation auf M . < heißt lineare Ordnung auf M , falls für alle a, b, c ∈ M gilt: (i) non(a < a) (Irreflexivität) (ii) aus a < b und b < c folgt a < c (Transitivität) (ii) a < b oder a = b oder b < a (Linearität) Beispiele: (N, <) etc. Anmerkung: Relationen, die irreflexiv und transitiv sind, heißen auch partielle Ordnungen (d.h., alle linearen Ordnungen sind auch partiell, aber nicht umgekehrt). Beispiele s. Übungen. Zur Sprechweise: Ist X ⊆ M und s ∈ M , so bedeutet X < s, dass x < s für alle x ∈ X . Analog sind X ≤ s, s < X und s ≤ X definiert. s heißt <-kleinstes Element der Ordnung, falls s ≤ M . Analog ist das <-größte Element definiert. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 73 Mengen und das Unendliche Wohlordnungen Definition 60. [Wohlordnung] Sei (M, <) eine lineare Ordnung. (M, <) heißt Wohlordnung auf M , falls jede nichtleere Teilmenge M 0 von M ein <-kleinstes Element hat, d.h. es gibt ein m ∈ M mit m ∈ M 0 und m ≤ x für alle x ∈ M 0. (R, <) ist keine Wohlordnung, z.B. ist 0 die kleinste untere Schranke für die Menge M 0 = {1/n|n ∈ N, n > 1} ⊆ R, aber 0 6∈ M 0. Bemerkung: Es gilt der folgende Wohlordnungssatz von Z ERMELO: Sei M eine Menge, dann existiert eine Wohlordnung < auf M . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 74 Mengen und das Unendliche Beweis des Induktionsprinzips Induktionsprinzip: Sei E(n) eine Aussage. Es gelte: (1) E(0) (2) Für alle n ∈ N gilt: aus E(n) folgt E(n + 1) Dann gilt E(n) für alle n ∈ N. Beweisbar in der Mengenlehre (hier durch Widerspruch): Angenommen, es gibt l ∈ N mit non E(l), d.h. die Eigenschaft gilt nicht für dieses l. Dann ist A = {l ∈ N| non E(l)} 6= ∅. Da (N, <) wohlgeordnet ist, hat A ein kleinstes Element k, d.h. die Wohlordnungseigenschaft garantiert uns, dass wir ein konkretes Element aus der Menge A „in die Hand“ nehmen können. Nach (1) ist k 6= 0, denn sonst wäre die Eigenschaft ja erfüllt. Sei also k = m + 1 – ein solches m aus N existiert immer, denn k ist ja größer als 0 und zu jedem Element n aus N − {0} gibt es einen Nachfolger n + 1. Nach Definition von A und k gilt E(m), denn m muss ausserhalb von A liegen, c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 75 Mengen und das Unendliche sonst könnte k nicht das kleinste Element aus N sein, für das die Aussage nicht erfüllt ist. Nach (2) folgt aus E(m) aber E(m + 1), also E(k) wg. m + 1 = k im Widerspruch zur Annahme, dass k ∈ A, es gibt also keine kleineste Element in A und damit gar kein Element, also kann es auch kein l ∈ N geben, für das die Aussage nicht gilt! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 76 Mengen und das Unendliche Ein Paradox droht! Erinnern Sie sich an unseren Barbier! Hier eine Variante – das RUSSELL Z ERMELO ’ SCHE PARADOX: Sei R = {x ist eine Menge und x 6∈ x} die Menge aller Mengen, die nicht Element von sich selbst sind. Dann gilt für alle Mengen y : y ∈ R gdw. y 6∈ y . Insbesondere gilt dies auch für y = R. Dies ergibt aber R ∈ R gdw. R 6∈ R. Widerspruch! Eine „Lösung“ ist, solche selbst-referentiellen Konstrukte nicht zuzulassen in der Formulierung von Eigenschaften – man kann dann R nicht mehr als „Ganzes“ im Sinne der Mengenlehre betrachten (dies passt zu der Definition C ANTORS, die wir zu Beginn gesehen haben: Eine Menge ist jede Vielheit, die als Ganzes aufgefasst werden kann, sie sagt nicht etwa, dass jede Vielheit als Ganzes aufgefasst werden kann. Wir werden im folgenden sehr knapp eine Axiomatisierung („gesetzte“ Regeln) der Mengenlehre betrachten, die die Paradoxien vermeidet – und zwar nicht durch Verbote, sondern durch Konstruktionsvorschriften „von unten“, die sicher stellen, das selbst-referentielle Paradoxien nicht auftreten können). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 77 Mengen und das Unendliche Axiomatische Mengenlehre Alle Objekte sind Mengen und die einzigen Grundrelationen zwischen Mengen sind die Gleichheit „a = b“ und die Elementbeziehung „a ∈ b“. F RAENKEL (1928): „Dieser Aufbau der Mengenlehre verläuft nach der sog. axiomatischen Methode, die vom historischen Bestand einer Wissenschaft (hier der Mengenlehre) ausgeht, um durch logische Analyse der darin enthaltenen Begriffe, Methoden und Beweise die zu ihrer Begründung erforderlichen Prinzipien – die Axiome – aufzusuchen und aus ihnen die Wissenschaft deduktiv herzuleiten. . . . “ c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 78 Mengen und das Unendliche Axiome der Mengenlehre – die ZFC-Axiome Extensionalitätsaxiom (EXT): Zwei Mengen sind genau dann gleich, wenn sie die gleichen Elemente haben. Existenz der leeren Menge (LM): Es existiert eine Menge, welche keine Elemente hat. Paarmengenaxiom (PA): Zu je zwei Mengen x, y existiert eine Menge z , die genau x und y als Elemente hat. Vereinigungsmengenaxiom (VER): Zu jeder Menge x existiert eine Menge y , deren Elemente genau die Elemente der Elemente von x sind.9 Aussonderungsschema (AUS): Zu jeder Eigenschaft E und jeder Menge x gibt es eine Menge y , die genau die Elemente von x enthält, auf die E zutrifft.10 9 Bedenken Sie, dass unsere Objekte alle Mengen sind. Hier geht es also um eine Menge y , die die Elemente der Mengen, die in x enthalten sind – wie bei einer Vereinigung über die Mengen eines Mengensystems, s. Def. 11. 10 Beachten Sie: Dieses Schema „generiert“ unendlich viele Axiome, eines pro Eigenschaft, deshalb ist ein sog. Axiomenschema! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 79 Mengen und das Unendliche Unendlichkeitsaxiom (UN: Es existiert eine Menge x, die die leere Menge als Element enthält und die mit jedem ihrer Elemente y auf {y} als Element enthält. (Also sind z.B. ∅, {∅}, {{∅}}, . . . Elemente von x). Natürliche Zahlen: Sei E(u) die Eigenschaft „∅ ∈ u und mit jedem y ∈ u ist auch {y} ∈ u.“. Wir setzen U = {u ∈ P(x)|E(u) (das ist das x aus dem Axiom). U existiert nach POT und AUS und besteht aus allen Teilmengen von x, die ∅, {∅}, . . . enthalten. Insbesondere ist x ∈ U . Wir definierten nun: Z0 = U . Dann besteht Z0 genau aus den Mengen ∅, {∅}, . . . und jede Menge x0 aus dem Unendlichkeitsaxiom enthält Z0 als Teilmenge (Z0 ist die kleinste unendliche Menge). T Z0 kann man als Menge der natürlichen Zahlen auffassen: 0 = ∅, 1 = {∅}, 2 = {{∅}}, 3 = {{{∅}}} . . . , also 0 = ∅, 1 = {0}, 2 = {1}, 3 = {2}, . . . Aus der Definition der Ordinalzahlen nach von N EUMANN und Z ERMELO folgt eine andere Definition der natürlichen Zahlen (beides geht!): 0 = ∅, 1 = {0}, 2 = {0, 1}, 3 = {0, 1, 2}, . . . Hier hat jedes n genau n Elemente und die ∈-Relation ordnet die natürlichen Zahlen linear (jede Zahl ist hier eine Menge, die in allen größeren Zahlen als Element c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 80 Mengen und das Unendliche vorkommt). Potenzmengenaxiom (POT): Zu jeder Menge x existiert eine Menge y , die genau die Teilmengen von x als Elemente besitzt. Ersetzungsschema (ERS): Zu jeder funktionalen Eigenschaft E und jeder Menge M existiert eine Menge N , die genau diejenigen y als Elemente enthält, für welche ein x ∈ M existiert mit E(x, y). [Funktionale Eigenschaft: Ist E(x, y) eine Eigenschaft in zwei Variablen x und y , so heißt E(x, y) funktional, falls es für jedes x genau ein y gibt mit E(x, y).] Fundierungsaxiom (FUN): Jede nichtleere Menge x hat ein Element y , das mit x kein Element gemeinsam hat. Auswahlaxiom (AC): Ist x eine Menge, deren Elemente nichtleer und paarweise disjunkt sind, so existiert eine Menge y , die mit jedem Element von x genau ein Element gemeinsam hat. Diese Axiome bilden die sogenannten ZFC-Axiome (Zermelo-Fraenkel-Choice). Verschiedene Auswahlen aus diesen Axiomen wurden auch benannt: Z = ZFC ohne ERS, FUN, AC; ZF = ZFC ohne AC; ZFC− = ZFC ohne POT; ZF− = ZF ohne POT. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 81 Mengen und das Unendliche ZFC und die Antinomien In ZFC lösen sich die Antinomien auf: Für alle x existiert ein y ⊆ x mit y 6∈ x (Satz nach Z ERMELO, 1908). Beweis: Sei x beliebig. Nach dem Aussonderungsschema existiert y = {z ∈ x|z 6∈ z}. Dann gilt y 6∈ x, denn anderenfalls hätten wir y ∈ y gdw. y 6∈ y – ein Widerspruch wie bei der RUSSELL -Z ERMELO-Paradoxie! Daraus folgt z.B. unmittelbar, dass es kein x gibt mit der Eigenschaft: Für alle y ist y ∈ x (denn ein solches x würde alle seine Teilmengen als Elemente enthalten, im Widerspruch zum eben gezeigten Satz). Ende des Mengenlehre-Kapitels! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 82 Von Sprachen und Automaten Sprachen, Grammatiken und Automaten: Von regulären Sprachen über XML zu Turing [ACHTUNG: Dieser Teil hat noch reichlich Lücken, manches, vor allem zeichnungsintensives, werden wir direkt auf Folien schreiben und nicht in diesem Foliensatz erfassen] Literatur: • U. Hedtstück, FH Konstanz: Einführung in die Theoretische Informatik, Oldenbourg, 2. Auflage, 2004 • Wo uns der Tiefgang nicht ausreicht, werden wir z.B. auf Michael Sipser zurückgreifen. • Wir werden auch einige Aspekte durch Bezug zu weiterer Literatur erläutern, z.B. zu den XML-Schema-Standards des W3C. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 83 Von Sprachen und Automaten Überblick • • • • • • Formale Sprachen Grammatiken Endliche Automaten und reguläre Sprachen Kellerautomaten und kontextfreie Sprachen Exkurs: XML und Konsorten Turingmaschinen/Komplexitätsklassen In THI B werden wir uns dann, aufbauend auf dem Abschnitt über Turingmaschinen, mit NP-vollständigen Problemen, Approximationen, Heuristiken und Randomisierung beschäftigen (ein super-spannendes, aktuelles und sehr anwendungsrelevantes Thema, wenn man harten Problemen zu Leibe rücken möchte). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 84 Von Sprachen und Automaten Warum? „Mit Ergebnissen der Theoretischen Informatik sollen neue Wege erschlossen und qualitative Fortschritte in der praktischen Informatik erzielt werden, die einen grundlegenden Schritt nach vorn bedeuten.“ Ulrich Hedtstück Zu formalen Sprachen und Automaten sagt er folgendes: • Sollte zum Standardwissen jedes Informatikers (und jeder Informatikerin) gehören • Grundlage des Compilerbaus, der Verarbeitung natürlicher Sprache und aller Softwaretechniken, die das automatische Verarbeiten von formalen Objekten zum Inhalt haben c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 85 Von Sprachen und Automaten Warum? Vor allem ist das Gebiet aber eine schöne Denkschule: • die Begriffe sind klar definiert, • die Resultate logisch, • die Beweise der Resultate oft elegant – so zu denken und von präzise zu fassenden Modellen mittels logischer Schlußweisen zu klaren Ergebnissen zu kommen, hilft bei jedem Problemlösen! (auch wenn es mit der Präzision, z.B. der Spezifikation, oft ein wenig hapert, die Aufgabe bleibt: machen sie auf überzeugende Weise das Beste draus – und dabei kann ihnen die skizzierte Vorgehensweise sehr helfen) Zudem bildet die Automatentheorie, insbesondere die Turingmaschinen, die Grundlage für die Einordnung von Problemen in Schwierigkeitsklassen (Komplexitätsklassen) – und die daraus folgenden Bemühungen um Heuristiken, Approximationen und die Identifikation von Klassen effizient lösbarer Probleminstanzen – ein wichtiges aktuelles Forschungsgebiet der Algorithmik (s. THIB)! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 86 Von Sprachen und Automaten Relation zum Compilerbau Quellprogramm ⇓ Folge von Token ⇓ Ableitungsbaum ⇓ Zielprogramm ⇓ Optimiertes Zielprogramm SCANNER: PARSER: lexikalische Analyse SCANNER syntaktische Analyse PARSER semantische Analyse, Codegenerierung Codeoptimierung Formalismus: reguläre Sprachen Algorithmus: endliche Automaten Formalismus: kontextfreie Sprachen Algorithmus: Kellerautomaten c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 87 Von Sprachen und Automaten: Formale Sprachen Formale Sprachen: Überblick • Buchstaben, Wörter, Sprachen • Klassen von unendlichen Sprachen – Abzählbare Sprachen – Aufzählbare Sprachen – Entscheidbare Sprachen c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 88 Von Sprachen und Automaten: Formale Sprachen Formale Sprachen • Problem (?) natürlicher Sprache: Mehrdeutigkeit! • Es gibt zwar gute Regelwerke für die grammatikalische Korrektheit (Syntax) von einzelnen Sätzen • . . . aber die Bedeutung (Semantik) eines Satzes bzw. Textes lässt sich nur ansatzweise mit formalen Methoden erfassen (sagt Hedtstück) Öffne die Datei mit dem Editor – Attribut oder adverbiale Bestimmung? Formale Sprachen, wie z.B. Programmiersprachen: mit einer relativ kleinen Menge von syntaktischen Regeln können “Programme” erzeugt werden, die eine Semantik aufweisen, die von Rechnern (weitgehend) verstanden wird. Wir werden uns nun mit den Grundlagen der automatischen Verarbeitung von formalen Sprachen beschäftigen und hauptsächlich syntaktische Aspekte berücksichtigen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 89 Von Sprachen und Automaten: Formale Sprachen Buchstaben, Wörter, Sprachen Definition 1. [Alphabet, Wort, Sprache] Ein Alphabet ist eine endliche, nichtleere Menge von Zeichen (auch Symbole oder Buchstaben genannt), abgekürzt mit V (für vocabulary). Beispiel: V = {0, 1}. Sei V ein Alphabet und k ∈ N = {0, 1, . . . }. Eine endliche Folge (x1, . . . , xk ) von Zeichen, also xi ∈ V für 1 ≤ i ≤ k, heißt Wort über V der Länge k. Es gibt genau ein Wort der Länge 0, das Leerwort, das wir mit bezeichnen. Die Länge eines Wortes x wird mit |x| bezeichnet. Beispiel: x = (0, 0, 1, 1, 0), |x| = 5. Wir verwenden, wann immer es das Alphabet erlaubt, die Kurzschreibweise x1x2x3 . . . xk . Beispiel: x = 00110 (geht z.B. nicht bei V = {0, 1, 01}!) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 90 Von Sprachen und Automaten: Formale Sprachen V ∗ bezeichnet die Menge aller Wörter über V . Beispiel: V ∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }. Die Menge der nicht-leeren Wörter über V ist V + = V ∗\{}. Beispiel: V + = {0, 1, 00, 01, 10, 11, 000, . . . }. Jede (beliebige) Teilmenge L ⊆ V ∗ wird als Sprache oder formale Sprache bezeichnet. WICHTIG: es gibt nur endlich viele Zeichen, aber unendlich viele Worte, und also auch unendlich viele Sprachen (schon über einem Alphabet)! Frage: Ist die Menge der Worte über einem Alphabet abzählbar? Frage: Ist die Menge der Sprachen zu einem Alphabet abzählbar? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 91 Von Sprachen und Automaten: Formale Sprachen Formale Sprachen: Verkettung Die wichtigste Operation für Wörter ist das Hintereinanderhängen von Wörtern, also die Verkettung: Definition 61. [Verkettung] Sei V ein Alphabet. Die Verkettung oder Konkatenation von Wörtern x, y ∈ V ∗ ergbit ein neues Wort xy , wobei gilt: | {z } | {z } xi, yj ∈ V xy = x1 . . . xk y1 . . . yk x y | {z } Wir verwenden die Abkürzung wn = w . . . w w ∈ V∗ n−mal Dabei gilt: • w0 = c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 92 Von Sprachen und Automaten: Formale Sprachen • w = w = w für alle w ∈ V ∗ (insbesondere also = ). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 93 Von Sprachen und Automaten: Formale Sprachen Formale Sprachen: Beispiele 1. V = {0, 1}, L sei die Menge aller vorzeichenlosen Binärzahlen ohne führende Nullen, also L = {0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, . . . }. 2. V = {0, 1, . . . , 9}, geeignet für natürliche Zahlen in Dezimaldarstellung. 3. V = {a, b, c, . . . , z}. 4. V = Menge der Worteinträge eines Lexikons. Z.B. bildet die Menge der Einträge im Duden ein Alphabet (jetzt paßt auch das V für vocabulary endlich mal . . . ). Aus diesem Alphabet kann man Sätze bauen, über die Korrektheit von Sätzen kann dann mit Hilfe von Grammatiken entschieden werden. 5. V = ASCII oder UNICODE zur Formulierung von Programmen. Man unterscheidet zwei Betrachtungsebenen: Eingabesymbole (in C: Schlüsselwörter, Bezeichner, Literale, Operatoren und Begrenzer) – und diese darf man dann gemäß einer Grammatik arrangieren: 6. V = Menge der Eingabesymbole einer Programmiersprache. Vorsicht: diese Menge ist nur endlich, weil es Längenbegrenzungen für die Eingabesymbole gibt! Auf dieser zweiten Stufe sind Programme nun Wörter von Eingabesymbolen. Als c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 94 Von Sprachen und Automaten: Formale Sprachen Programmiersprache kann man die Menge aller endlichen Folgen von Eingabesymbolen, die ein korrektes Programm darstellen (Grammatiken bestimmen die Korrektheit, s. weiter hinten) ansehen. Beispiel: while (x3 < 100) x3 += 1; ist ein Teilwort eines Programms bestehend aus den Eingabesymbolen while (Schlüsselwort), ( (Begrenzer), x3 (Bezeichner), < (Operator), 100 (Literal) usw. (die White-Spaces ignorieren wir für den Moment). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 95 Von Sprachen und Automaten: Formale Sprachen Klassen von unendlichen Sprachen Die Menge aller Wörter V ∗ über einem Alphabet V ist immer unendlich. • V ∗ ist selbst eine (unendliche) Sprache. • Wir wissen schon aus dem Mengenlehreteil, dass es auch im Unendlichen noch (Größen-)Unterschiede gibt. • Zu abzählbar und überabzählbar kommen jetzt noch weitere Begriffe, nämlich aufzählbar und entscheidbar hinzu, die uns die Verbindung zu algorithmischen Fragestellungen erlauben. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 96 Von Sprachen und Automaten: Formale Sprachen Abzählbarkeit von Sprachen? Siehe Definition 46! Zur Erinnerung: eine Menge M ist abzählbar, wenn sie entweder endlich ist, oder wir eine Bijektion f von M in die natürlichen Zahlen finden können (oder von N nach M , wie sie wollen), d.h. man kann die Elemente von M mit den natürlichen Zahlen durchnummerieren. Sprachen sind natürlich auch bloß Mengen! Übrigens kann man das obige auch ausdrücken, indem man sagt, dass M abzählbar ist, wenn es eine Surjektion von N in M gibt oder wenn M = ∅. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 97 Von Sprachen und Automaten: Formale Sprachen Überabzählbarkeit Wie wir schon wissen, ist eine Menge überabzählbar, wenn sie nicht abzählbar ist, z.B. die Menge der reellen Zahlen. Anstelle des Diagonalbeweises, den wir schon gesehen haben, wollen wir als Lockerungsübung die Überabzählbarkeit des Intervalls [0, 1] ⊂ R indirekt beweisen: Beweis: • Angenommen, wir könnten die reellen Zahlen im Einheitsintervall abzählen, also von r1, r2 usw. sprechen (wir zählen aus Anschaulichkeitsgründen von 1 an). • Dann ordnen wir jedem rk ein Intervall ik von reellen Zahlen mit der Breite 1k zu, 10 und zwar so, dass es vollständig im Einheitsintervall liegt (das geht klarerweise immer) und rk in ihm enthalten ist. • Da das Einheitsintervall die Breite 1 hat und die rellen Zahlen das Einheitsintervall lückenlos überdecken und jedes zugeordnete Intervall nicht-leer und im Einheitsintervall ist, müsste die Summe S der Breiten der Intervalle mindesten 1 ergeben. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 98 Von Sprachen und Automaten: Formale Sprachen • Es gilt aber natürlich: S= 1 1 1 1 + 2 + + 3 + · · · = 0, 1 + 0, 01 + 0, 001 + · · · = 0, 111 · · · = 10 10 10 9 (der Beweis macht ein paar Voraussetzungen, z.B. die Lückenlosigkeit der reellen Zahlen, die man für den Diagonalbeweis nicht braucht, deshalb ist der ein wenig schöner) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 99 Von Sprachen und Automaten: Formale Sprachen Abzählbarkeit von Sprachen Satz 62. Die Menge V ∗ aller Wörter über einem Alphabet V ist abzählbar. Beweis: Sei V = {x1, . . . , xn}. • Wir definieren auf V eine Ordnungsrelation und nehmen ohne Beschränkung der Allgemeinheit an, dass x1 x2 · · · xn gelte. • Wir ordnen die Menge V ∗ der Wörter über V zunächst der Länge nach, beginnend beim kürzesten Wort . • Bei gleicher Länge ordnen wir die Wörter lexikographisch, d.h. zunächst bestimmt das erste Zeichen des Wortes die Reihenfolge, bei gleichem ersten Zeichen kommt es auf das zweite Zeichen an usw. (wie im Telefonbuch). • Damit haben wir aber schon eine Reihenfolge (=Abzählung) aller Wörter in V ∗ festgelegt, also eine Bijektion gefunden! (Beispiel für V = {a, b} in ihrem Mitschrieb) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 100 Von Sprachen und Automaten: Formale Sprachen Abzählbarkeit von Sprachen Satz 63. Jede Teilmenge einer abzählbaren Menge ist abzählbar. Beweis: Übung. Insgesamt ist also jede Sprache L ⊆ V ∗ über einem Alphabet V abzählbar! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 101 Von Sprachen und Automaten: Formale Sprachen Aufzählbare Sprachen Eine noch etwas grobe Definition: Ein algorithmisches Verfahren oder ein Algorithmus ist eine Vorschrift, gegeben durch eine endliche Menge von Regeln, die ein bestimmtes Problem löst: abhängig von Eingaben aus einer vorgegebenen Menge soll schrittweise eine Ausgabe in einer bestimmten Form geliefert werden. Wir dürfen uns hier unter Algorithmus ein Computerprogramm (z.B. in C oder Java) vorstellen. Gemäß der Church’schen These (die auch manchmal Church-TuringThese genannt wird) sind alle im intuitiven Sinne algorithmischen Verfahren durch Computerprogramme modellierbar (wir untersuchen das später noch genauer). In Kurzform: Was machbar ist, können sie auch mit ihrer Lieblingsprogrammiersprache formulieren! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 102 Von Sprachen und Automaten: Formale Sprachen Aufzählbare Sprachen Im Rechner kann man diejenigen abzählbaren Sprachen verarbeiten, deren Elemente durch ein Konstruktionsverfahren erzeugt werden können!11 Definition 64. [Aufzählbarkeit] Eine Menge M ist aufzählbar (auch rekursiv aufzählbar oder semientscheidbar), falls es eine surjektive Funktion f : N → M und einen Algorithmus gibt, der es gestattet, für jedes n ∈ N den Funktionswert f (n) zu berechnen (oder, falls M = ∅). Die Folge f (0), f (1), f (2), . . . heißt Aufzählung von M . 11 Nun, wenn man das “Nachdenken” über die Konzepte Abzählbarkeit usw. in geigneter Form im Computer abbildet, dann ist das natürlich auch eine Form des (Meta-)Verarbeitens, das ist aber hier nicht gemeint, es geht unmittelbarer um die Wörter der Sprache usw. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 103 Von Sprachen und Automaten: Formale Sprachen Aufzählbare Sprachen Da Sprachen Mengen sind, spricht man entsprechend von aufzählbaren Sprachen. Satz 65. Jede endliche Menge ist aufzählbar. Beweis: Sei M = {m0, . . . , mn} eine endliche Menge. Ein Programm zur Aufzählung von M kann nach dem folgenden Prinzip realisiert werden: • Abhängig vom Eingabeparameter n ∈ N wird mit Hilfe geeigneter Fallunterscheidungen für n < k das Ergebnis f (n) = mn zurückgegeben. • Für n ≥ k wird generell mk als Ergebnis gewählt. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 104 Von Sprachen und Automaten: Formale Sprachen Aufzählbare Sprachen Satz 66. Sei V ein Alphabet. Dann ist die Menge V ∗ aller Wörter über V aufzählbar. Beweis: • Erzeuge , dann die Wörter der Länge 1, dann die Wörter der Länge 2 usw., bei gleicher Länge in lexikographischer Reihenfolge. • Für beliebiges n ∈ N ergibt sich f (n) aus dem n-ten Schritt dieses Verfahrens, das leicht als Programm realisiert werden kann (aber nie endet . . . ) Jede aufzählbare Menge ist natürlich auch abzählbar. Es gibt abzählbare Sprachen, die nicht aufzählbar sind! (Wir werden uns aber meist nur für aufzählbare Sprachen interessieren) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 105 Von Sprachen und Automaten: Formale Sprachen Entscheidbare Sprachen Seien eine Sprache L über einem Alphabet V und ein Aufzählverfahren AL für diese Sprache gegeben. • Für ein Wort w ∈ L kann man immer in endlich vielen Schritten nachweisen, dass es tatsächlich zur Sprache gehört (wir erzeugen einfach mit AL solange, beginnend mit n = 1, die Worte f (n), bis w gefunden wurde). • Aber das ist natürlich reichlich unspannend! Wir wollen nämlich meistens für ein Wort w aus V ∗ wissen, ob es zur Sprache gehört. • Das geht aber mit AL nur noch dann erfolgreich, wenn w tatsächlich zu L gehört (oder L endlich ist): denn für ein w 6∈ L gibt es kein passendes n ∈ N, also rechnet unser Verfahren unendlich lang ohne Resultat. • Besonders schlimm: wenn wir schon sehr lange gerechnet haben, wissen wir nicht, ob das Wort doch noch vorkommt, oder ob es eben nicht in L ist. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 106 Von Sprachen und Automaten: Formale Sprachen Endscheidbare Sprachen • Wir hätten nun gern ein Verfahren, dass nach endlich vielen Schritten sagt, ob ein Wort w ∈ V ∗ Element der Sprache L ist oder nicht. • Ein solches Verfahren antwortet auf die Frage “w ∈ L?” immer mit JA oder NEIN – es heißt deshalb auch Entscheidungsverfahren. • Z.B. will man beim Übersetzen eines Programmes zunächst einmal wissen, ob die Eingabe überhaupt ein zulässiges (also syntaktisch korrektes) Programm ist. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 107 Von Sprachen und Automaten: Formale Sprachen Endscheidbare Sprachen Definition 67. [Entscheidbarkeit] Gegeben sei ein Alphabet V . Eine Sprache L ⊆ V ∗ heißt entscheidbar, falls es einen abbrechenden Algorithmus, Entscheidungsverfahren genannt, gibt, der für jedes w ∈ V ∗ feststellt, ob w ∈ L oder w 6∈ L. Beispiel: V = {a}. Sei L ⊆ V ∗ gegeben durch L = {a2n|n ∈ N}. L besteht aus allen a-Folgen mit gerader Länge. Ein Entscheidungsverfahren für L kann wie folgt entwickelt werden: Sei w ∈ V ∗ beliebig gegeben. Streiche in w immer zwei a heraus, solange dies geht. Bleibt kein a übrig, gilt w ∈ L, anderenfalls gilt w 6∈ L. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 108 Von Sprachen und Automaten: Formale Sprachen Endscheidbare Sprachen Natürlich ist jede endliche Sprache entscheidbar (Lege eine Liste der Worte der Sprache an und suche darin nach w). Satz 68. Jede entscheidbare Sprache ist aufzählbar. Beweis: Sei V ein Alphabet und L ⊆ V ∗ entscheidbar. • Zähle V ∗ auf und entscheide mit dem nach Voraussetzung gegebenen Entscheidungsverfahren für jedes bei der Aufzählung erzeugte w ∈ V ∗, ob w ∈ L oder w 6∈ L. • Übergeht man alle w mit w 6∈ L, so erhält man eine Aufzählung für L. Die Umkehrung gilt nicht generell! Die Schwierigkeit machen die Wörter, die nicht in der Sprache liegen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 109 Von Sprachen und Automaten: Formale Sprachen Endscheidbare Sprachen Ein Beispiel für eine aufzählbare, aber nicht entscheidbare Sprache haben wir schon gesehen, nämlich in der ersten Veranstaltung: das Halteproblem! L = {xy | x ist ein Programm, y ist eine Eingabe, und x stoppt bei der Eingabe y nach endlich vielen Schritten } Es gibt also keinen allgemein verwendbaren Algorithmus, der für ein beliebiges Programm und eine beliebige Eingabe entscheidet, ob das Programm für die Eingabe stoppt oder nicht! Warum nicht? Übung! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 110 Von Sprachen und Automaten: Formale Sprachen Zusammenfassung Entscheidbare Sprachen ⊂ aufzählbare Sprachen ⊂ abzählbare Sprachen Noch einige Überlegungen zu den Fähigkeiten der Computer: • Computerprogramme sind endliche Folgen von (endlichen) Zeichen. • Sie können als Wörter über einem Alphabet aufgefasst werden. • Sprachen sind immer abzählbar, es gibt also nur abzählbar viele Computerprogramme • Jedes Programm löst in einem gewissen Sinn ein Problem. • Es können also nur abzählbar viele Probleme durch Programme (und überhaupt?!) gelöst werden • dies ist ein verschwindend geringer Anteil, denn es gibt überabzählbar viele Probleme! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 111 Von Sprachen und Automaten: Formale Sprachen Zusammenfassung Formal kann man sich z.B. überlegen, Probleme mit Funktionen zu identifizieren. • Beschränken wir uns für eine Sekunde auf Funktionen von N nach N (also auf abzählbaren Mengen). • Wieviel verschiedene Funktionen gibt es? Vereinfachen wir die Fragestellung noch ein wenig: wieviele mögliche Ranges für Funktionen gibt es? • Das sind natürlich alle Teilmengen von N (ohne die leere Menge), also |2N| − 1. Das entspricht der Mächtigkeit von R! (das sind also schon überabzählbar viele). • Und jetzt kommen noch die Permutationen bei der Abbildung “von links” hinzu, d.h. mal wird a von 1 aus getroffen, mal von 2 usw., es wird also noch mal deutlich mehr . . . • Nur einen Bruchteil hiervon können wir realisieren! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 112 Von Sprachen und Automaten: Formale Sprachen Zusammenfassung Um eine Vorstellung von diesem Bruchteil zu bekommen, betrachten wir die rationalen und die reellen Zahlen im Einheitsintervall: • Es gibt abzählbar viele rationale Zahlen, insbesondere im Einheitsintervall [0, 1] ⊂ R. • Wir nummerieren die rationalen Zahlen und ordnen jeder rationale Zahl qk ein Intervall der Breite k (wir zählen wieder beginnend mit 1). 10 1 • S = 10 + 102 + · · · + = ( 10 + 1012 + . . . ) = 9 . • Für gegen 0 geht der Grenzwert dieser (existierenden!) Folge auch gegen 0! • Die reellen Zahlen im Einheitsintervall überdecken den Zahlenstrahl aber auf der Länge 1! • ... also ist der Anteil der rationalen Zahlen am Zahlenstrahl (also an den reellen Zahlen) ganz schön klein! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 113 Von Sprachen und Automaten: Formale Sprachen Zusammenfassung Problem: Wir wollen eine Testsoftware entwickeln, die für jedes Computerprogramm die Korrektheit prüft. Hier ist nicht die syntaktsiche Korrektheit gemeint, sondern Korrektheit in dem Sinne, dass das Programm für jede Eingabe die gewünschte Ausgabe liefert. Eine solche Überprüfung wird auch Programmverifikation genannt. Natürlich müssten hier auch ev. vorhandene Endlos-Schleifen bzw. EndlosRekursionen entdeckt werden ... das wir das nicht im allgemeinen Fall können, wissen wir aber bereits: wir hätten das Halteproblem gelöst! Also kann es einen solchen allgemeinen Verifizierer, so schön er wäre, nicht geben! (Aber für bestimmte Spezialklassen von Problemen und zugehörigen Formalismen geht das schon ...) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 114 Grammatiken Grammatiken “Typische” Programmiersprache: Kleine (natürlich endliche) Anzahl von Schlüsselwörtern. • Verarbeitung/Erkennen der Schlüsselwörter leicht durch eine Liste (die Sprache “Schlüsselwörter” wird also explizit durch ihre Elemente angegeben, d.h. ihre Extension wird aufgeschrieben, vgl. Mengenlehre). Endliche Menge von Bezeichnern (weil nur z.B. die ersten 31 Stellen relevant sind). • Bei 31 Stellen, 26 Buchstaben groß und klein, und den zehn Dezimalziffern: 53 ∗ 6330 Bezeichner (hier in C) möglich – Erkennen gültiger Bezeichner per Liste nicht wirklich praktisch ;-) • Aber wie statt dessen? Zunächst schauen wir uns die Darstellung von Sprachen mit Hilfe von Grammatiken an (“intensionale” Regeln). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 115 Grammatiken Grammatiken Beispiel im Deutschen: Ein Satz kann aus einem Subjekt bestehen, dem sich ein Prädikat und ein Objekt anschließen. • • • • • Kurzform in der Linguistik: Satz → Subjekt Prädikat Objekt Der Junge wirft den Ball – entspricht er der Struktur? Struktur der Bestandteile: Subjekt → Artikel Substantiv Was ist ein Artikel? Artikel → Der Was ist ein Substantiv? Substantiv → Junge c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 116 Grammatiken Grammatikalische Struktur als Baum [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 117 Grammatiken Grammatiken • Grammatiken beschreiben im Wesentlichen den “nur” den syntaktischen Aufbau von Sätzen. • Ob der Satz sinnvoll (für sich genommen bzw. im Zusammenhang) ist, ist eine andere Frage . . . Der Ball wirft den Jungen. • Die Behandlung semantischer/pragmatischer Aspekte lassen wir (leider) außer acht (es ist aber natürlich ein relevantes Thema, im Zusammenhang mit natürlicher Sprache, aber gerade auch z.B. im Software Engineering, wo es immer problematische Übergänge von nicht-formalen zu formalen Sprachen gibt oder die Semantik von “formalen” Sprachen nicht hinreichend geklärt ist . . . ) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 118 Grammatiken Grammatiken: Grundlegende Definitionen Definition 2. [Grammatik] Eine Grammatik ist ein Quadrupel G = (VN , VT , P, S) mit 1. VN , VT sind endliche, nichtleere Mengen mit VN ∩ VT = ∅. VN ist die Menge der nichtterminalen Symbole (Variablen). VT ist die Menge der terminalen Symbole (Terminale). Beispiel: VT = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, −, =}, VN = { Operant, Operator, Term, Gleichung } 2. P ist eine endliche Menge von Regeln der Form α → β mit α ∈ (VN ∪ VT )+, β = (VN ∪ VT )∗. Die Elemente von P werden Produktionsregeln, Produktionen oder Grammatikregeln genannt. Beispiel: Term → Operant Operator Operant, Operator → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (als Abkürzung für Operator → 0, Operator → 1, Operator → 2, usw.) 3. S ∈ VN ist das Startsymbol. Beispiel: S = Gleichung. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 119 Grammatiken Noch ein Beispiel VN = { Bezeichner, BezRest, Buchstabe, Ziffer} VT = { A,B,. . . ,Z,a,b,. . . ,z, ,0,1,2,. . . ,9} S = Bezeichner Bezeichner BezRest → → Buchstabe Ziffer → → P= Buchstabe | | Buchstabe BezRest | BezRest Buchstabe BezRest | BezRest | Ziffer BezRest | Buchstabe | | Ziffer A|B| . . . |Z|a|b| . . . |z 0|1|. . . |9 Grammatik für Bezeichner in der Programmiersprache C. Wie sehen diese aus? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 120 Grammatiken Erzeugen von Wörtern Definition 3. [Ableitung] Seien G = (VN , VT , P, S), V = VN ∪ VT und x, y ∈ V ∗. (1) Anwendung einer Grammatikregel: x wird unmittelbar überführt in y , x ⇒ y , gdw. x = γαδ , y = γβδ , a → β ∈ P , α ∈ V +, β, γ, δ ∈ V ∗. Andere Redewendungen: x führt unmittelbar zu y , y ist (direkt) ableitbar aus x. (2) Anwendung mehrerer Grammatikregeln nacheinander: x wird überführt in y , x ⇒∗ y , gdw. es existiert eine endliche Folge (w0, . . . , w), so dass x = w0, wn = y und wi−1 ⇒ wi für 1 ≤ i ≤ n. Diese Folge heißt Ableitung von y aus x. Man kann die Schritte auch explizit angeben: x ⇒ w1 ⇒ · · · ⇒ wn. Übrigens gilt generell x ⇒∗ x (das ist eine Ableitung der Länge 0). Andere Redewendungen: x führt zu y , y ist ableitbar aus x. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 121 Grammatiken Erzeugt Sprache Die von einer Grammatik erzeugte Sprache ist die Menge aller Terminalwörter, die man aus dem Startsymbol ableiten kann (Terminalwörter sind Wörter, die nur aus terminalen Symbolen bestehen). Definition 69. [Erzeugte Sprache] Die von einer Grammatik G = (VN , VT , P, S) erzeugte (auch: dargestellte Sprache ist ∗ ∗ L(G) = {x ∈ VT |S ⇒ x} Die Wörter der von der Grammatik erzeugten Sprache werden auch als die grammatikalisch korrekten Wörter bezeichnet. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 122 Grammatiken Äquivalente Grammatiken Eine Sprache kann durch verschiedene Grammatiken dargestellt werden. Solche Grammatiken heißen äquivalent. Definition 70. [Äquivalenz von Grammatiken] Zwei Grammatiken G1 und G2 heißen äquivalent, falls gilt L(G1) = L(G2). [Beispiele für Grammatiken: s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 123 Grammatiken Die Chomsky-Hierarchie Noam Chomsky (geb. 1928) ist einer der herausragenden Linguisten, der 1956 eine Hierarchie von Grammatik-Typen bzw. Sprachklassen veröffentlichte, die heute noch verwendet wird. Definition 71. Sei G = (VN , VT , P, S)eine Grammatik, V = VN ∪ VT . G ist vom Typ 0, falls die Regeln von der allgemeinen Form sind (also keine weiteren Einschränkungen gelten) Typ 1, oder kontextsensitiv, falls jede Produktion die Form α1Aα2 → α1βα2 hat mit A ∈ VN , α1, α2 ∈ V ∗, β ∈ V +. Zusätzlich erlaubt ist die Regel S → , dann darf aber S nicht auf der rechten Seite einer Produktion auftauchen. Typ 2, oder kontextfrei, falls jede Produktion die Form A → β hat mit A ∈ VN , β ∈ V +. Es gilt zudem dieselbe Ausnahmeregelung, wie für Typ 1. Typ 3, oder regulär, falls jede Produktion die Form A → aB oder A → a hat mit A, B ∈ VN , a ∈ VT . Zudem gilt die Ausnahmeregelung für Typ 1 bzw. 2. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 124 Grammatiken Bemerkungen: 1. Man könnte für Typ 2 und Typ 3 auch Produktionen der Form A → zulassen, dies erhöht aber nicht die Ausdrucksmächtigkeit des Grammatiktyps (es können nicht mehr Sprachen definitiert werden). 2. Reguläre Grammatiken der vorgestellten Art werden auch rechtslinear genannt. Bei linkslinearen regulären Grammatiken hat man für die erste Regel die Form A → Ba, beide Untertypen beschreiben die gleiche Klasse von Sprachen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 125 Grammatiken Sprachtypen Definition 72. [Typ einer Sprache] Eine Sprache L vom ist vom Typ i, i ∈ {0, 1, 2, 3}, falls eine Grammatik vom Typ i existiert mit L(G) = L. Satz 73. Gilt 0 ≤ i < j ≤ 3 und ist die Grammatik G (bzw. die Sprache L) vom Typ j , so ist sie auch vom Typ i. D.h. jede reguläre Grammatik ist auch kontextfrei, kontextsensitiv und vom Typ 0 usw. Normalerweise will man natürlich immer den speziellsten Typ einer Sprache L finden, d.h. eine möglichst spezielle Grammatik, die diese Sprache erzeugt. Oder man möchte zu einer Grammatik G den speziellsten Typ einer äquivalenten Grammatik G0 finden (Bemerkung: größere Typnummer ⇒ speziellerer Typ). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 126 Grammatiken Sprachtypen • • • • • Welchen Typ hat die Grammatik für Bezeichner? Geht das auch “spezieller”? Welchen Typ hat die Grammatik mit P = {S → 0S, S → 0}? Welchen Typ hat die Grammatik mit P = {S → 0S1, S → 01}? Geht das auch “spezieller”? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 127 Grammatiken Bedeutung von Sei G eine Grammatik, die nicht erzeugt. Dann können wir eine Grammatik G0 desselben Typs finden, die L(G0) = L(G) ∪ {} erzeugt: Typ 0: S → hinzufügen. Typ 1 und 2: Neues Startsymbol S 0 hinzufügen und die Regelmenge um S 0 → S und S 0 → erweitern. Typ 3: G0 = (VN , VT , P 0, S 0) entsteht aus G = (VN , VT , P, S)durch folgende Vorschriften: 1. Definiere neues Startsymbol S 0 6∈ VN 0 2. VN := VN ∪ {S 0} 3. P 0 = P ∪ {S 0 → α|S → α ∈ P } ∪ {S 0 → } [Beispiel s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 128 Grammatiken Die komplette Sprachhierarchie Reguläre Sprachen ⊂ ⊂ ⊂ ⊂ ⊂ Kontextfreie Sprachen Kontextsensitive Sprachen Entscheidbare Sprachen Aufzählbare Sprachen = Typ 0-Sprachen Abzählbare Sprachen Dazu kann man natürlich auch ein schönes Venn-Diagramm malen! Alle Teilmengenbeziehungen sind echt! • Für die Beschreibung von Programmiersprachen reichen i.A. kontextfreie Grammatiken aus. • Es gibt Darstellungsformen für solche Grammatiken, die speziell für die maschinelle Verarbeitung geeignet sind • Ein Beispiel hierzu ist die B ACKUS-N AUR-Form (BNF). • Sie wurde 1959 von J OHN W. B ACKUS und P ETER N AUR bei IBM entwickelt, um ALGOL 60 zu beschreiben (d.h. die Syntax zu definieren). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 129 Grammatiken B ACKUS-N AUR-Form (BNF) • Variablen (also Nicht-Terminale) werden mit spitzen Klammern <...> umschlossen • Terminale Symbole werden ohne spezielle Kennzeichnung aufgeschrieben • Statt → wird das Symbol ::= verwendet • Das | trennt Alternativen [Weiteres Beispiel s. Mitschrieb] <Namensaufzaehlung> <Namensliste> <Name> ::= <Name> | <Namensliste> und <Name> ::= <Name> | <Name> , <Namensliste> ::= Hans | Susi | Otto | Maria | Paul Welche Wörter sind Elemente der durch diese Grammatik erzeugten Sprache? Wieviele Wörter gibt es in der Sprache? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 130 Grammatiken Extended-B ACKUS-N AUR-Form (EBNF) • Zur BNF hinzu kommen Abkürzungsmöglichkeiten für Optionalitäten und Wiederholungen. • Kontextfreie Grammatiken können so in kompakter, maschinenlesbarer Form dargestellt werden • Die Erweiterungen im Einzelnen: 1. Optionalität wird durch eckige Klammern [...] dargestellt. Für einen EBNF-Term x beschreibt [x] das null- oder einmalige Vorkommen eines Wortes nach dem Muster von x, z.B. <Bezeichner> ::= <Buchstabe>[<BezRest>]|_[BezRest] 2. Wiederholungen werden durch geschweifte Klammern {. . . } dargestellt. Für einen EBNF-Term x beschreibt {x} das nullmalige, einmalige oder mehrmalige Vorkommen eines Wortes nach dem Muster von x, z.B. <BezRest> ::= {<Buchstabe>|_|<Ziffer>} 3. Runde Klammern (...) werden als Strukturierungshilfe verwendet, z.B. <Bezeichner> ::= (<Buchstabe>|_)\{<Buchstabe>|_|<Ziffer>} c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 131 Grammatiken Vermeidung von Rekursionen in EBNF Rekursive Regeln können in EBNF oft durch iterative Regeln ersetzt werden. Beispiel: Bisherige, theorie-orientierte Form: Liste → Element, Liste Liste → Element EBNF: Liste ::= <Element>{, <Element>} Es kann aber nicht jede rekursive Grammatikregel auf diese Art beschrieben werden – probieren sie es für die erste Regel der Regelmenge {S → 0S1, S → 01} . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 132 Grammatiken Das Problem der Mehrfachverwendung • Die speziellen Symbole {,},[,],(,),<,>,| kommen in den Programmiersprachen selbst vor • Es gibt daher Konventionen, die eine Verwechselung ausschließen • Man kann z.B. terminale Symbole, bei denen es zu Bedeutungsunklarheiten kommen kann, durch Hochkommata einschließen oder einen Backslash voranstellen: z.B. beschreibt <Liste> ::= \[a{,a}\] Listen der Form [a], [a,a], ... • Denn Backslash selbst kann man durch einen doppelten Backslash erhalten (usw.) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 133 Grammatiken Syntaxdiagramme Syntaxdiagramme sind eine graphische Darstellung von EBNF-Grammatiken. Mögliche Ableitungen der Grammatik können durch das Verfolgen von Pfaden in den zugehörigen Syntaxdiagrammen gefunden werden. [Beispiel s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 134 Grammatiken Aufbau von Syntaxdiagrammen • Fasse alle Regeln, die dieselbe Variable als linke Seite aufweisen, zusammen, indem verschiedene rechte Seiten als Alternativen dargestellt werden. • Zeichne für jede Variable X einen gerichteten Graphen mit je einer Eingangsund einer Ausgangskante und benenne den Graphen mit X • Repräsentiere die Variablen und terminalen Symbole der rechten Seite als Knoten und verwende dazu – Rechtecke (Quadrate) für Variablen – Ellipsen (Kreise) für terminale Symbole • Konkatenationen werden durch Aneinanderreihungen, Alternativen durch Verzweigungen dargestellt • Die den Graphen bezeichnende Variable darf selbst als Knoten vorkommen [Beispiele s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 135 Grammatiken Üben (1) Gegeben seien zwei Grammatiken mit den Regelmengen P1 und P2 in EBNF: • P1: <S> ::= a[<S>]a|b • P1: <S> ::= a{<S>}a|b 1. Geben Sie ein Wort an, das von der zweiten, nicht aber von der ersten Grammatik erzeugt wird 2. Stellen sie die EBNF-Regeln als Grammatikregeln in “theorie-orientierter” Form dar 3. Stellen Sie die EBNF-Regeln als Syntaxdiagramme dar [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 136 Grammatiken Üben (2) In der Programmiersprache C sind Gleitpunktkonstanten in der folgenden Weise definiert: • Eine Gleitpunktkonstante besteht aus einem ganzzahligen Teil, einem Dezimalpunkt, einem Dezimalbruch, dem Zeichen e oder E , einem ganzzahligen Exponenten mit optionalem Vorzeichen und einem optionalen Typ-Suffix, nämlich einem Buchstaben f ,F ,l oder L. • Ganzzahliger Teil und Dezimalbruch sind Ziffernfolgen. • Entweder der ganzzahlige Teil oder der Dezimalbruch kann fehlen (aber nicht beide!) • Entweder der Dezimalpunkt oder der Exponent beginnend mit dem e bzw. E kann fehlen (aber nicht beide!) Beschreiben sie die Sprache der zulässigen Gleitpunktkonstanten mit Hilfe (a) einer Grammatik in EBNF und (b) mit Syntaxdiagrammen. [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 137 Grammatiken Üben (3) Gegeben sei die Grammatik G = ({S, A, B}, {0}, P, S) mit S S P: AB 0A A → → → → → ABA 00 000A 0 1. Von welchem Typ ist diese Grammatik? 2. Geben Sie eine Ableitung für das Wort 00000 in G an. 3. Beschreiben Sie die Sprache L(G), die von G erzeugt wird. 4. Geben Sie eine zu G äquivalente reguläre Grammatik G0 an. [s. Übungen] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 138 Endliche Automaten Endliche Automaten und reguläre Sprachen “Die Automatentheorie hat die Aufgabe, mit Hilfe abstrakter Automatenkonzepte die verschiedenen Verarbeitungstechniken von mechanischen oder elektronischen Geräten systematisch zu erfassen”, U. Hedtstück Zentraler Aspekt für uns: Techniken, mit deren Hilfe man überprüfen kann, ob ein formalsprachlicher Ausdruck syntaktisch korrekt ist. Anwendungen z.B. • Parser/Compiler • Adresserkennung • Strukturelle Analyse von Webseiten Hierbei muß ein Algorithmus (bzw. ein Automat) alle Wörter einer vorgegebenen Sprache erkennen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 139 Endliche Automaten Arbeitsweise endlicher Automaten • Grammatiken erzeugen formale Sprachen • Bei (rechtslinearen) regulären Grammatiken werden die Wörter Zeichen für Zeichen von links nach rechts erzeugt Mit Hilfe der regulären Grammatikregeln Bezeichner BezRest BezRest BezRest → → → → x BezRest y BezRest u BezRest 3 kann man z.B. den Bezeichner xyu3 erzeugen (ableiten) [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 140 Endliche Automaten Ableitung vs. Erkennung • Bei jedem Ableitungsschritt fügt man ein terminales Symbol hinzu • Außer beim letzten Schritt wird außerdem eine Variable hinzugefügt • Man kann z.B. die zweite Regel so beschreiben: Ein Bezeichnerrest wird erzeugt, indem das Zeichen y erzeugt wird und daran anschließend ein Bezeichnerrest. Ein Scanner hingegen muß ein Eingabewort als “zulässig” erkennen. Trotzdem kann jeder Schritt des Scanners als Anwendung einer Grammatikregel aufgefaßt werden (hier am Beispiel der zweiten Regel von oben): Ein Restwort wird als Bezeichnerrest erkannt, falls es mit y beginnt und anschließend ein Bezeichnerrest folgt. [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 141 Endliche Automaten Endliche Automaten Das Grundprinzip von Scannern kann als endliche Automaten abstrakt beschrieben werden. Ein endlicher Automat • bekommt als Eingabe ein Wort, das zeichenweise auf ein einseitig unendliches Eingabeband geschrieben ist • liest das Wort mit einem Lesekopf Zeichen für Zeichen bis zum Ende (des Wortes? des Ablauf des Automaten?, s. unten) • hat eine Steuereinheit mit einem Zustand; dieser Zustand kann sich abhängig vom Zeichen unter dem Lesekopf ändern, der Lesekopf bewegt sich anschließend nach rechts [Bild s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 142 Endliche Automaten Abarbeitung eines Eingabeworts • Zu Beginn ist die Steuereinheit im Anfangszustand • Der Lesevorgang beginnt auf dem ersten Zeichen des Wortes (von links gesehen) • Die Steuereinheit kann in jedem Schritt ihren Zustand, abhängig vom momentanen Zustand und dem Eingabezeichen, ändern • Der Lesekopf bewegt sich schrittweise nach rechts und liest die Zeichen auf den einzelnen Feldern des Eingabebandes • Das Wort wird von dem endlichen Automaten erkannt, wenn der Automat sich nach dem vollständigen Lesen des Wortes in einem Endzustand befindet c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 143 Endliche Automaten Formalisierung Definition 74. [Endlicher Automat] Ein deterministischer endlicher Automat ist ein 5-Tupel M = (Z, V, δ, qM , F ) mit 1. Z, V sind endliche, nichtleere, disjunkte Menge. Z heißt Zustandsmenge, V ist das Eingabealphabet 2. δ : Z × V −→ Z ist die Überführungsfunktion 3. qM ∈ Z ist der Anfangszustand 4. F ⊆ Z ist die Menge der Endzustände • δ(q, a) = q 0 bedeutet: Liest der endliche Automat im Zustand q das Zeichen a, so geht er in den Zustand q 0 über und rückt den Lesekopf ein Feld nach rechts • q(·) ist meist partiell, d.h. es muß nicht jedes Paar (q, x) auf der linken Seite auch vorkommen (dies weicht den Domain-Begriff so auf, wie der Zielbereich den Rangebegriff aufweicht). Ist für jedes Paar (q, x) ein Folgezustand definiert, so ist δ total (das entspricht unserem “normalen” Funktionsbegriff) • deterministisch meint, dass immer eindeutig bestimmt ist, welche Regel wir anwenden müssen (wenn es überhaupt eine anwendbare Regel gibt). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 144 Endliche Automaten Erkennen von Sprachen Definition 75. [Von endlichen Automaten erkannte Sprachen] Sei der endliche Automat M = (Z, VT , δ, qM , F )gegeben. Das Wort x ∈ V ∗ sei auf das Eingabeband geschrieben, beginnend auf dem ersten Feld links. M startet im Anfangszustand qM , der Lesekopf steht auf dem ersten linken Feld des Eingabebandes. x wird von M erkannt bzw. akzeptiert, falls M sich nach dem vollständigen Lesen von x in einem Endzustand befindet. Stoppt M bevor x vollständig gelesen wurde (wir sagen auch: M stoppt vorzeitig), so wird das Wort nicht erkannt. Das Leerwort wird genau dann erkannt, wenn qM ∈ F . Die von M erkannte (akzeptierte, dargestellte) Sprache ist die Menge ∗ T (M ) = {x ∈ V |x wird von M erkannt} c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 145 Endliche Automaten Beispiele und Darstellungsweisen Beispiel: Gegeben M = (Z, VT , δ, qM , F )mit Z = {q0, q1, q2}, V = {0, 1}, qM = q0, F = {q2}. Überführungsfunktion δ (“Arbeitsanweisungen”): Momentaner Zustand q q0 q0 q1 q1 q2 q2 Zeichen unter Lesekopf a 0 1 0 1 0 1 Folgezustand δ(q, a) q0 q1 q1 q2 q2 q1 [Beispiele für Abarbeitungen s. Mitschrieb] Welche Sprache erkennt M ? c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 146 Endliche Automaten Darstellung von endlichen Automaten als Zustandsdiagramme [s. Mitschrieb inkl. Beispielen (Stichwort: Fehlerzustände)] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 147 Endliche Automaten Nichtdeterministische endliche Automaten Definition 76. [Nichtdeterministischer endlicher Automat] Ein nichtdeterministischer endlicher Automat ist ein 5-Tupel M (Z, V, δ, qM , F ) mit = 1. Z, V sind endliche, nichtleere, disjunkte Menge. Z heißt Zustandsmenge, V ist das Eingabealphabet 2. δ ⊆ Z × V × Z ist die Überführungsrelation 3. qM ∈ Z ist der Anfangszustand 4. F ⊆ Z ist die Menge der Endzustände Ein Wort x ∈ V ∗ wird von M erkannt und ist damit Element der von M erkannten (akzeptierten, dargestellten) Sprache T (M ), falls M , beginnend im Startzustand mit dem Lesekopf auf dem ersten linken Zeichen von x, mindestens eine Möglichkeit hat, das Wort x vollständig zu lesen, und zwar so, dass M anschließend in einem Endzustand ist. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 148 Endliche Automaten • Für ein Paar (q, a) kann es nun mehrere Folgezustände geben. • Für das Erkennen eines Wortes genügt ein erfolgreicher Lesevorgang, obwohl es für ein Wort noch andere Abarbeitungsnöglichkeiten geben könnte, die nicht in einen Endzustand führen. • Jeder deterministische Automat ist natürlich auch ein nicht-deterministischer (nur ohne Nichtdeterminismus . . . ), denn die Überführungsfunktion ist natürlich “erst recht” auch eine Überführungsrelation. [Beispiele und Ergänzendes s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 149 Endliche Automaten Reguläre Sprachen ⇔ endliche Automaten Satz 77. Sei L ⊆ V ∗. Dann sind die folgenden Aussagen äquivalent: 1. L ist regulär. 2. Es gibt einen nichtdeterministischen endlichen Automaten, der L erkennt. 3. Es gibt einen deterministischen endlichen Automaten, der L erkennt. [Konstruktiver Beweis durch Ringschluss s. Mitschrieb bzw. Seite 66–70 im Buch, auf Seite 67 ist ein kleiner Fehler: A, B sind Elemente von VN , nicht von VT . Der Beweis ist wichtig, vollziehen sie ihn nach – er gibt ein oft verwendentes Verfahren zur Erzeugung deterministischer endlicher Automaten aus nicht-deterministischen Automaten an!] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 150 Endliche Automaten Eine nicht-reguläre kontextfreie Sprache L = {0n1n|n ≥ 1} ist kontextfrei, sie wird von den Produktionen: P = {S → 0S1, S → 01} erzeugt. Satz 78. Die Sprache L = {0n1n|n ≥ 1} ist nicht regulär. Beweis (indirekt): Angenommen, L wäre regulär. 1. Dann gibt es einen endlichen Automaten M mit T (M ) = L. 2. Sei k die Anzahl der Zustände von M . 3. Wir betrachten das Wort x = 0k 1k ∈ L. (a) M nimmt bei der Abarbeitung von x nacheinander 2k + 1 Zustände an. (b) M hat aber nur k voneinander verschiedene Zustände. (c) Es wird also mindestens ein Zustand, z.B. q , mehr als einmal angenommen. (d) Von ersten zum nächsten Auftreten des Zustandes q wird ein nicht-leeres Teilwort, z.B. v , abgearbeitet. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 151 Endliche Automaten (e) Insgesamt liest M also den ersten Teil u von x, dann ab dem Zustand q das Teilwort v und nach dem zweiten Auftreten von q den Rest w (und endet dann) [s. Mitschrieb] 4. Alle Wörter der Form uv nw, bei denen die obige q -Schleife n-mal durchlaufen wird (n ≥ 0) führen zu demselben Endzustand und sind demnach in T (M )! 5. Dies gilt insbesondere für uv 2w. Für die Lage des Teilwortes v in x = uvw = 0k 1k gibt es drei Möglichkeiten: (a) Fall 1: v = 0j (j ≤ k, j > 0) (b) Fall 2: v = 1j (j ≤ k, j > 0) (c) Fall 3: v = 0j 1l (j, l ≤ k, j, l > 0) 6. Alle drei Fälle führen für x0 = uv 2w zu einem Wort, dass nicht im ursprünglichen L ist, also kann es einen EA, der L erkennt, nicht geben, also ist L nicht regulär. Anmerkung: Die eben verwendete Sprache L ist eine Abstraktion des “Klammernzählens” für geschachtelte Ausdrücke. Dies ist eine Aufgabe, die reguläre Sprachen nicht erledigen können (es sei den, die Zahl der erlaubten Klammern ist beschränkt) — deshalb erledigt der Parser und nicht der Scanner diese Aufgabe! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 152 Reguläre Ausdrücke Reguläre Ausdrücke Definition 79. [Regulärer Ausdruck] Sei V ein Alphabet. 1. 2. 3. 4. ∅ ist ein regulärer Ausdruck für die Sprache L(∅) = ∅. ist ein regulärer Ausdruck für die Sprache L() = {}. Für jedes a ∈ V ist a ein regulärer Ausdruck für die Sprache L(a) = {a}. Seien α und β regulärer Ausdrücke für die Sprachen L(α) und L(β). Dann sind auch die folgenden Ausdrücke reguläre Ausdrücke: (α|β) für die Vereinigung L(α) ∪ L(β) = {x|x ∈ L(α) oder x ∈ L(β)}. Der |-Operator heißt Alternative, man liest α oder β (man sieht auch + anstelle von |). (αβ) für das Produkt L(α)L(β) = {xy|x ∈ L(α) und y ∈ L(β)}. Dieser Operator heißt Konkatenation (oder Verkettung), man liest α gefolgt von β . (a∗) für die Verkettungshülle L(α)∗ = {x1 . . . xn|xi ∈ L(α), 1 ≤ i ≤ n ∈ N}, Achtung: n kann hier auch 0 sein (dann gibt es auch kein xi). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 153 Reguläre Ausdrücke Der ∗-Operator heißt Kleene-Star (Kleen’scher Stern oder Kleen-Abschluss), man liest α Stern. Anmerkung: Die ist eine typische induktive Definition, wie wir sie schon für Syntax und Semantik der Aussagenlogik kennengelernt haben. Es werden also zunächst die elementaren Ausdrücke definiert und dann das Aufbauprinzip für zusammengesetzte Ausdrücke. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 154 Reguläre Ausdrücke Reguläre Ausdrücke Sparen von Klammern: 1. Außenklammern können weggelassen werden. 2. Der Kleene-Star bindet stärker, als die Konkatenation. 3. Die Konkatenation bindet stärker, als die Alternative. Wie kann man nach diesen Regeln (((a(b∗))∗)|(ab)) vereinfachen? [s. Mitschrieb] [Beispiele für reguläre Ausdrücke und zugehörige Sprachen, s. Mitschrieb] Natürlich ist die Zuordnung von regulären Ausdrücken zu Sprachen nicht injektiv, d.h. i.a. kann eine Sprache durch mehrere verschiedene reguläre Ausdrücke beschrieben werden. Man kann auch nach möglichst kompakten regulären Ausdrücken für eine vorgegebene Sprache suchen (oder nach eine Verkürzung eines gegebenen reg. Ausdrucks). Das vernachlässigen wir hier. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 155 Reguläre Ausdrücke Reguläre Ausdrücke und reguläre Sprachen Unsere “freihändige” mengentheoretische Beschreibung von Sprachen ist nicht formal bzw. präzise genug, um eine maschinelle Verarbeitung zur erlauben. Jetzt haben wir aber für die regulären Sprachen ein präzises Instrument, denn es gilt der folgende Satz: Satz 80. Jede reguläre Sprache lässt sich durch einen regulären Ausdruck darstellen und jeder reguläre Ausdruck definiert eine reguläre Sprache. Beweisskizze: • Jede endliche Sprache ist offensichtlich regulär (man kann leicht einen nichtdeterministischen EA angeben, der die Sprache erkennt: jedes Wort wird ein “Zweig”). • Man kann nun zeigen, dass die Anwendung der Opertoren Vereinigung, Produkt und Verkettungshülle auf reguläre Sprachen wieder zu einer regulären Sprache führt – und, dass so alle regulären Sprachen erzeugt werden können. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 156 Reguläre Ausdrücke • Die regulären Ausdrücke sind aber nun genau und einfach nur eine Repräsentation für diese Operatoren und ihre Anwendung auf reguläre Teilsprachen, so dass folglich genau die regulären Sprachen mit Hilfe von regulären Ausdrücken beschrieben werden können. Übrigens: Manchmal spricht man auch von regulären Mengen statt von regulären Ausdrücken. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 157 Reguläre Ausdrücke Reguläre Ausdrücke und endliche Automaten Den zweiten Teil des obigen Satzes kann man auch konstruktiv mittels nichtdeterministischer EAs nachweisen: Satz 81. Zu jedem regulären Ausdruck gibt es einen nicht-deterministischen EA, der genau die durch den regulären Ausdruck dargestellte Sprache akzeptiert. Beweisskizze: Wir beschränken uns auf die Konstruktion, die Schlussfolgerung folgt direkt. [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 158 Reguläre Ausdrücke Scanner und Scanner-Generatoren (1) • Der Scanner ist der Teil des Compilers, der die einzelnen Zeichen der Eingabe zu Token (das sind Symbole für Wörter der Eingabe) wie z.B. Schlüsselwörter, Bezeichner, Literale, Operatoren oder Begrenzer zusammenfasst. • Gelingt dies dem Scanner nicht, so ist die Eingabe nicht syntaktisch korrekt. • Jede Klasse von Token einer Programmiersprache kann als reguläre Sprache aufgefasst werden. Also kann für jede Klasse auch ein EA gefunden werden. • EAs können leicht als Computerprogramm realisiert werden: – Der momentane Zustand wird in einer Variable gespeichert. – In einer Schleife wird pro Durchgang jeweils das nächste Zeichen der Eingabefolge gelesen . . . – . . . und abhängig vom augenblicklichen Zustand und dem gelesenen Zeichen wird der Zustand in entsprechenden Fallunterscheidungen neu gesetzt. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 159 Reguläre Ausdrücke Scanner und Scanner-Generatoren (2) • Wären alle Token eindeutig voneinander getrennt, etwa durch sogenannte Whitespaces (Leerzeichen, Tabulatoren, Zeilenvorschübe und Kommentare), könnten die einzelnen Token von den verschiedenen endlichen Automaten geprüft werden, bis ein Match (=das Wort wurde durch einen EA akzeptiert) gefunden wurde. • Oft ist aber das “direkte” Aneinanderfügen von Token erlaubt, z.B. id2+1. Das Wort besteht aus 3 Token: id2 (Bezeichner), + (Operator), 1 (Literal = ein “buchstäblich” zu nehmender Wert). • Scanner fassen üblicherweise möglichst lange Zeichenfolgen zu Token zusammen (also wird nicht schon id als Bezeichner erkannt). • Allerdings soll +1 im obigen Wort nicht als vorzeichenbehaftete Zahl (eine spezielle Unterklasse der Literale) erkannt werden. Das wäre hier falsch und das Folgen einer Zahl auf einen Bezeichner ist generell nur möglich, wenn ein Whitespace beide trennen würde. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 160 Reguläre Ausdrücke Scanner und Scanner-Generatoren (3) • Diese Problematik zwingt uns, weitere Mechanimsmen (über die lineare Abfolge von EAs hinaus) zur Verfügung zu stellen, um zusammenhängende Folgen von Token in “sinnvolle Portionen” (=maximal als Token zu identifizierende Zeichenketten) zu zerlegen. • Details hierzu finden sie z.B. in Büchern von Wegener (zur theoretischen Informatik) oder im Klassiker von Aho, Sethi und Ullman zu Compilerbau. • Nichtsdestotrotz bestehen Scanner im wesentlichen aus endlichen Automaten für die Tokenklassen. Scanner können leicht mittels Scanner-Generatoren (z.B. LEX, FLEX für C) erzeugt werden: 1. Eine Tokenklasse wird mittels eine regulären Ausdrucks angegeben. 2. Daraus kann zunächst ein nicht-deterministischer EA und dann ein deterministischer EA konstruiert werden (die konstruktiven Verfahren hierzu haben wir bereits kennengelernt). • Das gleiche Prinzip wie bei einzelnen Tokenklassen kann natürlich auch zur Suche in “normalen” Texten verwendet werden: man kann mit Hilfe von regulären Ausdrücken z.B. in VI oder XEMACS nach regulären Sprachen suchen! (Man kann den konstruierten EA einfach mehrfach weiterlaufen lassen, wenn man c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 161 Reguläre Ausdrücke mehr als ein Vorkommen eines Wortes der angegebenen regulären Sprache finden möchte) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 162 Reguläre Ausdrücke Weitere Schreibweisen für reguläre Ausdrücke Definition 82. [Abkürzungen für reguläre Ausdrücke] Sei V ein Alphabet und sei r ein regulärer Ausdruck über V . In r dürfen die nachfolgend definierten Abkürzungen enthalten sein. L(r) bezeichnet die durch r dargestellte (reguläre) Sprache. r + bezeichnet die Sprache L(r)+ = {x1 . . . xn|xi ∈ L(r), 1 ≤ i ≤ n ∈ N, n ≥ 1} (Ein- oder mehrmaliges Auftreten von r ). r? bezeichnet die Sprache L(r) ∪ (Optionalität: Null- oder einmaliges Auftreten von r ). [Liste] Liste hat die Form a1a2 . . . an oder b − c, wobei alle ai, b, c ∈ V und b < c bzgl. einer auf V definierten linearen Ordnung (z.B. die Position der Buchstaben im “normalen” Alphabet). Der Ausdruck bezeichnet die Sprache {a1, a2, . . . , an} bzw. {a|a ∈ V, b ≤ a ≤ c} (Auflistung einzelner Zeichen oder Bereichsangabe). . Der Punkt steht für ein beliebiges Zeichen aus V , er bezeichnet die Sprache {a|a ∈ V }. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 163 Reguläre Ausdrücke [Beispiele s. Mitschrieb] Für den praktischen Einsatz (z.B. in LEX) gelten weitere Konventionen: 1. Die Zeichen ∗ und + werden nicht hochgesetzt. 2. Ein Backslash \ wird vor Zeichen des Alphabets gesetzt, die auch als Konstrukte der Sprache für die regulären Ausdrücke verwendet werden, so steht z.B. \. nicht für ein beliebiges Zeichen, sondern für den Punkt selbst (“literally”). Beispiel: Eine LEX-Spezifikation für Zahlen ist [0-9]+(\.[0-9]+)?((e|E)[+-]?[0-9]+)? Das entspricht nicht ganz unsere früheren Gleitkommazahl-Definition, passen sie den Ausdruck zur Übung an unsere Definition aus der Aufgabe an! Beachten sie im Beispiel auch, das LEX aus der Umgebung von + und − jeweils aus ihre Bedeutung schliesst (wir also in [+-] die Zeichen nicht mit einem Backslash “escapen” müssen). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 164 Reguläre Ausdrücke Wildcards • Kommandosprachenbefehle: del *.* (DOS) oder ls .* (UNIX) • Der ∗ wird auch Wildcard genannt. • Ähnliche Möglichkeiten gibt es häufig in Suchmaschinen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 165 Reguläre Ausdrücke Wildcards in alten DOS-Versionen Dateibezeichner bestehen aus einem Dateinamen, einem Punkt und einer Dateierweiterung, z.b. thia.pdf 1. ? steht im Namen oder in der Erweiterung für ein einzelnes Zeichen (das auch nicht fehlen darf) 2. * gibt im Namen oder in der Erweiterung an, dass beliebige (auch gar keines!) Zeichen diese und alle übrigen Positionen des Namens bzw. der Erweiterung belegen können Achtung: in regulären Ausdrücken würde man das Fragezeichen durch einen Punkt ausdrücken und den Stern durch .* Übrigens darf der Stern (in den alten DOS-Versionen, z.B. 4.0) nur am Ende des Namens oder der Erweiterung stehen, so war z.B. der Ausdruck del *a.doc nicht zulässig. Er wurde allerdings auch nicht angemeckert, sondern unter Missachtung des as als del *.doc interpretiert, aua! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 166 Reguläre Ausdrücke Wildcards in UNIX Dateinamen können einen (nahezu) beliebigen Aufbau haben. 1. ? gibt an, dass an dieser Stelle ein beliebiges Zeichen stehen muß (also nicht fehlen darf) 2. * gibt an, dass eine eventuell leere Folge von Zeichen folgt. Nach dem Stern dürfen weitere Zeichen folgen, auch Wildcards. 3. [Liste] gibt an, dass an dieser Position des Namens genau ein Zeichen der Liste, die aus einzelnen Zeichen besteht, stehen muß. 4. [^Liste] gibt an, dass an dieser Position des Namens genau ein Zeichen stehen muß, das nicht aus der Liste stammt. [Beispiele s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 167 Reguläre Ausdrücke Verarbeitung von Wildcards durch den Interpreter • Wildcards beschreiben offensichtlich eine Untermenge der regulären Sprachen. • Man kann also, wie gehabt, über einen nicht-deterministischen EA einen deterministischen EA erzeugen, der dann alle Dateibezeichner liest und die jeweils akzeptierten ausgibt. • Für die alte DOS-Variante kann man unmittelbar einen deterministischen Automaten angeben (weil der Stern nur am Ende von Namen bzw. Erweiterung auftauchen “darf”) • Wenn er, wie in UNIX, an einer beliebigen Stelle auftauchen darf, dann geht das nicht (jedenfalls nicht ohne weiteres). [Beispiele s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 168 Reguläre Ausdrücke Grenzen von Wildcards Reguläre Ausdrücke sind (natürlich) ausdrucksmächtiger als Widcard-Ausdrücke (ausdrucksmächtiger heißt formal, dass die Menge der Sprachen, die durch Wildcardausdrücke beschrieben wird, eine echte Teilmenge der regulären Sprachen ist. Beispiele: • (abc)*.txt • a(b|cd).txt [Ende des Kapitels zu regulären Automaten und regulären Sprachen] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 169 Kontextfreie Sprachen Kontextfreie Sprachen und Kellerautomaten • Kontextfreie Grammatiken: auf der linken Seite steht immer ein einzelnes NichtTerminal. • Bis auf einige Ausnahmen reicht dies aus für die Darstellung von Programmiersprachen • Eine Ausnahme ist z.B. das Überprüfen der Übereinstimmung Anzahl von Parametern in Methodenaufruf und Methodendefinition. • Der Parser überprüft weiterhin die syntaktische Korrektheit einer Eingabe. • Er kontrolliert z.B., ob sich aus der vom Scanner erzeugten Symbolfolge (Token) in korrekter Weise Schleifen, Klammerausdrücke usw. ergeben. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 170 Kontextfreie Sprachen Parser und Ableitungsbaum • • • • Der Parser versucht, aus einer Eingabe einen Ableitungsbaum zu konstruieren. Ohne diesen konstruktiven Aspekt ist ein Parser ein Erkennungsalgorithmus. Das Automatenmodell hierfür sind nicht-deterministische Kellerautomaten. Nicht-deterministische Kellerautomaten (KA) sind, anders als bei EAs, ausdrucksmächtiger als deterministische KA. • Nicht-deterministische KA lassen sich also nicht immer in deterministische KAs überführen. • Das kann die Implementierung schwierig machen, es geht natürlich immer, einfach alle Alternativen durchzuspielen – aber das ist i.A. sehr ineffizient! • Man kann sich auch auf die Klasse von Sprachen beschränken, die durch deterministische KAs erkannt werden können, aber das schränkt uns natürlich in der Sprachgestaltung ein! (Wir werden das noch kurz aufgreifen) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 171 Kontextfreie Sprachen Ableitungsbäume • Ableitungsbäume visualisieren die Ableitung eines Wortes ausgehend von einem Startsymbol. • Bei jedem Ableitungsschritt wird genau eine Variable durch eine Symbolfolge ersetzt. Für jedes Symbol kann man eine Verzweigung nach unten zeichnen. • Das führt zu einer Baumstruktur mit dem Startsymbol als Wurzel und den Terminalen als Blätter. Beispiel: Gegeben G = (VN , VT , P, S) mit VN = {S}, VT = {∗, +, (, ), a} und P = {S → S + S, S → S ∗ S, ; § → (S) S → a}. Gesucht: Ableitung und Ableitungsbaum für a + (a + a) ∗ a [s. Mitschrieb]. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 172 Kontextfreie Sprachen Ableitungsbaum Definition 83. [Ableitungsbaum] Sei G = (VN , VT , P, S) eine kontextfreie Grammatik. Ein Ableitungsbaum (auch: Parsebaum, Strukturbaum oder Syntaxbaum) für G ist ein gerichteter, geordneter Baum mit Markierungen mit folgenden Bedingungen: 1. Die Blätter sind mit terminalen Symbolen markiert. 2. Die inneren Knoten sind mit Variablen markiert. 3. Ist A eine die Markierung eines inneren Knoten und sind X1, . . . , Xn die Markierungen der direkten Nachfolger, so ist A → X1, . . . , Xn ∈ P . c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 173 Kontextfreie Sprachen Das Problem der Mehrdeutigkeit • Der Parser versucht nachzuweisen, dass eine Eingabe aus der Grammatik ableitbar ist. • Im Grunde baut er hierzu einen Ableitungsbaum. • In einer kontextfreien Grammatik kann es für ein Wort der erzeugten Sprache i.A. mehrere verschiedene Ableitungsbäume geben, z.B. für a + a ∗ a in der letzten Grammatik [s. Mitschrieb]. • Da letztlich die erkannte Bedeutung einer Eingabe (die Semantik) von dem erzeugten Ableitungsbaum anhängt, können so leicht Mehrdeutigkeiten entstehen! • Im Beispiel kann der Parser nicht allein mit Hilfe der Grammatik entscheiden, ob zunächst addiert oder multipliziert werden soll (eine verbesserte Grammatik folgt bald). • Noch ein Beispiel: G = ({S}, {a, b}, {S → SS, S → a, S → b}, S}, Ableitung für aba [s. Mitschrieb]. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 174 Kontextfreie Sprachen Mehrdeutigkeit Die Mehrdeutigkeit aus dem Beispiel kann man vermeiden, indem man per Konvention festlegt, in welcher Reihenfolge Ersetzungen vorgenommen werden, z.B. die Variable am weitesten links (oder rechts). Definition 84. [Linksbaleitung, Rechsableitung] Eine Ableitung in einer kontextfreien Grammatik heißt Linksableitung (bzw. Rechtsableitung), falls immer das am weitestens links (bzw. rechts) stehende Nichtterminal ersetzt wird. Satz 85. Jeder Linksableitung wird durch genau einen Ableitungsbaum repräsentiert, und jedem Ableitungsbaum entspricht in eindeutiger Weise ein Linksableitung. Leider behebt eine solche Konvention zwar einige, aber nicht alle Mehrdeutigkeitsprobleme! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 175 Kontextfreie Sprachen Mehrdeutigkeit Beispiel: G = ({S}, {a, b}, {S → SS|a|b}, S}, Wort aba. Es gibt zwei Linksableitungen! [s. Mitschrieb] Definition 86. [Mehrdeutigkeit] Eine kontextfreie Grammatik G heißt mehrdeutig, falls es ein Wort in L(G) gibt, das mindestens zwei verschiedene Ableitungsbäume (bzw. Links- oder Rechtsableitungen) gibt. Anderenfalls heißt G eindeutig. Eine kontextfreie Sprache L heißt (inhärent) mehrdeutig, falls alle Grammatiken, die L erzeugen können, mehrdeutig sind, anderenfalls heißt L eindeutig. Um die Eindeutigkeit einer Sprache zu zeigen, reicht es, eine eindeutige Grammatik zu ihrer Erzeugung anzugeben. Will man Mehrdeutigkeit zeigen, so kann es schwierig werden! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 176 Kontextfreie Sprachen Mehrdeutigkeit Beispiel 1: Zur mehrdeutigen Grammatik von oben gibt es eine eindeutige Alternative, die dieselbe Sprache L = {a, b}+ erzeugt: G0 = ({S}, {a, b}, P 0, S) mit P 0 = {S → aS|bS|a|b} [allgemeine Form des Ableitungsbaums, s. Mitschrieb]. Beispiel 2: Eine inhärent mehrdeutige Sprache ist L = {aibj ck |i, j, k ≥ 1, i = j oder j = k} L kann man z.B. mit der folgenden Grammatik erzeugen: G = ({S, A, C, X, Y }, {a, b, c}, P, S} mit P = S → XC|AY X → aXb|ab C → cC|c Y → bY c|bc A → aA|a Man kann zeigen, dass jede kontextfreie Grammatik, die diese Sprache erzeugt, mehrdeutig ist: alle Wörter der Form anbncn haben immer mindestens zwei verschiedene Ableitungsbäume [s. z.B. aabbcc im Mitschrieb]. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 177 Kontextfreie Sprachen Mehrdeutigkeiten in Programmiersprachen Natürlich gilt folgendes: Die Frage, ob eine gegebene kontextfreie Grammatik mehrdeutig ist, ist unentscheidbar (man muss also jede Grammatik individuell untersuchen, ein allgemein einsetzbares Entscheidungsverfahren gibt es nicht). Es folgen zwei Beispiele für mögliche/typische Mehrdeutigkeitsprobleme in Programmiersprachen. Beispiel 1: Arithmetische Ausdrücke [s. Mitschrieb] Beispiel 2: if-else-Mehrdeutigkeit [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 178 Kontextfreie Sprachen Top-Down-Analyse • Es gibt verschiedene “Strategien” für den Aufbau eines Ableitungsbaumes. • Beispiel Top-Down-Anaylse: 1. Der Baum wird beginnend mit der Wurzel von oben nach unten konstruiert. 2. Die Eingabe wird von links nach rechts gelesen. 3. Angewendet wird die sogenannte Syntaxanalyse durch rekursiven Abstieg. 4. Achtung: es gibt schnellere Parsingtechniken (aber die sind nicht unbedingt verständlicher). Beispiel: Analyse des Ausdrucks a + a ∗ a c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 179 Kontextfreie Sprachen Top-Down-Analyse Gegeben war G = ({Ausdruck, T erm, F aktor}, {+, ∗, (, ), a}, P 0, Ausdruck}. Hier sind die eindeutigen Grammatikregeln des obigen (Mitschrieb-)Beispiels noch einmal: (1) P 0 = Ausdruck → Ausdruck + T erm (2) Ausdruck → T erm (3) T erm → T erm ∗ F aktor (4) T erm → F aktor (5) F aktor → (Ausdruck) (6) F aktor → a Leider haben die Regeln (1) und (3) eine unangenehme Eigenschaft: sie sind linksrekursiv (und damit ungeeignet für die Top-Dowon-Strategie)! c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 180 Kontextfreie Sprachen Top-Down-Analyse Definition 87. [Linksrekursion] Eine kontextfreie Grammatikregel heißt linksrekursiv, wenn die Variable der linken Seite als erstes Symbol auf der rechten Seite vorkommt (kommt sie als letztes Symbol vor, dann heißt die Regel rechtsrekursiv). Merke: Man kann generell jede linksrekurive Regel durch eine rechtsrekursive Regel(n) ersetzen, ohne die Sprache zu verändern! Zur Abkürzung ersetzen wir die Symbole in den Beispielregeln durch Buchstaben. [s. Mitschrieb zur Top-Down-Analyse] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 181 Kellerautomaten Kellerautomaten [s. Mitschrieb zur Erkennung von Wörtern mittels Stack-basierter Ableitung] Definition 88. [Kellerautomat] Ein nicht-deterministischer Kellerautomat mit Endzuständen ist ein 7-Tupel M = (Z, V, U, δ, qM , KM , F ) mit 1. Z, V, U sind endliche, nichtleere Mengen. Z heißt Zustandsmenge, V ist das Eingabealphabet, U das Kelleralphabet. 2. δ ⊆ Z × (V ∪ {}) × U × Z × U ∗ ist die Überführungsrelation, die Elemente von δ heißen Anweisungen. 3. qM ∈ Z ist der Anfangszustand. 4. KM ∈ U ist das Anfangskellerzeichen. 5. F ⊆ Z ist die Menge der Endzustände. Abkürzende Schreibweise: Für Anweisungen (q, a, A, p, α) ∈ δ mit p, q ∈ Z , a ∈ (V ∪ {}), A ∈ U , α ∈ U ∗ verwendet man die Schreibweise qaA 7→ pα. Links steht der Bedingungsteil, rechte der Aktionsteil. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 182 Kellerautomaten Kellerautomaten Eine Anweisung qaA 7→ pα hat die folgende Bedeutung: 1. Falls a ∈ V und a ist das momentane Eingabezeichen, A das oberste Zeichen im Keller und q der Zustand von M , dann kann M in den Zustand p übergehen und das Wort α in den Keller schreiben (von rechts nach links, d.h. das erste Zeichen von α steht im Keller anschließend oben). Abschließend wird der Lesekopf auf dem Eingabeband eine Position nach rechts gerückt. 2. Falls a = , M im Zustand q und A das oberste Kellerzeichen ist, dann kann ein spontaner Übergang (auch -Übergang genannt) in den Zustand p erfolgen. Es wird wiederum α in den Keller geschrieben, allerdings wird kein Zeichen vom Eingabeband gelesen und der Eingabelesekopf wird nicht bewegt. Wenn keine Anweisung für das Tripel aus Zustand, Eingabe- und Kellerzeichen vorliegt, dann stoppt der Kellerautomat. Kellerautomaten können für endliche Eingaben unendlich laufen (z.B. mit qA 7→ qA). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 183 Kellerautomaten Kellerautomaten Definition 89. [Vom Kellerautomaten erkannte Sprache] Sei M ein Kellerautomat wie oben definiert. Ein Wort x ∈ V ∗ stehe auf dem Eingabeband, beginnend auf dem ersten Feld links. Der Lesekopf des Automats steht zu Beginn auf dem ersten linken Zeichen von x. Im Keller befindet sich nur das Anfangskellerzeichen. Das Wort x wird von M erkannt (auch: akzeptiert), falls M eine Möglichkeit hat, x so vollständig zu lesen, dass sich M anschließend in einem Endzustand befindet. Die von M erkannte (akzeptierte, dargestellte) Sprache ist die Menge ∗ T (M ) = {x ∈ V |x wird von M erkannt} Beispiel: Ein deterministischer Kellerautomat für die Sprache L = {0n1n|n ≥ 1} [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 184 Kellerautomaten Kellerautomaten Beispiel: L = {ww̄|w ∈ V ∗, w̄ ist Spiegelbild von w} Wörter dieser Sprache z.B. aabaabaa, aaaaaa, nicht aber aaaaa oder aabaa. Kann diese Sprache von einem deterministischen Kellerautomaten erkannt werden? [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 185 Kellerautomaten Kellerautomaten und kontextfreie Sprachen Satz 90. Sei L eine Sprache. Dann sind die folgenden Aussagen äquivalent: 1. L ist kontextfrei. 2. Es gibt einen nichtdeterministischen Kellerautomaten, der L erkennt. [Beweis der Richtung 1. zu 2. und Beispielkonstruktion für L = {0n1n|n ≥ 1} s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 186 Kellerautomaten Kellerautomaten und Parsen • KF-Grammatiken lassen sich nicht immer in deterministische KAs übersetzen • Stehen mehrere Regeln in einer KF-Grammatik zur Auswahl, kann es zu aufwändigem Backtracking kommen • Man versucht deshalb, sich auf LR(k)-Grammatiken zu beschränken: man kann bei der Konstruktion eines Ableitungsbaumes die nächste anzuwendende Regeln eindeutig bestimmen, wenn man die k nächsten Zeichen kennt. L steht hier für das Lesen der Eingabe von Links nach Rechts und R für Rechtsableitungen. Der Baum wird bottom-up konstruiert (YACC generiert solche Parser). Die LR(k)-Grammatiken erzeugen genau die Sprachen, die von deterministischen KAs erkannt werden. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 187 Kellerautomaten Kontextfreie Grammatiken Wir wollen Kettenregeln der Form X → Y vermeiden (sie führen zu Ineffizienzen!) Definition 91. Eine Grammatik G = (VN , VT , P, S) ist ein ChomskyNormalform, falls jede Produktion von der Form X → Y Z oder X → a mit X, Y, Z ∈ VN und a ∈ VT ist. Satz 92. Zu jeder kontextfreien Grammatik, die das Leerwort nicht erzeugt, läßt sich eine äquivalente Grammatik in Chomsky-Normalform angeben. [Beweis s. Buch] Dies ist eine Vorform zur Greibach-Normalform: X → aY1 . . . Yn. (sieht regulären Grammatiken sehr ähnlich!) c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 188 Kellerautomaten Nicht kontextfreie Sprachen und das Pumping-Lemma Satz 93. Die Sprache L = {0n1n2n|n ≥ 1} ist nicht kontextfrei. [Beweisskizze s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 189 Kellerautomaten XML • ist eine sogenannte Auszeichnungssprache (markup-language) und basiert auf SGML • gibt Dokumenten und Daten Struktur • wurde vom W3C (http://www.w3c.org/XML) definiert und wird dort weiterentwickelt • verwendet TAGS zur Strukturierung, diese können hierarchisch geschachtelt werden und bestehen immer aus Angangs- und Endtag, z.B. <Name>Wolfram Conen</Name> oder auch <Name> <Vorname>Wolfram</Vorname> <Nachname>Conen</Nachname> </Name> • die Namen können selbst gewählt werden. • Element(namen) können auch Attribute haben, z.B. <Name leer="JA"/>. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 190 Kellerautomaten • es gibt auch noch Namespaces: <THIA:Name>Bassam</THIA:Name>, und einges andere ;-) • wenn die Tags alle korrekt geschlossen bzw. verschachtel sind, dann ist das Dokument well-formed • wenn sie auch noch den Vorgaben einer Grammatik G genügen, dann sind sie valid (relativ zur vorzugebenden Grammatik). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 191 Kellerautomaten Grammatiken für XML: DTD Document Type Definition (DTD): • eine Liste von Element-Definitionen: <!DOCTYPE DTD-Name [ Liste von Elementdefinitionen ]> • Elementdefinition erlauben Sequnzierung (mit ,), Alternativen (|), Verkettung (* für null- oder mehrmals, + für ein- oder mehrmals, ? für null- oder einmal), und Klammerung z.B. <!ELEMENT bib (bibelement*)> • rechts ist neben Elementnamen auch der Term #PCDATA erlaubt, der für beliebige unstrukturierte Strings steht (parsed character data) • kann man unmittelbar in EBNF bringen • ist selbst kein XML (oops...) • kann per Link referenziert werden c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 192 Kellerautomaten Grammatiken für XML: XML-Schema • DTD-Probleme: kein XML, also zwei Grammatik-Formalismen; nur ein (elementarer) Datentyp: PCDATA • XML-Schema ist XML; kann, was DTDs können [s. Mitschrieb] und mehr s. http://www.w3.org/XML/Schema • Elementdefinitionen bestehen aus Elementname und Typangabe. Mit ref kann zudem auf Elementdefinitionen verwiesen werden. • mit minoccurs und maxoccurs können bel. Anzahlen für das Vorkommen eines Elementes spezifiziert werden • Sequenzen “klammert” man durch <sequenz>...</sequenz>, Wahlmöglichkeit durch <choice>...</choice>. • . . . und vor allem gibt es reichlich vordefinierte “einfache” Datentypen, z.B. <xsd:integer> c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 193 Kellerautomaten XML und Mehrdeutigkeit Viele Quellen für Mehrdeutigkeiten werden durch die vorgegebene Struktur des Parsebaums bereits vermieden. Aber: <!ELEMENT x (a*,b | b,c*)> angewendet auf <x><b>b-Text</b></x>. Ist der b-Text der Abschluß einer leeren Folge von a’s oder der Beginn einer leeren c-Folge? Für DTDs bzw. XML-Schemata wird gefordert, dass sie immer in eindeutiger Weise beim Lesen eines gültigen XML-Dokuments von links nach rechts (und oben nach unten) pro gelesenem öffnendem Tag vorgeben, wie beim Abarbeiten der rechten Seite zu verfahren ist, d.h. sie sollen die LL(1)-Eigenschaft aufweisen, d.h. aus einem X ∈ VN folgt ein Nichtterminal a bei einer Linksableitung der Form X ⇒∗ aβ eindeutig (man braucht dann für Top-down-Parser kein Backtracking!) Diese Eigenschaft muss der Grammatik-Designer selbst einhalten – aber er kann dies automatisch kontrollieren, denn die Eigenschaft ist entscheidbar. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 194 Turingmaschinen Turing-Maschinen Definition 94. [Einfache Turing-Maschine] Eine deterministische Turingmaschine ist ein 5-Tupel M = (Z, V, δ, qA, qE ) mit 1. Z, V sind endliche, nichtleere Menge. Z ist die Zustandsmenge, V das Maschinenalphabet. 2. δ : (Z\{qE }) × (V ∪ { }) → Z × (V ∪ { } ∪ {L, R}), L, R 6∈ V , ist die Überführungsfunktion. Das Zeichen steht für ein Blank (Leerzeichen). M kann lesen und schreiben. L steht für eine “Links”, R steht für “Rechts”. δ muss keine totale Funktion sein. 3. qA ∈ Z , qE ∈ Z , qA 6= qE . qA ist der Anfangszustand, qE ist der Endzustand. Abkürzende Schreibweise: δ definiert eine endliche Menge von Anweisungen, δ(q, a) = (q 0, x), die wir auch als qa → q 0x schreiben werden: Liest M im Zustand q das Zeichen a, so geht M in den Zustand q 0 über und führt die Aktion x aus. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 195 Turingmaschinen Eine Turingmaschine stoppt, falls sie im Zustand q mit dem Lese-/Schreibkopf auf dem Zeichen a steht und falls für das Paar (q, a) keine Anweisung existiert. Eine Turingmaschine muss natürlich nicht stoppen. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 196 Turingmaschinen Turingmaschine Definition 95. [Von Turingmaschinen erkannte Sprache] Sie M = (Z, V, δ, qA, qE ) eine Turingmaschine. Das Wort x ∈ V ∗ steht auf dem sonst leeren (d.h. durch Blanks gefüllten) Eingabeband. M starte mit dem Lese/Schreibkopf auf dem ersten Zeichen des Eingabewortes im Anfangszustands, zbw. auf einem beliebigen Feld, falls x = . Diese Anordnung wird auch Anfangskonfiguration genannt. Das Wort x wird von M erkannt (akzeptiert), falls M ausgehend von der Anfangskonfiguration nach endlich vielen Schritten im Endzustand stoppt. Die von M erkannte (akzeptierte, dargestellte) Sprache ist die Menge T (M ) = {x ∈ V ∗|x wird von M erkannt }. Beispiel: L = {0n1n2n|n ≥ 1} [s. Mitschrieb]. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 197 Turingmaschinen Turing-Berechenbarkeit Definition 96. [Turing-berechenbar] Eine n-stellige Funktion f : (V +)n → V ∗, n ≥ 0, heißt Turing-berechenbar, wenn es eine Turingmaschine M gibt, für die folgendes gilt: Schreibt man auf das sonst leere Band die Argumente w1, . . . , wn jeweils getrennt durch mindestens ein Blank und setzt man M auf das erste linke Zeichen von w1 an, so stoppt M nach endlich vielen Schritten im Endzustand, und auf dem Band steht dann ausschließlich der Funktionswert f (w1, . . . , wn). f kann partiell oder total sein: partiell bedeutet, dass f nicht für jedes n-Tupel von nichtleeren Wörtern über V definiert sein muss, was bei totalem f der Fall ist. Falls f für ein Tupel nicht definiert ist, soll M entweder unendlich weiterlaufen oder in einem Nicht-Endzustabd halten. Beispiel: Berechnung der Nachfolgerfunktion für natürliche Zahlen [s. Mitschrieb] c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 198 Turingmaschinen Turing-Maschinen Definition 97. [Einfache nichtdeterministische Turing-Maschine] Eine deterministische Turingmaschine ist ein 5-Tupel M = (Z, V, δ, qA, qE ) mit 1. Z, V sind endliche, nichtleere Menge. Z ist die Zustandsmenge, V das Maschinenalphabet. 2. δ : (Z\{qE }) ⊆ (V ∪ { }) → Z × (V ∪ { } ∪ {L, R}), L, R 6∈ V , ist die Überführungsrelation. Das Zeichen steht für ein Blank (Leerzeichen). M kann lesen und schreiben. L steht für eine “Links”, R steht für “Rechts”. δ muss keine totale Funktion sein. 3. qA ∈ Z , qE ∈ Z , qA 6= qE . qA ist der Anfangszustand, qE ist der Endzustand. Erkannt werden alle Wörter, für die es mindestens einen akzeptierenden Ablauf gibt (analog zu nichtdeterministischen endlichen Automaten). c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 199 Turingmaschinen P und NP Definition 98. Eine Turingmaschine TM erkennt eine Sprache L in polynomialer Zeit, wenn es ein Polynom p(n) gibt, so dass jedes Wort w ∈ L der Länge n in einer Zeit t mit t ≤ p(n) erkannt wird (Abarbeitung einer Anweisung = eine Zeiteinheit). P besteht aus allen Sprachen, die von einer deterministischen Turingmaschine in polynomialer Zeit erkannt werden. N P besteht aus allen Sprachen, die von einer nichtdeterministischen Turingmaschine in polynomialer Zeit erkannt werden. c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 200 Turingmaschinen Letzte Seite (Vorläufiges) Ende des Skripts c 2004-2006, Dr. W. Conen — Nutzung nur an der FH Gelsenkirchen THIA, Version 0.7, 28. März 2006, Seite 201