Automaten und formale Sprachen Skript zur Vorlesung SS 2004

theoinf.tu.ilmenau.de

Automaten und formale Sprachen Skript zur Vorlesung SS 2004

Automaten und formale SprachenSkript zur VorlesungSS 2004Martin DietzfelbingerTechnische Universität IlmenauFakultät für Informatik und AutomatisierungFachgebiet Komplexitätsheorie und Effiziente Algorithmen


Inhaltsverzeichnis0 Vorbemerkungen 10.1 Einleitung und Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Zur Arbeitstechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50.3 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Grundbegriffe 81.1 Alphabete und Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Endliche Automaten und reguläre Sprachen 162.1 Deterministische endliche Automaten . . . . . . . . . . . . . . . . . . . . . 162.2 Nichtdeterministische endliche Automaten . . . . . . . . . . . . . . . . . . 282.3 Reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.4 Das Pumping-Lemma für reguläre Sprachen . . . . . . . . . . . . . . . . . 462.5 Abschlusseigenschaften für reguläre Sprachen . . . . . . . . . . . . . . . . . 502.6 Entscheidbarkeitsfragen für reguläre Sprachen . . . . . . . . . . . . . . . . 542.7 Die Minimierung deterministischer endlicher Automaten . . . . . . . . . . 563 Grammatiken und die Chomsky-Hierarchie 743.1 Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743.2 Rechtslineare Grammatiken und reguläre Sprachen . . . . . . . . . . . . . 794 Kontextfreie Grammatiken und Sprachen 844.1 Beispiele, Ableitungsbäume,Linksableitungen . . . . . . . . . . . . . . . . . 844.2 Die Chomsky-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.3 Das Pumping-Lemma für kontextfreieSprachen . . . . . . . . . . . . . . . . 1034.4 Der Cocke-Younger-Kasami-Algorithmus . . . . . . . . . . . . . . . . . . . 110i


5 Kellerautomaten 1155.1 Nichtdeterministische Kellerautomaten . . . . . . . . . . . . . . . . . . . . 1155.2 Bottom-Up-Parsing,LR-Parsing . . . . . . . . . . . . . . . . . . . . . . . . 1205.3 Akzeptierungsmodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245.4 Kellerautomaten und Grammatiken . . . . . . . . . . . . . . . . . . . . . . 1255.5 Deterministische Kellerautomaten und ihre Sprachen . . . . . . . . . . . . 1305.6 Abschlußeigenschaften kontextfreier Sprachen . . . . . . . . . . . . . . . . 1345.7 Entscheidbarkeitsfragen für kontextfreieSprachen . . . . . . . . . . . . . . . 136A Anhang 141A.1 b-äre und b-adische Zahldarstellung . . . . . . . . . . . . . . . . . . . . . . 142A.1.1 Die b-äre Zahldarstellung . . . . . . . . . . . . . . . . . . . . . . . 142A.1.2 Die b-adische Zahldarstellung . . . . . . . . . . . . . . . . . . . . . 146ii


Kapitel 0Vorbemerkungen0.1 Einleitung und ÜberblickDie VorlesungAutomaten und Formale Sprachen“ behandelt zusammen mit der Vorlesung”Algorithmentheorie“ im folgenden Semester die Grundlagen der TheoretischenInformatik, wie sie traditionell im Grundstudium des Studienganges Informatik vermitteltwerden. Die in diesen Vorlesungen benutzten Methoden sind mathematisch, auch hierwerden also Dinge ( ”Begriffe“/ ”Konzepte“) formal definiert, über die dann Sätze bewiesenwerden. Allerdings haben die in dieser Vorlesung behandelten Gegenstände auch nochdie Eigenschaft, dass sie in engem Bezug zu konkreten Fragen aus dem Informatik-Alltagstehen.Die AT-Vorlesung (nächstes Semester) befasst sich zunächst mit der Theorie zur ”Berechenbarkeitund Entscheidbarkeit“; hier wird versucht, die Trennlinie zu verstehen zwischenAufgaben, die man mit einem Computer im Prinzip lösen kann und solchen, dieman nicht lösen kann. Das berühmteste von Computern unlösbare Problem, das ”Halteproblem“,möchte wohl jeder Programmierer gerne gelöst haben: Gegeben ein ComputerprogrammP und eine Eingabedatei D, hält P irgendwann an, wenn ich es mit den Datenaus D als Input füttere? In einem zweiten Teil ( ”NP-Vollständigkeit“) geht es um dieGrenze zwischen Problemen, die von effizienten, das heißt, schnellen Algorithmen gelöstwerden können, und solchen, für die es keine schnellen Algorithmen gibt.In der AFS-Vorlesung geht es hauptsächlich um Mittel zur Beschreibung formaler Sprachen,wie man sie insbesondere bei der Erstellung von Compilern oder Interpretern benötigt.Die wesentlichen Beschreibungsmittel hierfür sind Automaten und Grammatiken.Wir beginnen die Vorlesung mit der Einführung des Begriffs (synonym: Konzeptes) ”FormaleSprache“. Etwas flapsig ausgedrückt ist eine formale Sprache einfach eine Mengevon Texten (technisch sagt man zu einem Text ”Wort“ oder ”String“), wobei man dieMenge der Zeichen festlegen muss, die im Text benutzt werden dürfen. Beispiele für formaleSprachen sind1


• die Menge {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, . . .} der Dezimaldarstellungen dernatürlichen Zahlen; die erlaubten Zeichen sind 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;• die Menge {0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, . . .} der Binärdarstellungen dernatürlichen Zahlen; die erlaubten Zeichen sind 0 und 1;• die Menge aller Zeichenreihen aus {X, , 0, 1, ∨, ∧, ¬, (, )}; die Formeln mit AussagesymbolenX 1, X 10, X 11 usw. in disjunktiver Form darstellen (wie (X 100 ∧ X 11) ∨(X 1 ∧ ¬X 10 ∧ ¬X 1001));• die Menge der korrekten Darstellungen für Floating-point-Zahlen in Pascal (oder C,oder C++, oder Java);• die Menge der korrekt gebildeten Namen ( ”identifier“) in Pascal-Programmen;• die Menge der korrekt gebildeten arithmetischen Ausdrücke in Pascal-Progammen;• die Menge der syntaktisch korrekten Pascal-Programme (oder C- oder C++- oderJava-Programme);• die Menge der syntaktisch korrekten Pascal-Programme, die auf allen Eingaben nachendlich vielen Schritten anhalten;• die Menge aller Wörter, die in der gedruckten Version des Vorlesungsverzeichnissesder TU Ilmenau für das Sommersemester 2004 stehen.Man kann sich darüber streiten, ob die Menge der korrekten Sätze der deutschen Spracheeine formale Sprache darstellt, da wohl für manche Sätze die Frage, ob sie korrekt odernicht korrekt sind, nicht eindeutig beantwortet werden kann, oder sich diese Eigenschaftim Lauf der Zeit ändert.Aus den Beispielen sieht man schon, dass viele wichtige formale Sprachen unendlich sind.Um sie zu beschreiben, kann man also nicht einfach alle Wörter aufzählen, die dazugehören. Vielmehr brauchen wir Formalismen, die es gestatten, solche unendlichen Mengenvon Texten durch einen einzigen endlichen Text oder eine endliche Struktur zu beschreiben.Als Beispiel für eine solche endliche Beschreibung sei die bekannte Methodezur Definition der syntaktisch korrekten Pascal-Programme durch Syntaxdiagramme genannt.Alle Syntaxdiagramme (die man in jedem ordentlichen Pascal-Buch findet) zusammensind nur ein endliches Gebilde, aber sie erlauben es, korrekte und nicht korrekteProgrammtexte zu unterscheiden.Ein Hauptgegenstand der Vorlesung sind also verschiedene Formalismen zur Beschreibungund Manipulation formaler Sprachen. Dabei beginnen wir mit den endlichen Automaten(schon aus der Vorlesung ”Rechnerorganisation“ bekannt), die eine der primitivstensolchen Beschreibungsformen darstellen. Bemerkenswert ist, dass solche Automaten eineVielzahl von Anwendungen haben: ziemlich naheliegende im Zusammenhang mit dem2


Lesen und Analysieren einfachst strukturierter Texte (wie Identifier oder Floating-Point-Zahlen) oder einfacher Kommandosprachen, aber auch bei Grundfunktionen von Editoren(Suchen eines Strings in einer Datei). Andererseits werden endliche Automaten immerdann verwendet, wenn es um die mathematische Modellierung eines Systems geht, dasnur endlich viele Zustände annehmen kann. Diese findet man in praktisch jedem Anwendungsbereich,bei den Betriebssystemen, bei technischen Anwendungen (Steuerung), inder Rechnerarchitektur, in der Telematik ebenso wie bei der Modellierung von Transaktionenzwischen Geschäftspartnern (e-commerce). Nichtdeterministische endlicheAutomaten bilden eine Verallgemeinerung von endlichen Automaten, die manche Beschreibungkompakter möglich macht; wir werden aber sehen, dass die Ausdruckskraftsolcher Automaten nicht stärker ist als die der gewöhnlichen endlichen Automaten. Automatenkann man als ”Akzeptoren“ für Texte benutzen, indem man sie einen endlichenEingabetext Buchstabe für Buchstabe lesen lässt und am Ende fragt, ob der Automat dengelesenen Text gut findet ( ”akzeptiert“) oder nicht. Wenn ein Automat M gegeben ist, bildetdie Menge der von M akzeptierten Texte eine Sprache L M . Die Sprachen, die sich vonendlichen Automaten beschreiben lassen, nennen wir reguläre Sprachen. Für sie stellenwir noch einen anderen Beschreibungsmechanismus bereit, die regulären Grammatiken.Diese beschreiben Sprachen nicht durch einen Lese- und Akzeptierungsmechanismus,sondern durch einen Erzeugungsprozess in der Art, wie die Syntaxdiagramme die Regelnaufzeigen, wie Pascalprogramme gebaut werden können. Wir zeigen, dass endliche Automatenund reguläre Grammatiken genau dieselbe Klasse von Sprachen beschreiben, indemwir Grammatiken in Automaten und Automaten in Grammatiken umbauen, ohne dasssich die zugehörige Sprache ändert.Weiter untersuchen wir Wege, wie wir zu einem ”minimalen Automaten“ kommen können,also demjenigen Automaten für eine reguläre Sprache L, der die geringste Anzahl vonZuständen hat. (Ein solcher Automat ist im wesentlichen eindeutig bestimmt.)Eine weitere wichtige Beschreibungsform für reguläre Sprachen sind durch die regulärenAusdrücke gegeben. Man begegnet einfachen regulären Ausdrücken, wenn man einenEditor eine komplexere Suchen nach Teilstrings in einer Datei durchführen lässt (z. B.mit wildcards und Wiederholungen von Teiltextstrukturen). Auch hier zeigen wir wiederexakt, das heißt mit einem mathematischen Beweis, dass diese Beschreibungsformäquivalent zu der mit endlichen Automaten ist.Die Untersuchung der regulären Ausdrücke und der von ihnen definierten Sprachen gibtuns Gelegenheit, die Methode der ”induktiven Definitionen“ etwas genauer unter dieLupe zu nehmen, die oft zur Abgrenzung von ”legalen“ Strukturen von ”illegalen“ benutztwird, wie etwa, um die Menge aller korrekt gebildeten aussagenlogischen Formeln präzisezu beschreiben. Auch die Beschreibung der Menge der syntaktisch korrekten Pascal-Programme lässt sich als eine solche induktive Definition auffassen. — Es stellt sich heraus,wiederum mit einem konstruktiven Umbau-Beweis, dass die Klasse der von regulärenAusdücken beschreibbaren Sprachen wieder dieselbe ist wie die durch endliche Automatenbeschreibbare.Wichtig sind mathematische Techniken, mit denen man beweisen kann, dass eine vorge-3


gebene Sprache nicht regulär ist, man sich also die Suche nach einem sie beschreibendenAutomaten sparen kann. Wir beweisen das sogenannte Pumping Lemma, das die wichtigsteTechnik für diesen Zweck darstellt. Mit dieser Technik lässt sich dann schnell undelegant unterscheiden, welche Aufgaben man von endlichen Automaten erledigen lassenkann und welche nicht.Der zweite Teil der Vorlesung ist der Betrachtung der kontextfreien Grammatiken undder zugehörigen Klasse der kontextfreien Sprachen gewidmet. Woher die merkwürdigeBezeichnung stammt, werden wir im Verlauf der Vorlesung erklären. Hier sei nur gesagt,dass kontextfreie Grammatiken das Beschreibungsmittel sind, mit dem die Syntax allerProgrammiersprachen definiert wird, die irgendeine Form von Klammerschachtelungzulassen (und das sind praktisch alle). Hinter den Pascal-Syntaxdiagrammen steckt einekontextfreie Grammatik, ebenso wie hinter den mehr oder weniger formalen BeschreibungenC, C++, Java, Haskell, usw. in den entsprechenden Handbüchern. Auch XML,der aktuell praktisch extrem wichtige Formalismus zur Beschreibung ”semistrukturierterDaten“, ist im wesentlichen ein System, in dem man für jede Anwendung eine eigenekontextfreie Grammatik überlegen muss.Wir definieren kontextfreie Grammatiken, untersuchen Syntaxbäume und Ableitungssequenzen,und betrachten wichtige Normalformen für Grammatiken. Ein ”PumpingLemma“ für kontextfreie Sprachen erlaubt den Nachweis, dass bestimmte Sprachen nichtkontextfrei sind; hierzu gehört zum Beispiel die Sprache aller Texte, die durch Hintereinanderfügeneines Textes mit einer exakten Kopie entstehen (z. B. gehört das Wortabrakadabrakad zu dieser Sprache). Diese einfache Beobachtung führt zu der Erkenntnis,dass kontextfreie Grammatiken nicht ausreichen, um eine typische Eigenschaft vonPascal-Programmen auszudrücken, nämlich dass jede Variable, die irgendwo benutzt wird,vorher deklariert worden sein muss. (Hierfür gibt es dann gesonderte ”Kontextbedingungen“,die man zusätzlich zu den Syntaxdiagrammen beachten muss.)Die Beschreibung der Menge der syntaktisch korrekten Programme ist eine Sache, die Syntaxanalyseund die Übersetzung in Maschinensprache (oder einen Zwischencode wie beiJava) eine andere. Hierfür braucht man Syntaxanalysemethoden, die im Fall von kontextfreienGrammatiken durch sogenannte Kellerautomaten geliefert werden. Auch diesesModell wird ausführlich besprochen, und wir untersuchen im Prinzip, wie KellerautomatenWörter daraufhin untersuchen, ob sie zu einer von einer Grammatik beschriebenenSprache gehören.Die Einzelheiten der Konstruktion von Syntaxanalyseverfahren aus einer kontextfreienGrammatik bleibt aber einer Spezialvorlesung zum Thema ” Übersetzerbau“ vorbehalten.4


0.2 Zur ArbeitstechnikErfahrungsgemäß fällt es vielen Studierenden schwer, sich mit der Arbeits- und Denkweiseanzufreunden, die in den beiden Theorie-Vorlesungen des Grundstudiums erwartetwird. Dabei fällt den meisten die Arbeit mit der AFS-Vorlesung noch leichter als dieAT-Vorlesung.Daher folgen hier einige aus der Erfahrung der mit diesen Vorlesungen und zugehörigenÜbungen befassten Lehrpersonen fließende Ratschläge. (Sie klingen vielleicht banal, ihreBeachtung erhöht aber Ihre Erfolgschancen. Sie sind aber nicht unbedingt leicht umzusetzen,erfordern also Ihre Aufmerksamkeit jede Woche neu.)• Diese Vorlesung ist von der Dichte und der Art des Stoffs her nicht dafür geeignet,sie durch reines Zuhören zu verarbeiten. Eigenes Weiterarbeiten ist unabdingbar.• Arbeiten Sie daher den Stoff jeder Vorlesung zeitnah nach. Material hierfür sindIhre eigenen Notizen, das Skript im Web, ergänzendes Material von der Webseite,sowie weitere Literatur. Veranschlagen Sie hierfür mindestens 2 bis 3 Zeitstundenpro Woche, also deutlich mehr als die Dauer der Vorlesung.• Stil und Arbeitsweise sind mathematisch, und es kommt darauf an, dass man dieDefinitionen ganz genau ansieht und versteht.• Es bestehen enge Zusammenhänge innerhalb eines Vorlesungsteils, aber auch überweitere Abstände. Man muss die relevanten Definitionen und Sachverhalte aus denvergangenen Vorlesungen auswendig parat haben, da man sonst die Dinge nichtverstehen kann, die darauf aufbauen.• Wir geben jede Woche ein Übungsblatt heraus. Idealerweise überlegen Sie sich füreinige der Übungsaufgaben Lösungen, die dann mit den in der Übungsstunde angegebenenverglichen werden können. Studierende sind auch eingeladen, selbst Lösungenvorzutragen. — Minimale Vorbereitung auf die Übung ist das Durchdenken derAufgaben, damit man weiß, worum es geht. — Auch für die Übungen gilt, dasszeitnahes Nacharbeiten und Kontrolle des eigenen Verstehens am meisten nützt.• Stellen Sie Fragen (in oder nach der Vorlesung, in oder nach den Übungen).• Bereiten Sie sich semesterbegleitend auf die Prüfung vor, die im Juli stattfindet.• Gegenstand der Prüfung ist der Stoff der Vorlesung und die in den Übungen bearbeitetenAufgabentypen. Für die Fragen zur Vorlesung ist es sehr hilfreich, wenn Siesich eine eigene Kurzfassung mit den Definitionen und den zentralen Tatsachen anfertigen.Sie finden frühere Klausuren auf unseren Webseiten. Das schriftliche Lösenvon Übungsaufgaben und früheren Klausuraufgaben, auch in der Nacharbeit derÜbungen, ist die beste Prüfungsvorbereitung.5


8. N. Blum: Theoretische Informatik – eine anwendungsorientierte Einführung. 2. Auflage.Oldenbourg, 2001.(Kombination des Stoffs der Vorlesung mit einer Einführung in das Gebiet der effizientenAlgorithmen, exakte Durchführung der Beweise.)Zu Informatik- und Mathematik-Grundlagen:1. A. Aho, J. D. Ullman. Informatik: Datenstrukturen und Konzepte der Abstraktion.International Thomson Publishing, 1996.2. Ehrig, Mahr, Cornelius, Große-Rhode, Zeitz: Mathematisch-strukturelle Grundlagender Informatik. Springer, 2001.3. C. Meinel, M. Middendorf: Mathematische Grundlagen der Informatik – MathematischesDenken und Beweisen. Teubner, 2002.Websites:1. Gösta Grahne: COMP 335 — Introduction to Theoretical Computer Science. Powerpoint-Folien mit vielen Beipielen. http://www.cs.concordia.ca/~comp335/2004W/cnotes.html2. ”Lernumgebung Automatentheorie“, Universität Zürich, Skript und Automaten zumSelberbasteln. http://www.ifi.unizh.ch/cl/broder/jflapWeiterführende Literatur:1. A. Aho, R. Sethi, J. D. Ullman. Compilerbau Teil 1. Oldenbourg, 1999.2. R. FLoyd, R. Beigel. Die Sprache der Maschinen. International Thomson Publishing,1996.3. J. Hromkovič: Theoretical Computer Science – Introduction to Automata, Computability,Complexity, Algorithmics, Randomization, Communication, and Cryptography.Springer, 2004.4. H. Lewis, C. Papadimitriou: Elements of the Theory of Computation. Prentice Hall,1998.R. Wilhelm, D. Maurer: Übersetzerbau – Theorie, Konstruktion, Generierung. Springer,1997.7


Kapitel 1Grundbegriffe1.1 Alphabete und Sprachen1.1.1 Vereinbarung IN bezeichnet die Menge {0, 1, 2, 3, . . .} der natürlichen Zahlen.Für die Menge {1, 2, 3, . . .} der positiven natürlichen Zahlen schreiben wir IN + .1.1.2 Definition Für eine beliebige Menge X, X ≠ ∅, bezeichnet Seq(X) die Mengeder endlichen Folgen oder ”Tupel“ in X, d. h. die Menge{(a 1 , . . . , a n ) | n ≥ 0, a 1 , . . . , a n ∈ X}.(Im Gegensatz dazu ist X IN = {(a i ) i≥0 | a i ∈ X für i ≥ 0} die Menge der unendlichenFolgen in X.)1.1.3 Beispiel Wir können endliche Tupel aus natürlichen Zahlen betrachten: DieMenge Seq(IN) enthält () (die leere Folge mit Länge 0), (0), (1), . . ., (0, 0), (0, 1), (0, 2),. . ., (1, 0), (1, 1), (1, 2), . . ., (3, 4, 4, 2), . . ..In höheren Programmiersprachen wie Pascal, C, Java, usw. wird anscheinend mit Zahlengerechnet. Bei genauerem Hinsehen stellt sich heraus, dass reale Rechner dies gar nichttun. Vielmehr operieren sie auf Bitfolgen (der Inhalt des Hauptspeichers eines Rechnersetwa ist eine Bitfolge, ebenso Dateiinhalte). Zahlen muß man binär kodieren. Auch wirwerden uns meist auf den Standpunkt stellen, dass Maschinen nur Zeichenreihen mit Zeichenaus einem endlichen Zeichensatz bearbeiten können. Im Anhang ”Zahldarstellungenund Abzählungen“ werden die Prinzipien des Umrechnens von Zahlen in Zeichenreihenund umgekehrt besprochen. An dieser Stelle geben wir einige allgemeine Grundkonzeptefür solche Zeichenreihen (synonym: Wörter, Strings, Zeichenketten) an.8


1.1.4 Definition Ein Alphabet Σ ist eine endliche nichtleere Menge. (Alphabete werdenoft auch mit ∆, Γ, . . . bezeichnet.) Die Elemente eines Alphabets heißen Buchstaben.Typische konkrete Buchstaben sind: 0, 1, 2,. . . , a, b, c, . . . , A, B, C, . . . , #, /c, $, . . ..Die Symbole a, b, . . . , a 0 , a 1 , a 2 , . . . werden auch als Platzhalter für ”beliebige Buchstaben“verwendet.1.1.5 Beispiel(a) Die Menge {1} oder {|} heißt das unäre Alphabet. Die Menge Σ = {0, 1} heißt dasbinäre Alphabet. Die Menge {0, 1, #} ist das binäre Alphabet mit Trennzeichen#.(b) Die Menge Γ = {0, 1} 8 ist das Alphabet aller 8-Bit-Strings (Bytes). Der einfacheASCII-Code gibt eine injektive Abbildung einer Menge von ”natürlichen“ Buchstaben,Ziffern, und Symbolen (d. h. eines gewissen Alphabets) in {0, 1} 7 an. DieseDarstellung wird dann durch eine führende Null zu einem Byte ergänzt. Der volleASCII-Code hat 256 ”Buchstaben“, unter ihnen auch jede Menge (unsichtbare)Steuerzeichen.(c) Das lateinische Alphabet besteht aus 26 Groß- und 26 Kleinbuchstaben und einerReihe von Sonderzeichen wie Punkt, Komma, Zwischenraum, usw.(d) Natürlich sind Alphabete Σ und Σ ′ ” gleichwertig“, wenn |Σ| = |Σ′ | gilt, es also einebijektive Abbildung von Σ nach Σ ′ gibt. Jedes Alphabet Σ mit k Buchstaben ist mit{1, 2, . . . , k} und {0, 1, . . . , k − 1} gleichwertig. Die Schreibweise Σ = {b 1 , b 2 , . . . , b k }bzw. Σ = {b 0 , b 1 , . . . , b k−1 } stellt die entsprechende Korrespondenz her.1.1.6 Definition Σ sei ein Alphabet. Für n ∈ IN bezeichnet Σ n die Menge aller Folgenw = (a 1 , . . . , a n ) aus n Buchstaben aus Σ. Statt (a 1 , . . . , a n ) schreiben wir a 1 · · · a n , fallskeine Verwirrung möglich ist 1 . Eine solche Folge w nennen wir ein Wort über Σ (synonym:Zeichenreihe, Zeichenkette oder String über Σ). Die Länge von w, bezeichnet mit|w|, ist n. Offenbar gibt es genau |Σ| n Wörter der Länge n über Σ. Die Menge aller Wörterüber Σ wird folgendermaßen bezeichnet:Σ ∗ := ⋃ {Σ n | n ∈ IN}.Natürlich ist Σ ∗ = Seq(Σ). Ein besonderes Wort ist ε, das leere Wort, das einzige Wortder Länge 0 über Σ. Formal: ε = (), die leere Folge.1 Sind die Buchstaben in Σ selbst Wörter, muss man natürlich die Fugen markieren:z.B. w = (11, 7, 9, 13, 20) bei Σ = {0, . . . , 31} oder w = 〈del1〉〈text〉〈del2〉 bei Σ = {del1, text, del2, . . .}.Treten (, ) und das Komma als Buchstaben auf, verhindert man Missverständnisse gegebenenfalls durchEinschließen in Anführungszeichen “(”, “)”, “,” oder dergleichen.9


Beachte: Σ 0 = {ε}, Σ 1 =“ Σ. (Man identifiziert das 1-Tupel (a) mit dem Objekt a und”erhält Σ 1 = {(b) | b ∈ Σ} =“ Σ.) Mit dieser Vereinbarung ist dann stets Σ ⊆ Σ ∗ .”Die Menge aller nichtleeren Wörter über Σ heißt Σ + :1.1.7 BeispielΣ + := Σ ∗ − {ε} = ⋃ {Σ n | n ≥ 1}.(a) Σ = {1} : Dann ist Σ ∗ = {ε, 1, 11, 111, 1111, 11111, . . .} ̂= {0, 1, 2, 3, 4, 5, . . .}.(Die Bijektion 1 } ·{{ · · 1}↔ k liefert die Strichlistendarstellung oder unäre Darstellungk−malfür die natürlichen Zahlen.)(b) Σ = {0, 1} : Dann ist Σ ∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, . . .}, die Menge aller Binärwörter.(c) Ein ASCII-File ist ein Wort über Σ = {0, 1} 8 . Man beachte dabei, dass bei der rechnerinternenDarstellung die unsichtbaren Leerzeichen als Buchstabe ( ”space“) geltenund Zeilenumbrüche durch Steuerzeichen markiert werden, die selbst Buchstabe imASCII-Alphabet sind.1.1.8 Definition Sind u = a 1 · · · a n und v = b 1 · · · b m Wörter (über einem AlphabetΣ), so heißt uv := a 1 · · · a n b 1 · · · b m (ein Wort der Länge n+m) die Konkatenation oderHintereinanderschaltung von u und v. (Manchmal findet man auch die Notation u◦voder u · v für diese Operation.)1.1.9 Beispiel010 · 111 = 010 ◦ 111 = 010111ε · 11 = ε ◦ 11 = 1110 · ε = 10 ◦ ε = 10εε = ε · ε = ε ◦ ε = ε1.1.10 Bemerkung Die Menge Σ ∗ ist mit der Operation ◦ (Konkatenation) ein Monoidmit neutralem Element ε, d.h. es gelten die folgenden Beziehungen:(i) Assoziativität: (uv)w = u(vw) für alle u, v, w ∈ Σ ∗ .(ii) Neutrales Element: εu = uε = u für alle u ∈ Σ ∗ .10


1.1.11 Beispiel(00 ◦ 10) ◦ 111 = 001011100 ◦ (10 ◦ 111) = 0010111100 ◦ ε = ε ◦ 100 = 100ε ◦ ε = εKonsequenz: Bei Konkatenation kann man Klammern beliebig setzen oder alle Klammernweglassen. Man schreibt also 00 ◦ 01 ◦ 101 für (00 ◦ 01) ◦ 101 oder 00 ◦ (01 ◦ 101).1.1.12 Definition Für ein Wort w = a 1 · · · a n ∈ Σ ∗ und einen Buchstaben a ∈ Σ sei|w| a := die Häufigkeit des Auftauchens von a in w:= |{i | 1 ≤ i ≤ n ∧ a i = a}|.Beispiele: |0101011| 1 = 4; |0101011| 0 = 3; |0101011| 2 = 0.Offenbar gilt: |uv| aΣ = {b 1 , . . . , b k } ist.= |u| a + |v| a (und ähnliche Formeln) und |w| = ∑ ki=1 |w| b i, wenn1.1.13 Definition Ist w ∈ Σ ∗ ein Wort und i ∈ IN, so wird mit w i die i-fache Konkatenationvon w mit sich selbst bezeichnet, d.h. w i = ww } {{ · · · w}. Formal definieren wiri−malinduktiv:w 0 := ε w i := ww i−1 , für i ≥ 1.Da Σ ⊆ Σ ∗ , ist damit auch a i für Buchstaben a ∈ Σ erklärt. Informal: a i = a } ·{{ · · a}, füri−mali ≥ 0. Man beachte die Gleichheiten a 0 = ε und a 1 = a, sowie ε i = ε für beliebiges i ≥ 0.Wir vereinbaren folgende Prioritätsregel beim Zusammentreffen von Konkatenation undPotenzierung: Potenzieren bindet stärker als Konkatenation. Um dies aufzuheben, sindgeeignet Klammern zu setzen.Beispiele: Sei Σ = {0, 1}. Ist a = 0 und w = 101, dann gilt a 0 = w 0 = ε, a 6 = 000000,w 3 = 101101101. Weiter gilt 0001 2 0 = 000110, (00)(01) 2 0 = 0001010 und (0001) 2 0 =000100010.1.1.14 Definition u und w seien Wörter über Σ. Dann heißt u ein⎧⎫⎨⎬⎩TeilwortPräfix oder AnfangsstückSuffix oder Endstück⎭ von w, falls ⎧⎨⎩∃v 1 , v 2 ∈ Σ ∗ : w = v 1 uv 2∃v ∈ Σ ∗ : w = uv∃v ∈ Σ ∗ : w = vuBeachte: Wenn u ein Präfix (oder Suffix) von w ist, ist u auch Teilwort von w, da w = εuv(oder w = vuε) geschrieben werden kann. — Es ist klar, dass jedes w ∈ Σ n genau n + 1Präfixe und n + 1 Suffixe hat, unter denen sich jeweils auch w selbst und ε befinden.11⎫⎬⎭ .


1.1.15 Beispiel 0000 ist Teilwort von 010000011, aber weder Präfix noch Suffix. 0000ist Präfix von 0000010 und Suffix von 1110000; daher ist 0000 auch Teilwort von 000010und 1110000.1.1.16 Definition(a) Wenn Σ ein Alphabet ist und L ⊆ Σ ∗ , dann heißt L eine (formale) Sprache überΣ.(b) Eine Menge L heißt eine (formale) Sprache, wenn es ein Alphabet Σ mit L ⊆ Σ ∗gibt.Im Zusammenhang mit dieser Vorlesung bedeutet ”Sprache“ immer dasselbe wie ”formaleSprache“.Sprachen interessieren uns in zweierlei Hinsicht: einmal als Formalisierung des Begriffseines ”Berechnungsproblems“ (dieser Aspekt wird in der AT-Vorlesung im Vordergrundstehen), hier aber zunächst als Gegenstände der Theorie der formalen Sprachen.Charakteristisch am Umgang mit Sprachen in der Informatik ist, dass die dort vorkommendenSprachen meist unendlich viele Wörter enthalten (man denke etwa an die Mengeder syntaktisch korrekten Pascal-Programme). Eine unendliche Sprache kann man nichtdurch Auflisten ihrer Elemente angeben, sondern immer nur dadurch, dass man eine endlicheMenge von Regeln angibt, anhand derer man entscheiden kann, welche Wörter dazugehören und welche nicht. In dieser Vorlesung werden viele solche Beschreibungsmethodenangegeben und der Umgang mit ihnen geübt. Wir werden als Beschreibungsform(Spezifikation) von Sprachen hauptsächlich Grammatiken betrachten, aber auch Maschinenmodelleuntersuchen, die die Analyse von vorgelegten Wörtern durchführen können,im Hinblick darauf, ob sie zu einer Sprache gehören oder nicht.Wenn L eine Sprache über Σ ist, so gehört zu L in ganz natürlicher Weise ein Entscheidungsproblem,nämlich:Wortproblem für L: Eingabe: w ∈ Σ ∗ . Ausgabe: JA, falls w ∈ L, NEIN sonst.Umgekehrt kann man normalerweise Entscheidungsprobleme als Wortprobleme über passendenSprachen formulieren. Dieser Zusammenhang wird aber erst im späteren Verlauf(Vorlesung AT) wichtig werden.1.1.17 Beispiel(a) L ∅ = ∅ heißt die leere Sprache; L ε = {ε} ist die Sprache, die nur das leere Wortenthält. L ∅ und L ε sind Sprachen über Σ für jedes Alphabet Σ. Für jedes beliebige12


Alphabet Σ ist Σ ⊆ Σ ∗ , also ist die Menge Σ eine Sprache; für n ∈ IN beliebig istΣ n eine Sprache, Σ ∗ ist Sprache über Σ. Für a ∈ Σ ist {a n | n ∈ IN} Sprache überΣ.(b) Sei Σ = {0, 1} das binäre Alphabet. Dann ist Σ + = die Sprache aller nichtleeren Bitstrings;Σ 8 ist die Sprache, die genau die 256 verschiedenen Bytes enthält; Σ 32 ist dieSprache, die alle 32-Bit-Wörter enthält. Einem Binärwort w = b k−1 · · · b 0 ∈ Σ k entsprichtdie Zahl (w) 2 = ∑ k−1i=0 b i2 i (Umrechnung von Binärdarstellung in natürlicheZahl). Ist i ∈ IN, so heißt ein Wort w mit |w| ≥ 1 und (w) 2 = i eine Binärdarstellungvon i. Das kürzeste solche Wort w (außer für (0) 2 = 0 hat das Wort w alserstes Zeichen eine 1) heißt oft die“ Binärdarstellung von i und wird mit bin(i)”bezeichnet.Für i ∈ IN nennen wir 1 i die Unärdarstellung von i. Offenbar ist die AbbildungIN ∋ i ↦→ 1 i ∈ {1} ∗eine Bijektion. Eine (recht natürliche) Bijektion IN ↔ {1, 2} ∗ wird in Abschnitt A.1.2im Anhang vorgestellt.(c) Man kann nun mathematische und andere Probleme als Wortprobleme über passendenSprachen darstellen, z. B.L gerade = {0, 10, 100, 110, 1000, 1010, 1100, . . .} = {bin(n) ∈ {0, 1} ∗ | n gerade}.L bin = {0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, . . .} = {bin(n) | n ∈ N}.L prim = {10, 11, 101, 111, 1011, 1101, 10001, 10011, . . .} = {bin(p) | p Primzahl}.L Primzahlzwillinge = {bin(i)#bin(j) | i, j ∈ IN, i + 2 = j, i, j Primzahl}.Dabei heißt ein Paar (i, i + 2) ein Paar von Primzahlzwillingen, wenn sowohl i alsauch i + 2 Primzahlen sind. Zum Beispiel sind (3, 5), (5, 7), (11, 13), (17, 19) solchePaare. Es ist ein berühmtes offenes Problem der Zahlentheorie, herauszufinden, ob esunendlich viele solche Paare gibt. L Primzahlzwillinge ist eine Sprache über dem Alphabet{0, 1, #}. Das Problem ”Gibt es unendlich viele Primzahlzwillinge?“ lässt sich dannschreiben als die Frage ”Ist L Primzahlzwillinge unendlich?“Wenn Σ ⊆ Σ ′ ist, so ist selbstverständlich jede Sprache über Σ automatisch auch Spracheüber Σ ′ . Wir werden dies im folgenden oft stillschweigend benutzen. Insbesondere kannman bei beliebigen Sprachen L 1 (über Σ 1 ) und L 2 (über Σ 2 ) immer annehmen, dassdasselbe Alphabet zugrundeliegt: man wähle einfach Σ = Σ 1 ∪ Σ 2 .1.1.18 Definition(a) Sind L 1 und L 2 Sprachen, so heißtL 1 L 2 = {w 1 w 2 | w 1 ∈ L 1 , w 2 ∈ L 2 } (auch L 1 ◦ L 2 oder L 1 · L 2 )13


die Konkatenation von L 1 und L 2 .Beispiele:{0} ∗ {1} ∗ = {0 i 1 j | i, j ≥ 0},{0} ∪ {1}{0, 1} ∗ = L bin .Beachte: Die Konkatenation ist assoziativ, d. h. für beliebige Sprachen L 1 , L 2 , L 3 giltWeiter gilt(L 1 L 2 )L 3 = L 1 (L 2 L 3 ).L ε L = LL ε = L für jede Sprache L.(Damit ist für jedes Alphabet Σ die Menge {L | L ⊆ Σ ∗ , L ≠ ∅} der nichtleerenSprachen über Σ ein Monoid mit neutralem Element L ε .) Andererseits ist L ∅ einauslöschendes Element, denn es giltL ∅ L = LL ∅ = L ∅ = ∅ für jede Sprache L.(Die Beweise sind einfache Übungsaufgaben.)(b) Ist L Sprache, so definieren wir:L i := {w 1 w 2 · · · w i | w 1 , . . . , w i ∈ L}, für i ≥ 0.Formal definieren wir induktiv:L 0 := L ε ;L i := LL i−1 für i ≥ 1.Man beachte, dass {w i | w ∈ L} ⊆ L i ist, dass aber gewöhnlich nicht Gleichheitherrscht, wie man etwa an dem Beispiel {01, 10} 2 = {0101, 0110, 1001, 1010} ≠{0101, 1010} sieht.Weiter seiL ∗ := ⋃ {L i | i ≥ 0} = L 0 ∪ L 1 ∪ L 2 ∪ L 3 ∪ · · ·Diese Sprache heißt der Kleene-Abschluss von L. Weiter seiL + := ⋃ {L i | i ≥ 1} = L 1 ∪ L 2 ∪ L 3 ∪ · · · .In Worten: L ∗ enthält die Wörter w der Form w = w 1 · · · w i , i ≥ 0, wobei w 1 , . . . , w i ∈L; L + enthält die Wörter w = w 1 · · · w i , i ≥ 1, wobei w 1 , . . . , w i ∈ L sind. Zur Übungüberlege man, dass L + = LL ∗ = L ∗ L ist.Man beachte den Unterschied zwischen L ∗ und {w i | w ∈ L, i ≥ 0}. Für die SpracheL = {0, 11} ist zum Beispiel das Wort 011001111011 = 0(11)00(11)(11)0(11) in L ∗enthalten, nicht aber in {w i | w ∈ L, i ≥ 0}.14


(c) Sprachen lassen natürlich auch alle Mengenoperationen zu, insbesondere folgende:Sind L 1 , L 2 Sprachen, so auch die Vereinigung L 1 ∪ L 2 und der DurchschnittL 1 ∩ L 2 .Ist L Sprache über Σ, kann man auch das Komplement L = Σ ∗ − L betrachten.L ∅ ist neutrales Element bezüglich Vereinigung: L ∪ L ∅ = L ∅ ∪ L = L.Für Sprachen über Σ ist Σ ∗ neutrales Element bezüglich Durchschnitt: L ∩ Σ ∗ =Σ ∗ ∩ L = L.1.1.19 Beispiel Betrachte L 1 = {w ∈ {0, 1} ∗ | |w| 0 = |w| 1 } undL 2 = {0} ∗ {1} ∗ = {0 i 1 j | i, j ≥ 0}.Dann istundL 1 ∩ L 2 = {0 i 1 j | i = j} = {ε, 01, 0011, 000111, . . .}L 1 = {w ∈ {0, 1} ∗ | |w| 0 ≠ |w| 1 }.Sprechweise: Oft betrachtet man die Gesamtheit aller Sprachen mit einer gewissen Eigenschaft.Dann sprechen wir gewöhnlich von einer Klasse von Sprachen (nicht von einerMenge). Beispiele hierfür: Die Klasse aller Sprachen“, die Klasse der unendlichen Sprachen“,die Klasse der Sprachen über einem einelementigen Alphabet“, die Klasse der” ”” ”regulären Sprachen“. Für Mathematikfans und Puristen sei kurz der Hintergrund erklärt:In der Mengenlehre zeigt man, dass die Gesamtheit aller Mengen selber keine Menge ist.Daraus ergibt sich sofort, dass die Gesamtheit aller Alphabete keine Menge sein kann, undauch nicht die Gesamtheit aller formalen Sprachen. Für Gesamtheiten, die man definierenkann, die aber keine Mengen darstellen, benutzt man in der Mengenlehre die Bezeichnung(echte) Klasse“. (Für den Gebrauch in dieser Vorlesung macht diese Feinheit aber keinen”Unterschied.)15


Kapitel 2Endliche Automaten und reguläreSprachenDie regulären Sprachen ( ”regular sets“) sind die einfachsten formalen Sprachen. Wir werdenMaschinenmodelle kennenlernen ( ”endliche Automaten“ in verschiedenen Varianten),die diesen Sprachen entsprechen, und andere Methoden, diese Sprachen zu beschreiben( ”reguläre Ausdrücke“ und ”reguläre Grammatiken“). Wir wollen unsanhand der regulären Sprachen exemplarisch die Übergänge zwischen verschiedenen Beschreibungsformenfür dieselbe Sprache klarmachen, und für diese Übergänge soweit wiemöglich effiziente Algorithmen bereitstellen. Zudem wird sich zeigen, dass man für jedereguläre Sprache algorithmisch einen ”effizientesten“ Automaten konstruieren kann.Ebenso wichtig wie das Konzept der regulären Sprache ist das Konzept des Automatenselbst, das in vielen verschiedenen Teilbereichen der Theoretischen, der Praktischen undder Technischen Informatik Anwendung findet. Erinnert sei an die Vorlesung ”Rechnerorganisation“,in der schon endliche Automaten untersucht wurden. 12.1 Deterministische endliche AutomatenIn diesem Abschnitt besprechen wir das für die regulären Sprachen grundlegende Maschinenmodell:die deterministischen endlichen Automaten ( ”deterministic finiteautomata“, abgekürzt ”DFA“). Diese Automaten erhalten ein Eingabewort x =b 1 · · · b m ∈ Σ ∗ (für ein Alphabet Σ) vorgelegt, das einmal von links nach rechts gelesenwird. Endliche Automaten haben eine Steuereinheit, die eine endliche Speicherkapazitätrepräsentiert und abstrakt durch eine endliche Menge Q von Zuständen gegeben ist. Einerder Zustände ist als Startzustand ausgezeichnet (bezeichnet mit q 0 ). Startend in p 0 = q 0 ,liest der DFA einen Buchstaben des Eingabewortes nach dem anderen und geht dabei in1 Im Gegensatz zur dortigen Darstellung ist es für unsere Zwecke nicht wichtig, ob die Eingabezeichenund die Zustände binär oder anders dargestellt werden.16


jedem Schritt in Abhängigkeit vom alten Zustand p t−1 und dem gerade gelesenen Buchstabena t in einen Zustand p t über, für t = 1, 2, . . . , m. Welcher Zustand jeweils anzunehmenist, wird von einer Übergangsfunktion δ : Q × Σ → Q vorgeschrieben (δ(q, a) = q ′ bedeutet:wird in Zustand q der Buchstabe a gelesen, so ist der neue Zustand q ′ ). Am Endeder Berechnung, d. h. sobald der letzte Buchstabe b m gelesen wurde, wird (nur!) anhandvon p m , dem schließlich erreichten Zustand, entschieden, ob x = b 1 · · · b m” akzeptiert“oder ”verworfen“ werden soll. Dazu wird eine Menge F ⊆ Q (die ”akzeptierenden“Zustände) benutzt.Hinter dem Modell des deterministischen endlichen Automaten steht das etwas allgemeinereKonzept eines ”finite state system“: ein System mit endlich vielen Zuständen(Menge Q), das mit einer Folge von ”Signalen“ aus einem endlichen Vorrat Σ von Signalengefüttert wird und auf jedes Signal mit dem Übergang in einen durch alten Zustandund Signal eindeutig bestimmten nächsten Zustand reagiert. Wenn man noch einen Startzustandq 0 spezifiziert ( ”Reset-Zustand“), so bestimmt jede Signalfolge (b 1 , . . . , b m ) ∈ Σ ∗eine Folge von Zuständen, die das System durchläuft. Dieses Modell lässt sich auch durcheine Ausgabefunktion erweitern, so dass etwa in jedem Schritt ein Ausgabesignal odereine endliche Folge von Ausgabesignalen erzeugt wird (Moore- und Mealy-Automaten,siehe Vorlesung ”Rechnerorganisation“).Wir stellen die Bearbeitung eines Eingabewortes durch einen DFA wie folgt graphischdar:b 1bp 2 bp =q1p m0 0 2p m F ?Start ...Abbildung 2.1: Ablauf einer Berechnung auf einem DFADie Folge der durchlaufenen Zustände p 0 , . . . , p m wird als (gerichteter) Weg dargestellt,wobei natürlich Wiederholungen möglich sind. Die Kante vom Knoten p t−1 zum Knotenp t ist mit a t markiert.Wir geben nun eine präzise Definition von DFA’s und ihrer Arbeitsweise.2.1.1 Definition Ein deterministischer endlicher Automat ( ”deterministicfinite automaton“ — DFA) M besteht aus 5 Komponenten:• einer endlichen Menge Q (der ”Zustandsmenge“);• einem Alphabet Σ (dem ”Eingabealphabet“);• einem ausgezeichneten Zustand q 0 ∈ Q (dem ”Startzustand“);• einer Menge F ⊆ Q von ”akzeptierenden“ Zuständen;• einer ” Übergangsfunktion“ δ : Q × Σ → Q.(Formal schreibt man M = (Q, Σ, q 0 , F, δ).)17


Wenn ein DFA M = (Q, Σ, q 0 , F, δ) gegeben ist, dann kann man ein beliebiges Eingabewortb 1 · · · b m von M verarbeiten lassen und am Ende nachsehen, ob der erreichte Zustand p min F liegt oder nicht.2.1.2 Beispiel Wir beschreiben einen DFA, der genau die Dezimalzahlen akzeptiert,deren Wert nicht durch 3 teilbar ist. Nach einer bekannten Rechenregel gilt: N =(b 1 · · · b m ) 10 ist durch 3 teilbar genau dann wenn die Quersumme der Dezimaldarstellungb 1 · · · b m von N durch 3 teilbar ist, d. h. wenn ∑ 1≤i≤m b i ≡ 0 (mod 3) ist. Wir gebennun einen Automaten an, der eine Dezimalzahl (auch mit führenden Nullen) ziffernweisevon links nach rechts liest und dabei (in der Steuereinheit) die Quersumme der bislanggesehenen Ziffern modulo 3 speichert. Wir setzen M = (Q, Σ, q 0 , F, δ) mit Q = {0, 1, 2}(die möglichen Reste), Σ = {0, 1, . . . , 9}, q 0 = 0, F = {1, 2}; δ ist durch folgende Tabellegegeben:δ:aq 0 1 2 3 4 5 6 7 8 90 0 1 2 0 1 2 0 1 2 01 1 2 0 1 2 0 1 2 0 12 2 0 1 2 0 1 2 0 1 2Tabelle 2.1: Tabellendarstellung eines DFAWir sehen uns an, wie der DFA auf der Eingabe w = 044318 arbeitet. Es werden dieZustände 0, 0, 1, 2, 2, 0 durchlaufen und schließlich 2 erreicht. Da 2 ∈ F , wird dasEingabewort w akzeptiert. Es werden die Zustände 0, 0, 1, 2, 2, 0 durchlaufen undi 0 1 2 3 4 5 6b i 0 4 4 3 1 8p i 0 0 1 2 2 0 2∈ F ? – – ∗ ∗ ∗ – ∗Tabelle 2.2: Arbeitsweise eines DFAschließlich 2 erreicht. Da 2 ∈ F , wird das Eingabewort w akzeptiert. — Man bemerkt,dass man aus der Berechnung auch erfährt, dass das leere Wort ε nicht akzeptiert wird,ebenso wie die Ziffernfolge 04431.Dem Leser wird geraten, als weiteres Beipiel die von M auf den Eingaben u = 00123234345durchlaufene Zustandsfolge anzusehen. (u wird nicht akzeptiert.) Man überzeugt sichleicht (per Induktion über t), dass M nach dem Lesen von b 1 , . . . , b t im Zustand ∑ 1≤i≤t b i mod3 ist, sich also die Quersumme modulo 3 ”merkt“. Aufgrund der Festlegung von F giltdann, dass M genau die Wörter akzeptiert, die Zahlen darstellen, die nicht durch 3 teilbarsind.18


2.1.3 Bemerkung (Darstellungsweisen für endliche Automaten) Es wird sich als vorteilhafterweisen, verschiedene Darstellungsweisen für endliche Automaten zur Verfügungzu haben. Wir charakterisieren zuerst die eben im Beispiel verwendete Form.(a) Tabellenform:Man hat die Mengen Q und Σ durch Auflistungen gegeben, ebenso F ; weiter ein Elementq 0 ∈ Q. Die Übergangsfunktion δ ist als Tabelle (|Q| × |Σ|-Matrix) gegeben: Der Eintragam Schnittpunkt der Zeile für q ∈ Q mit der Spalte für a ∈ Σ ist δ(q, a) ∈ Q. Als Beispielbetrachte man Tab. 2.1.Diese Form ist besonders gut zur Ausführung der Berechnungen von DFA’s und zur Manipulationvon DFA’s auf Rechnern geeignet. Die dazu benötigten Datenstrukturen mögeman sich selbst zurechtlegen. (Arrays für Σ und Q, ein Bitvektor für F , ein Index für q 0 ,ein zweidimensionales Array mit Einträgen aus Q für δ. Wenn ein Eingabewort verarbeitetwird, muss nur ein Zustand, d. h. ein Index im Q-Array, gespeichert werden.)(b) Beschreibung durch Formeln:Mitunter ist Q so groß, dass eine explizite Auflistung nicht in Frage kommt. Man denkeetwa an ein 32 Bit breites Register, auf das eine Folge von 30-Bit-Zahlen aufaddiert werdensoll (modulo 2 32 ). Der Zustand ist der Inhalt des Registers, ein Eingabe- ”Buchstabe“ist ein 30-Bit-String. Also ist Q = {0, 1} 32 und Σ = {0, 1} 30 Die Tabelle hätte Größe2 62 ≈ 4,6 · 10 18 . Man schreibt dann einfach:δ(q, a) = die Binärdarstellung (mit 32 Bits) von (q) 2 + (a) 2 ,für q ∈ Q und a ∈ Σ. Der Startzustand q 0 ist eventuell das Wort 0 32 ; wie die Menge F zuwählen ist, hängt von der Anwendung ab.(c) Graphenform:Man kann einen DFA M als einen gerichteten Graphen G M mit Knoten- und Kantenmarkierungenauffassen. Jedem Zustand q ∈ Q entspricht ein Knoten v q mit Markierungq. Die (gerichteten) Kanten in G M sind mit Buchstaben a ∈ Σ markiert. Dabei verläufteine mit a markierte Kante von v q nach v q ′ genau dann wenn δ(q, a) = q ′ . Beachte, dassG M Mehrfachkanten (mit verschiedenen Markierungen) und Schleifen (Kanten mit demselbenAnfangs- und Endpunkt) besitzen kann. Jeder Knoten in G M hat genau |Σ| vieleausgehende Kanten.qaq’Einfachkanteδ(q,a)=q’dbqabdq’Mehrfachkanteδ(q,a)=δ (q,b)=δ(q,d)=q’aq cSchleifeδ(q,a)=δ (q,c)=q19


Abbildung 2.2: Graphische Darstellung eines DFAEine Tabelle für δ wie in (a) ist einfach eine kompakte Beschreibung von G M .Die Knoten v q0 und v q , q ∈ F , sind speziell markiert. Wenn wir G M zeichnen, markierenwir v q0 mit einem mit Start“ bezeichneten eingehenden Pfeil; die Knoten v ” q mit q ∈ Ferhalten einen doppelten Rand:Startq 0qAbbildung 2.3: Startknoten (links) und Knoten für einen akzeptierenden Zustand (rechts)Bei der graphischen Darstellung vermeiden wir Mehrfachkanten von v q nach v q ′ dadurch,dass wir nur eine Kante angeben und diese mit den Elementen der Menge {a ∈ Σ |δ(q, a) = q ′ } bzw. einer Abkürzung für diese Menge markieren.Der große Vorteil der Darstellung von endlichen Automaten als Graphen liegt nebender anschaulicheren Darstellung darin, dass DFA’s mit Graphenalgorithmen bearbeitetwerden können. Wir werden die Graphensichtweise oft verwenden.Als graphische Darstellung des Automaten aus Beispiel 2.1.2 ergibt sich folgendes:Start0,3,6,92,5,8 0,3,6,92,5,80 1,4,7 1 1,4,7 21,4,72,5,80,3,6,9Abbildung 2.4: Graphische Darstellung eines DFADie akzeptierende Berechnung von M auf der Eingabe x = 12211112 wird wie folgtdargestellt:Start1 2 2 1 1 1 1 20 1 0 2 0 1 2 0 2Abbildung 2.5: Eine akzeptierende BerechnungMan ”sieht“, dass jedes Wort w = b 1 · · · b m einen Weg in G M beschreibt, der in v q0beginnt und dessen Kanten mit den Buchstaben b 1 , . . . , b m beschriftet sind. Dieser Wegist eindeutig bestimmt, weil δ eine Funktion ist. Die Darstellung der Berechnung wiein Abb. 2.1 ergibt sich dabei als ”abgewickelte“ Version dieses Weges, wobei die Knoten20


wiederholt werden. Das Wort w wird genau dann akzeptiert, wenn der von w in G erzeugteWeg in einem Knoten v q mit q ∈ F endet.2.1.4 Beispiel Sei Σ = B ∪ Z, wo B = {a, . . . , z, A, . . . , Z} die Menge der Buchstabenund Z = {0, . . . , 9} die Menge der Dezimalziffern ist. Weiter seiL := BΣ ∗ (= {w ∈ Σ ∗ | w beginnt mit einem Buchstaben})die Menge der legalen Bezeichner ( ”identifier“), z. B. in Pascal. Zum Beispiel sind eagle15und afs2004 in L, nicht jedoch 1E oder ε. Der folgende Automat M = (Q, Σ, q 0 , F, δ)akzeptiert genau die Wörter in L: Q = {0, 1, 2}, F = {1}, q 0 = 0, und δ gegeben durchfolgendes Diagramm:Start0BZ12ΣΣAbbildung 2.6: DFA mit Fehlerzustand ”2“2ΣBemerkenswert an diesem Diagramm ist der Knoten v 2 : Ein solcher Knoten stellteinen Fehlerzustand“ dar. Wird während der Verabeitung eines Eingabewortes einmal”dieser Zustand erreicht, kann er nie mehr verlassen werden, und der Automat wird garantiertverwerfen. Mitunter lässt man in der graphischen Darstellung von DFA’s solcheFehlerzustände und die in sie hineinführenden Kanten weg. Das sieht dann so aus:StartB0 1 ΣAbbildung 2.7: DFA aus Abb. 2.6, Fehlerzustand weggelassenWenn beim Lesen eines Wortes w versucht wird, eine nicht vorhandene Kante zu benutzen,ist man schon sicher, dass w nicht akzeptiert wird.Wir wenden uns nun der mathematischen Definition der zu einem DFA M gehörendenSprache zu. Man definiert, in welchen Zustand M gerät, wenn er in einem beliebigenZustand q startet und das Wort w = b 1 · · · b m , m ≥ 0, liest, und sieht nach, ob dieserZustand in F liegt.2.1.5 Definition(a) Definiere ˆδ : Q × Σ ∗ −→ Q durch Induktion über die Länge m eines Wortes w =b 1 · · · b m :21


ˆδ(q, ε) := q, für q ∈ Q.;ˆδ(q, b 1 · · · b m ) := δ(ˆδ(q, b 1 · · · b m−1 ), b m ), für q ∈ Q, m ≥ 1, b 1 , . . . , b m ∈ Σ.(Kurz: ˆδ(q, ε) = q, für q ∈ Q; ˆδ(q, ua) = δ(ˆδ(q, u), a), für q ∈ Q und u ∈ Σ ∗ , a ∈ Σ.)(b) Für w ∈ Σ ∗ definieren wir: M akzeptiert w, falls ˆδ(q 0 , w) ∈ F .(c) L M := {w ∈ Σ ∗ | M akzeptiert w}.Wenn L = L M , sagt man auch: ”M akzeptiert L“, als Abkürzung für ”M akzeptiertdie Wörter in L und nur diese“. Umgekehrt heißt L ”die von M akzeptierteSprache“.(d) Eine Sprache L heißt regulär, falls es einen DFA M mit L = L M gibt.(Die Herkunft der Bezeichnung ”regulär“ wird in Abschnitt 2.3 geklärt.)Für q ∈ Q, a ∈ Σ gilt nach den Definitionen: ˆδ(q, a) = ˆδ(q, εa) = δ(ˆδ(q, ε), a) = δ(q, a).Also ist ˆδ eine Fortsetzung von δ von Q × Σ auf Q × Σ ∗ . Es kann also keine Verwirrungauftreten, wenn wir ab jetzt stets δ statt ˆδ schreiben.Die erweiterte δ-Funktion hat eine simple Interpretation im Automatengraphen G M :δ(q, w) = q ′ gilt genau dann, wenn man in v q startend und dann den von w = b 1 · · · b mvorgeschriebenen Kanten folgend den Knoten v q ′ erreicht.Wir notieren einfache Eigenschaften, die die Aneinanderreihung von Teilrechnungen betreffen.2.1.6 Bemerkung(a) Sind w, w ′ ∈ Σ ∗ , q ∈ Q, so ist δ(q, ww ′ ) = δ(δ(q, w), w ′ ).(b) Sind w 1 , w 2 , ∈ Σ ∗ , q ∈ Q mit δ(q, w 1 ) = δ(q, w 2 ), so ist δ(q, w 1 w ′ ) = δ(q, w 2 w ′ ) füralle w ′ ∈ Σ ∗ .Beweis (a) Diese Aussage sollte intuitiv klar sein. Wir geben den Beweis als Beispielfür einen einfachen Beweis durch Induktion über die Länge von Wörtern“ an.)”Induktion über |w ′ |:I. A.: Ist |w ′ | = 0, also w ′ = ε, so ist δ(q, ww ′ ) = δ(q, w) = δ(δ(q, w), ε) nach Definition2.1.5(a).I. S.: Ist |w ′ | ≥ 1, also w ′ = ua für u ∈ Σ ∗ , a ∈ Σ, so gilt:δ(q, ww ′ ) = δ(q, wua) 2.1.5(a) = δ(δ(q, wu), a) I.V.= δ(δ(δ(q, w), u), a) 2.1.5(a) == δ(δ(q, w), ua) = δ(δ(q, w), w ′ ).(b) δ(q, w 1 w ′ ) (a)= δ(δ(q, w 1 ), w ′ ) Vor.= δ(δ(q, w 2 ), w ′ ) (a)= ˆδ(q, w 2 w ′ ). □22


Bemerkung 2.1.6 kann man informal so ausdrücken: Alles, was ein DFA nach dem Leseneines Präfixes w der Eingabe ”weiß“, steckt in dem Zustand δ(q 0 , w). Weil Q endlich ist,kann ein DFA nur endlich viele verschiedene Situationen auseinanderhalten. Wir benutzendies, um eine ganz einfache Aufgabe anzugeben, die kein DFA lösen kann.2.1.7 Beispiel ( ”Kein endlicher Automat kann beliebig weit zählen“.) Wir betrachtendie SpracheL := {x ∈ {0, 1} ∗ | |x| 0= |x| 1},die aus allen Binärwörtern besteht, die genau gleich viele Nullen und Einsen haben. (ZumBeispiel ist 01100011 ∈ L, nicht aber 00011100.) Wir behaupten: L ist nicht regulär. DerBeweis ist indirekt. Angenommen, es gilt L = L M für einen DFA M = (Q, Σ, q 0 , F, δ).Weil Q endlich ist, können die Zustände δ(q 0 , 0), δ(q 0 , 0 2 ), δ(q 0 , 0 3 ), . . . nicht alle verschiedensein, also gibt es i, j ≥ 0 mit i < j, so dass δ(q 0 , 0 i ) = δ(q 0 , 0 j ). Weil L = L Mund 0 i 1 i ∈ L und 0 j 1 i /∈ L, gilt δ(q 0 , 0 i 1 i ) ∈ F und δ(q 0 , 0 j 1 i ) ∉ F . Andererseits gilt(wegen δ(q 0 , 0 j ) = δ(q 0 , 0 i ) und nach 2.1.6(b)), dass δ(q 0 , 0 i 1 i ) = δ(q 0 , 0 j 1 i ). Dies ist dergewünschte Widerspruch.2.1.8 Bemerkung Zwischen Definition 2.1.5 und der graphischen Darstellung vonDFA’s besteht folgender einfacher Zusammenhang. Dabei ist mit G M die eigentlicheVersion, also die mit Mehrfachkanten, gemeint. Zu einem Zustand q und einem Wortx = b 1 · · · b m gehört ein eindeutig bestimmter Weg der Länge m, der in v q startet unddessen Kanten mit b 1 , . . . , b m markiert sind. Offenbar gilt δ(q, b 1 · · · b m ) = q ′ genau dann,wenn dieser Weg in v q ′ endet. (Z. B. haben wir oben den Weg, der in dem Automaten ausBeispiel 2.1.2 von Zustand 0 ausgehend durch das Wort 12211112 erzeugt wird, explizitangegeben.) Man beachte den Spezialfall m = 0, der einem Weg der Länge 0 entspricht.Der Fall q = q 0 führt zu folgender Charakterisierung des Akzeptierungsbegriffs:b 1 · · · b m ∈ L M genau dann, wenn der eindeutige Weg, der in v q0 startet undKantenbeschriftung b 1 , . . . , b m hat, in einem Knoten v q mit q ∈ F endet.Zur Übung interpretiere man Bemerkung 2.1.6(a) in der Sichtweise der Graphen. (Eswerden Wege aneinandergehängt.)Wir wollen einige einfache Eigenschaften der Klasse der regulären Sprachen notieren.Vorher stellen wir ein Lemma bereit, das besagt, dass man bei einer regulären SpracheL das Alphabet des zugehörigen Automaten beliebig wählen kann, solange das Alphabetalle Buchstaben enthält, die in Wörtern von L vorkommen.2.1.9 Lemma Wenn L reguläre Sprache ist und L ⊆ Σ ∗ , dann existiert ein DFAM = (Q, Σ, q 0 , F, δ) mit L = L M .23


Beweis Weil L regulär ist, existiert nach Definition 2.1.5(d) ein DFA M ′ = (Q ′ , Σ ′ , q ′ 0, F ′ , δ ′ )mit L = L M ′. (Das Problem ist, dass Σ ≠ Σ ′ sein kann, und auf den ersten Blick keinDFA für L mit Alphabet Σ in Sicht ist. Man stelle sich vor, Σ = {0, 1}, L ⊆ {0} ∗ , und wirhaben einen DFA für L mit Alphabet Σ ′ = {0, a, b}.) Wir bauen M ′ wie folgt zu einemneuen DFA M um: Buchstaben aus Σ ′ − Σ werden nicht berücksichtigt (sie kommen inWörtern aus L auf keinen Fall vor). Buchstaben aus Σ − Σ ′ werden gelesen, führen abersofort in einen Fehlerzustand, denn auch sie kommen in Wörtern aus L nicht vor. Formalsetzen wir:Q = Q ′ ∪ {q FEHLER }, für einen neuen Zustand q FEHLER ,q 0 = q ′ 0 ,F = F ′ ,δ(q, a) = δ ′ (q, a), wenn q ∈ Q ′ , a ∈ Σ ∩ Σ ′ ;δ(q, a) = q FEHLER , wenn q ∈ Q ′ , a ∈ Σ − Σ ′ ;δ(q FEHLER , a) = q FEHLER für alle q ∈ Q.In der Graphendarstellung sieht die Änderung so aus: Aus G M ′ werden alle Kanten weggelassen,die mit a ∈ Σ ′ − Σ beschriftet sind. Sodann wird ein neuer Knoten für denFehlerzustand q FEHLER hinzugefügt; aus allen ursprünglichen Knoten führen Kanten, diemit a ∈ Σ − Σ ′ beschriftet sind, in diesen Fehlerknoten.Es ist leicht zu sehen, dass folgendes gilt: Für w ∈ (Σ∩Σ ′ ) ∗ ist δ(q 0 , w) = δ ′ (q 0 ′ , w), also istw ∈ L M genau dann wenn w ∈ L M ′ = L. (Formal beweist man das durch Induktion überdie Länge von w.) Für w ∈ Σ ∗ , die mindestens einen Buchstaben aus Σ − Σ ′ enthalten,ist δ(q 0 , w) = q FEHLER , also w ∉ L M . Daraus folgt L M = L.□2.1.10 Satz(a) Die Sprache L ∅ = ∅ ist regulär.(b) Ist Σ ein Alphabet und w ∈ Σ ∗ , so ist {w} regulär. (Insbesondere sind also {ε} und{a} für a ∈ Σ regulär.)(c) Sind L 1 und L 2 reguläre Sprachen, so sind auch L 1 ∪ L 2 und L 1 ∩ L 2 regulär.(d) Alle endlichen Sprachen sind regulär.(e) Ist L ⊆ Σ ∗ eine reguläre Sprache, so ist auch L = Σ ∗ − L regulär.Beweis(a) Der DFA24


Start0Σ(für ein beliebiges Alphabet Σ) akzeptiert ∅. (Zur Übung gebe man diesen Automatenauch in Tabellenform an.)(b) Ist w = a 1 · · · a n ∈ Σ ∗ , so akzeptiert der DFAa1a 2 a 3a n-1 a nStart 0 1 2 . . . n-1 nΣ−{ a 1 }Σ−{ a 2 }Σ−{ a 3 }. . .Σ−{ a n }Σq FEHLERΣdie Sprache {w}.(Übung: Wie sieht die Tabelle für δ aus?)Man beachte die folgenden Spezialfälle: Für w = ε fallen die Zustände 0 und nzusammen, d. h. der DFA hat nur zwei Zustände 0 und q FEHLER . Dabei ist δ(0, a) =q FEHLER für alle a ∈ Σ, und F = {0}. Für w = a ∈ Σ hat der DFA drei Zustände 0,1 und q FEHLER . (Was ist δ und F ?)(c) Wähle ein Alphabet Σ mit L 1 ∪ L 2 ⊆ Σ ∗ und (nach Lemma 2.1.9 geht das!)DFA’s M 1 = (Q 1 , Σ, q (1)0 , F 1 , δ 1 ) und M 2 = (Q 2 , Σ, q (2)0 , F 2 , δ 2 ) mit L M1 = L 1 undL M2 = L 2 . Die Idee ist, beide Automaten gleichzeitig“ laufen zu lassen. Dazu sieht”man Zustände vor, die aus einem M 1 -Zustand und einem M 2 -Zustand bestehen.Aus offensichtlichen Gründen heißt die folgende Konstruktion Kreuzproduktkonstruktion.DefiniereQ := Q 1 × Q 2 ,q 0 := (q (1)0 , q(2) 0(), )δ((q (1) , q (2) ), a) := δ 1 (q (1) , a), δ 2 (q (2) , a) , für q (1) ∈ Q 1 , q (2) ∈ Q 2 , a ∈ Σ.Man zeigt dann durch Induktion über |w| :δ(q 0 , w) = (δ 1 (q (1)0 , w), δ 2(q (2)0 , w)) ∈ Q, für alle w ∈ Σ.25


Wenn wir also definieren:F ′ := {(q (1) , q (2) ) ∈ Q | q (1) ∈ F 1 und q (2) ∈ F 2 },F ′′ := {(q (1) , q (2) ) ∈ Q | q (1) ∈ F 1 oder q (2) ∈ F 2 },so sehen wir (nach Definition 2.1.5), dass M ′ = (Q, Σ, q 0 , F ′ , δ) ein DFA für L 1 ∩ L 2und M ′′ = (Q, Σ, q 0 , F ′′ , δ) ein DFA für L 1 ∪ L 2 ist.Analog kann man DFA’s für andere Boolesche Kombinationen wie L 1 − L 2 oderL 1 ⊕ L 2 = (L 1 − L 2 ) ∪ (L 2 − L 1 ) konstruieren.(Man überlege zur Übung, wie der Graph G M ′ bzw. G M ′′ aussieht. Tip: Trage dieKnoten von G M ′ in ein Gitter ein, dessen Zeilen mit q (1) ∈ Q 1 und dessen Spalten mitq (2) ∈ Q 2 beschriftet sind. Der Knoten für Zustand (q (1) , q (2) ) sitzt am Schnittpunktvon Zeile q (1) und Spalte q (2) .)(d) Um einen DFA für die Sprache L := {w 1 , . . . , w m } zu erhalten, definiere L 0 := ∅und L i := {w 1 , . . . , w i }. Ein DFA für L i entsteht aus dem für L i−1 und dem für{w i } (gemäß (b)) durch Anwendung der Konstruktion aus (c). Die Behauptungfolgt durch vollständige Induktion.Alternativ betrachte man die folgende direkte Konstruktion, die i. a. deutlich wenigerZustände benötigt. Es sei Σ ein Alphabet mit L ⊆ Σ ∗ . Die Idee ist folgende:Der DFA muss sich ”merken“, welche Zeichen er bisher gelesen hat. Wenn diese einWort in L bilden, muss der DFA in einem akzeptierenden Zustand sein. Wenn diebisher gelesenen Zeichen nicht Präfix eines Wortes aus L sind, kann der DFA ineinen Fehlerzustand gehen. Nach kurzer Überlegung sieht man, dass man als Zustandsmengeeinfach die Menge aller Präfixe der Wörter in L und einen zusätzlichenFehlerzustand nehmen kann.Q := {u ∈ Σ ∗ | u ist Präfix eines Wortes w ∈ L} ∪ {q FEHLER };q 0 := ε;F := L;δ(u, a) := ua, falls u ∈ Q − {q FEHLER } und ua ∈ Q,δ(u, a) := q FEHLER , falls u ∈ Q − {q FEHLER } und ua ∉ Q,δ(q FEHLER , a) := q FEHLER für alle a ∈ Σ.Man kann nun durch Induktion über |w| zeigen, dass δ(q 0 , w) = w ist, falls w Präfixeines Wortes in L ist und δ(q 0 , w) = q FEHLER sonst. Daraus folgt nach der Definitionvon F , dass M genau die Wörter in L akzeptiert.(e) Nach Lemma 2.1.9 ist es möglich, einen DFA M = (Q, Σ, q 0 , F, δ) mit L = L M zuwählen. Dann definiere F ′ := Q − F und M ′ := (Q, Σ, q 0 , F ′ , δ), d. h. M ′ entstehtaus M durch Vertauschen von akzeptierenden und nicht akzeptierenden Zuständen.Es ist klar, dass L = Σ ∗ − L = L M ′, da für w ∈ Σ ∗ gilt:26


w ∈ L ⇔ w ∉ L ⇔ δ(q 0 , w) ∉ F ⇔ δ(q 0 , w) ∈ F ′ .Beachte: Für diese Konstruktion ist es nötig, dass δ eine Funktion ist. Die nichtdeterministischenendlichen Automaten des nächsten Abschnitts lassen diese Konstruktion nichtzu.□2.1.11 Beispiel(a) Die Sprachen L 0 = {x ∈ {0, 1} ∗ | |x| 0gerade} und L 1 = {x ∈ {0, 1} ∗ ||x| 1gerade} sind regulär: Offenbar ist L 0 = L M0 für folgenden DFA M 0 :101Start0 10Vertauschen wir bei den Kantenmarkierungen 0 und 1, erhalten wir einen DFA M 1für die Sprache L 1 . Setzen wir in M 0 F ′ = {0, 1} − F = {1}, so erhalten wir einenDFA M 0 ′ für die Sprache L 0 = {x ∈ {0, 1} ∗ | |x| 0ungerade}.(b) Die mit dem Verfahren von Satz 2.1.10(c) konstruierten Automaten für L 0 ∪ L 1 ,L 0 ∩ L 1 , L 0 ∪ L 1 sehen im Prinzip wie folgt aus:1Start(0,0)1(0,1)0 0 0 01(1,0) (1,1)1Gezeichnet ist ein Automat für L 0 ∩ L 1 . Automaten für die anderen Sprachen erhältman durch Variieren der Menge der Endzustände. Z. B. entspricht F = {(0, 0), (0, 1),(1, 0)} der Sprache L 0 ∪ L 1 , und F = {(1, 1)} der Sprache L 0 ∪ L 1 .27

Weitere Magazine dieses Users
Ähnliche Magazine