Leitfäden der Informatik Herausgegeben von Prof. Dr. Bernd Becker Prof. Dr. Friedemann Mattern Prof. Dr. Heinrich Müller Prof. Dr. Wilhelm Schäfer Prof. Dr. Dorothea Wagner Prof. Dr. Ingo Wegener
Die Leitfäden der Informatik behandeln Themen aus der Theoretischen, Praktischen und Technischen Informatik entsprechend dem aktuellen Stand der Wissenschaft in einer systematischen und fundierten Darstellung des jeweiligen Gebietes Methoden und Ergebnisse der Informatik, ausgearbeitet und dargestellt aus der Sicht der Anwendung in einer für Anwender verständlichen, exakten und präzisen Form. Die Bände der Reihe wenden sich zum einen als Grundlage und Ergänzung zu Vorlesungen der Informatik an Studierende und Lehrende in Informatik-Studiengängen an Hochschulen, zum anderen an „Praktiker“, die sich einen Überblick über die Anwendungen der Informatik (-Methoden) verschaffen wollen; sie dienen aber auch in Wirtschaft, Industrie und Verwaltung tätigen Informatikern und Informatikerinnen zur Fortbildung in praxisrelevanten Fragestellungen ihres Faches.
Theoretische Informatik Formale Sprachen, Berechenbarkeit, Komplexitätstheorie, Algorithmik, Kommunikation und Kryptographie 3., überarbeitete und erweiterte Auflage
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über
abrufbar. Prof. Dr. Juraj Hromkovicˇ Geboren 1958 in Bratislava, Slowakei. Studium der Mathematischen Informatik an der Komenský Universität, Bratislava. Promotion (1986) und Habilitation (1989) in Informatik an der Komenský Universität. 1990 – 1994 Gastprofessor an der Universität Paderborn, 1994 – 1997 Professor für Parallelität an der CAU Kiel. 1997 – 2003 Professor für Algorithmen und Komplexität an der RWTH Aachen. Seit 2001 Mitglied der Slowakischen Gesellschaft. Seit Januar 2004 Professor für Informatik an der ETH Zürich. Das Buch ist in der ersten Auflage unter dem Titel „Algorithmische Konzepte der Informatik“ erschienen.
1. Auflage 2001 2. Auflage 2004 3., überarbeitete und erweiterte Auflage Juni 2007
Alle Rechte vorbehalten © B.G. Teubner Verlag / GWV Fachverlage GmbH, Wiesbaden 2007 Lektorat: Ulrich Sandten / Kerstin Hoffmann
Der B.G. Teubner Verlag ist ein Unternehmen von Springer Science+Business Media. www.teubner.de Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: Ulrike Weigel, www.CorporateDesignGroup.de Druck und buchbinderische Verarbeitung: Strauss Offsetdruck, Mörlenbach Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Printed in Germany
ISBN 978-3-8351-0043-5
Mit einer Weisheit, die keine Trgne kennt, mit einer Philosophie, die nicht zu lachen versteht,
J
(k. r"
und einer Gr6t3e, die sich nicht vor Kindern verneigt, will ich nichts zu tun haben. Khalil Gibran
Meinen Eltern
~
"
~
~--
Vorwort
Dieses Buch ist eine einfache Einfiihrung in algorithmische Grundkonzepte der Theoretischen Informatik. Die Theoretische Informatik ist weltweit ein fester Bestandteil des Informatikstudiums. Im Unterschied zu den ingenieursmgfiig geprggten Gebieten der Praktischen und der Technischen Informatik hebt die Theoretische Informatik mehr die naturwissenschaftlichen und mathematischen Aspekte der Informatik hervor. Gerade die mathematische Prggung ist oft ein Grund daffir, dass die Theoretische Informatik fiir zu schwer gehalten wird und dadurch ein nicht gerade beliebter Teil der Ausbildung ist. Der Schwierigkeitsgrad der Theoretischen Informatik ist aber meiner Meinung nach nicht der einzige Grund ihrer Unbeliebtheit, insbesondere wenn die Studierenden in ihrer Beurteilung ausserdem noch das Pr~dikat ,,schwach motiviert" oder sogar ,,langweilig" verwenden. Das k6nnte auch damit zusammenh~ngen, dass sich die Einfiihrung in die Theoretische Informatik im Grundstudium an vielen deutschen Hochschulen auf den klassischen Stoff der Berechenbarkeit, der Theorie der formalen Sprachen und der abstrakten Komplexit~tstheorie beschr~nkt. Dass man dabei iiberwiegend nur die Konzepte und Ansichten, die vor dem Jahr 1970 entstanden sind, vermittelt, diirfte alleine nicht schlimm sein. Es fiihrt aber oft dazu, dass man mit einer einzigen Motivation zu viele Vorlesungen der Art Definition- S a t z - Beweis absolvieren muff und so halbiert sich die Wichtigkeit dieser Motivation in den Augen der Studierenden mit jeder weiteren Vorlesung, die ankniipft, ohne eine eigene Motivation zu bringen. Um Abhilfe yon diesem Zustand zu schaffen, muff man sich die Entwicklung der Theoretischen Informatik in den letzten 30 Jahren ansehen. Es geht dabei nicht nur datum, dass man in dieser Zeit tiefere Resultate und viele neue Konzepte entwickelt hat, sondern insbesondere darum, dass die Theorie immer mehr auf die Bediirfnisse der Praxis eingegangen ist. Dadurch sind die Anwendungen
6
Vorwort
der Theorie direkter geworden und die Anschaulichkeit der Motivationen ist stark gestiegen. Die Theoretische Informatik liefert nicht-triviales Know-How, das in vielen FS~llen faszinierende und iiberraschende Anwendungen erm6glicht. Es ist nicht m6glich, in einem Einfiihrungskurs alle derartigen spektakulS~ren Erkenntnisse zu prS~sentieren, weil einige ein zu tiefes VerstS~ndnis der Materie fordern, als dass sie im Vordiplom als Ziel gestellt werden k6nnen. Aber es gibt geniigend Ideen, die in einer Einfiihrung darstellbar sind, und die wesentlich die Denkweise eines Informatikers prS~gen k6nnen und sollten. Dieses Buch ist ein Versuch des Autors, zumindest teilweise seine Vision einer modernen Einfiihrung in die algorithmischen Gebiete der Theoretischen Informatik zu realisieren. Dabei folgt er der Richtung, die in der englischsprachigen Literatur Mike Sipser und in der deutschsprachigen Literatur Ingo Wegener eingeschlagen haben, und die im Wesentlichen auf den oben prgsentierten Gedanken basiert. Die klassischen Teile der Berechenbarkeit und KomplexitS~tstheorie sind hier reduziert und dafiir einige wichtige Konzepte aus dem Bereich der Algorithmik, Randomisierung, Kommunikation und Kryptographie eingesetzt. Die Strategien dieses Buches heifien ,,Einfachheit" und ,,Weniger ist manchmal mehr". Fiir uns ist die PrS~gung des intuitiven, informellen VerstS~ndnisses der Materie genau so wichtig wie prS~zise Formalisierung, detaillierte Beweisfiihrungen und Begriindungen. Didaktisch geht das Buch immer langsam yore Einfachen zum Komplizierten vor. Wir versuchen, die Anzahl der Begriffe und Definitionen zu minimieren, auch wenn wir dadurch auf die PrS~sentation einiger wichtiger Konzepte und Resultate verzichten miissen. Die Idee dahinter ist, dass es wichtiger ist, die unterschiedlichen konzeptuellen Denkweisen und Methoden zu prS~sentieren, als ein ,,vollstS~ndiges" Bild einer abgeschlossenen mathematischen Theorie zu zeichnen. Da die Argumentation in diesem Buch nicht nur auf der formalen mathematischen Ebene gefiihrt wird, sondern insbesondere auf das intuitive Verst~ndnis der Materie baut, ist das Buch auch als Lehrmaterial fiir Fachhochschulen und Studierende, die Informatik nicht als Hauptfach studieren, gut geeignet. Hilfreiche Unterstiitzung Anderer hat zu der Entstehung dieses Lehrbuches wesentlich beigetragen. Besonderer Dank gilt Dirk Bongartz, Hans-Joachim B6ckenhauer und Alexander Ferrein fiir sorgfSJtiges Korrekturlesen und zahlreiche VerbesserungsvorschlS~ge. Herzlicher Dank geht an Dietmar Berwanger, Volker Claus, Georg Schnitger, Erich Valkema und Peter Widmayer fiir Bemerkungen und anregende Diskussionen. Alexander Ferrein und Manuel Wahle danke ich fiir die sorgfS~ltige Einbettung des Manuskripts in I_4TEX. Mein tiefster Dank gilt Frau Stefanie Laux vom Teubner Verlag fiir die hervorragende und konstruktive Zusammenarbeit. Herzlichst danke ich Ingrid Z~me~nfkov~
Vorwort
7
fiir die Illustrationen, den einzigen vollkommenen Teil des Buches, und Tanja fiir ihre Zitatensammlung. Aachen, 2001.
Juraj Hromkovi~
Die K6pfe von Menschen soll man nicht _ mit Fakten, Namen und Formeln fiillen. Um so etwas zu lernen, braucht man nicht in die Schule zu gehen. Der Zweck der Erziehung ist, dem Menschen das Denken beizubringen, und so eine Ausbildung, die keine Lehrbiicher ersetzen k6nnen. A. Einstein
~._Jtttt tt
Vorwort zur zweiten Auflage
Es freut mich sehr, dass diese alternative Einfiihrung in die Theoretische Informatik so gut yon Kollegen und Studenten angenommen wurde. Ich m6chte hier zun~tchst allen denen herzlich danken, die Zeit gefunden haben, ihre Meinungen fiber das Buch sowie einige Verbesserungswiinsche und Erweiterungsvorschl~ge zu 5~ufiern. Ich habe dieses Buch mit Sorgfalt geschrieben, weil ich wusste, dass der Inhalt des Buches den Rahmen der traditionellen Vorstellung der Grundlagen der Theoretischen Informatik sprengt. Deshalb habe ich befiirchtet, dass es viele Kollegen als einen Verstofi gegen iiberwiegend akzeptierte Darstellung e n d e r Informatikgrundlagen im Grundstudium bewerten wiirden. Auger den vielen positiven Kommentaren, die meine Sorgen schrumpfen liefien, fand ich am Erfreulichsten (als eine echte BestS~tigung des Buchkonzeptes), dass die Leser sich/iberwiegend gerade die Erweiterung der nicht-klassischen Gebiete wie Randomisierung und Kommunikation gewiinscht haben. Ich nahm diese Herausforderung mit Freude an und habe versucht, gleich die erste M6glichkeit zu nutzen, fiir die zweite Auflage das Buch sorgfS~ltig zu iiberarbeiten und zu erweitern. Das Kapitel Randomisierung wurde um einen neuen Abschnitt erggnzt, der die Methode der Fingerabdriicke zum Entwurf yon zufallsgesteuerten Algorithmen als einen wichtigen Spezialfall der Anwendung der Methode der hS~ufigen Zeugen prS~sentiert. Die Methode der Fingerabdr/icke wurde an dem randomisierten Aquivalenztest fiir zwei Polynome illustriert. Im Kapitel Kommunikation und Kryptographie kamen zwei neue Abschnitte dazu. Der Abschnitt Digitale Unterschriften zeigt eine sehr wichtige kommerzielle Anwendung des vorgestellten Konzeptes der Public-Key-Kryptosysteme. Dabei machen wir darauf aufmerksam, dass im Rahmen der klassischen Kryp-
Vorwort zur zweiten Auflage tographie keine M6glichkeit besteht, digitale UnterschriRen ohne hohes FS~Ischungsrisiko zu leisten. Damit ist das kryptographische Konzept der 6ffentlichen Schliissel eine Basis, ohne die man sich heute den sich dynamisch entwickelnden Bereich des E-Commerce gar nicht vorstellen kann. Der zweite neue Abschnitt zeigt einen Entwurf eines effizienten Telefonnetzes. Die Zielsetzung ist dabei, die Problemstellungen und geeignete Methoden zur L6sung der gestellten Probleme im Bereich der Kommunikation in Netzen am Beispiel eines eleganten Netzentwurfes zu illustrieren. Einige Kollegen haben sich gewiinscht, in diesem Lehrmaterial auch den Beweis des Satzes von Cook zu lesen. Obwohl es sich um eines der grundlegensten Resultate der Informatik handelt, vertrete ich weiter die Meinung, dass dieses Resultat einen zu schweren Beweis fiir das Grundstudium besitzt. Trotzdem habe ich reich entschieden, den Beweis einzufiigen, um dem besonders interessierten Studierenden die M6glichkeit zu geben, diese grunds~Rzlich wichtige Beweistechnik kennenzulernen. Da ich diesen Beweis nun einbetten wollte, habe ich versucht, durch eine langsame Entwicklung der Beweisidee den Schwierigkeitsgrad des Beweises zu abzumildern. Deswegen entstanden drei Seiten fiber die Beschreibung yon Texten und Spielkonfigurationen durch Boole'sche Formeln, die als eine Vorbereitung fiir den Beweis des Satzes yon Cook diehen sollen. Nach dieser Einfiihrung konzentriert sich der Beweis nur auf eines, und zwar wie man die Semantik der Berechnungen durch die Formeln effizient ausdr/icken kann. Auger den drei oben beschriebenen Erweiterungen wurden an vielen Stellen Korrekturen und Verbesserungen eingearbeitet, um die Anschaulichkeit und die Verst~ndlichkeit der Beweise zu erh6hen. Nennenswert sind die neuen graphischen Darstellungen zu den Beweisen des Satzes von Rice und der S~ttze fiber die Anwendung der Kolmogorov-KomplexitS~t in der Theorie der Berechenbarkeit. Eine umfangreiche Liste yon 0bungsaufgaben mit ausgearbeiteten Musterl6sungen findet man unter http://www-i 1. infor mat ik. rwt h-aachen, de /Vero effent lichungen / AK dI/. Aachen, Oktober 2003.
Juraj Hromkovi~
Wenn du nicht auf das Unerwartete wartest, findest du nichts Edles, nichts, was schwer zu finden ist. H e r a k ~ IL
"
Vorwort zur dritten Auflage
Gleich am Anfang m6chte ich reich bei den zahlreichen Kollegen bedanken, die sich Zeit fiir das Lesen und Kommentieren der zweiten Auflage genommen haben. Dabei war der am hSoufigsten geS~ut3erte Wunsch, zusS~tzlich das Thema Grammatiken zu behandeln. Obwohl dieses Thema bereits sehr gut in mehreren Lehrbiichern behandelt wurde, 1 enthglt die dritte Auflage nun ein neues Kapitel fiber Grammatiken und die Chomsky-Hierarchie. Somit bietet dieses Lehrbuch den Dozenten ein fast vollstgndiges Angebot an klassischen Themen, das durch einige neuere Konzepte bereichert wird. Auf diese Weise ist dieses Material sowohl fiir die Kollegen geeignet, die sich auf die klassischen Grundlagen der Informatik konzentrieren, als auch fiir diejenigen, die in der Einfiihrungsveranstaltung fiber ,,Theoretische Informatik" nicht-klassische Gebiete vorstellen wollen. Das neue Kapitel stellt Grammatiken als Mechanismen zur Erzeugung von W6rtern vor, und somit als eine Alternative zur endlichen Darstellung von Sprachen. Die Schwerpunkte liegen auf dem Studium von kontextfreien Sprachen, die von zentralem Interesse fiir den Compilerbau sind, und auf der Aquivalenz zwischen Grammatiken und Turingmaschinen. Das Kapitel fiber Grammatiken steht ganz am Ende des Buches, aber dies bedeutet nicht, dass man dieses Thema am Ende der Veranstaltung prS~sentieren mtisste. Die Teile fiber regul~re und kontextfreie Grammatiken k6nnen direkt im Anschluss an Kapitel 3 fiber endliche Automaten behandelt werden. Nach Kapitel 4 fiber Turingmaschinen hat man schon alle notwendigen Vorkenntnisse, um das ganze neue Kapitel zu meistern. Wir sind der Meinung, dass es ftir eine erfolgreiche Vorbereitung auf eine Priifung notwendig ist, beliebige Teile des Lerntextes inhaltlich korrekt widergeben zu k6nnen und leichte Abwandlungen der im Buch vorkommenden 1Dies war auch der Hauptgrund, warum wir auf die Darstellung dieser Thematik in den ersten zwei Auflagen verzichtet haben.
Vorwort zur dritten Auflage
11
Aufgaben 16sen zu k6nnen. Um die wichtigsten Grundkenntnisse hervorzuheben und dem Studierenden eine Selbstkontrolle zu erm6glichen, haben wir die Zusammenfassungen am Ende der Kapitel um eine Liste yon Kontrollfragen erweitert. Wir empfehlen allen Dozenten zusS~tzlich, die genauen Anforderungen fiir das Studium gem~if3 ihrer eigene Zielsetzungen schriRlich festzuhalten. Auger der oben beschriebenen Erweiterung wurden an einigen Stellen Korrekturen und verbesserte ErklSxungen eingearbeitet. In diesem Zusammenhang m6chte ich reich bei Christoph Zimmerli und Laurent Zimmerli fiir ausfiihrliches Korrekturlesen der zweiten Auflage herzlich bedanken. Bester Dank geht an Hans-Joachim B6ckenhauer und Julian Tschannen fiir sorgf~tltige Korrekturen des neuen Kapitels und an Martin Jaggi und Philipp Zumstein fiir einige VerbesserungsvorschlS~ge. Bei Nicolas Born und Manuel Wahle bedanke ich reich fiir ihre Unterstiitzung bei der [4TEX-Bearbeitung der dritten Auflage. Besonderer Dank geht an Ulrich Sandten vom Teubner Verlag fiir eine sehr gute und konstruktive Zusammenarbeit, in der keine Tabus fiir neue Wege gegolten haben. Mein herzlichster Dank geht an Karl Frey. Seine didaktischen Konzepte waren fiir reich die interessanteste fachdidaktische Auseinandersetzung und die gr6f3te didaktische Bereicherung in den letzten drei Jahren. Ziirich, im Juni 2007
Juraj Hromkovi~
Inhalt
Einleitung
17
1.1
I n f o r m a t i k als w i s s e n s c h a R l i c h e D i s z i p l i n . . . . . . . . . . . .
17
1.2
Eine faszinierende Theorie . . . . . . . . . . . . . . . . . . . .
22
1.3
Fiir die S t u d i e r e n d e n . . . . . . . . . . . . . . . . . . . . . . .
26
1.4
A u f b a u des L e h r m a t e r i a l s
29
. . . . . . . . . . . . . . . . . . . .
Alphabete, WSrter, Sprachen und Aufgaben
32
2.1
Zielsetzung
32
2.2
Alphabete, WSrter und Sprachen
2.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
Algorithmische Probleme
. . . . . . . . . . . . . . . . . . . .
45
2.4
K o l m o g o r o v - K o m p l e x i t 5~t
. . . . . . . . . . . . . . . . . . . .
56
2.5
Zusammenfassung und Ausblick . . . . . . . . . . . . . . . . .
71
Endliche Automaten
75
3.1
Zielsetzung
75
3.2
Die D a r s t e l l u n g e n d e r e n d l i c h e n A u t o m a t e n
3.3
Simulationen
3.4
Beweise der Nichtexistenz
3.5
Nichtdeterminismus
3.6
Zusammenfassung
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
. . . . . . . . . . . . . . . . . . . . . . . . . . .
93
. . . . . . . . . . . . . . . . . . . .
99
. . . . . . . . . . . . . . . . . . . . . . .
108
. . . . . . . . . . . . . . . . . . . . . . . .
121
Turingmaschinen
125
4.1
Zielsetzung
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
4.2
Das Modell der T u r i n g m a s c h i n e . . . . . . . . . . . . . . . . .
126
14
Inhalt
4.3
Mehrband-Turingmaschinen
und Church'sche These ......
4.4
Nichtdeterministische Turingmaschinen
4.5
Kodierung von Turingmaschinen
4.6
Zusammenfassung
137
. . . . . . . . . . . . .
148
. . . . . . . . . . . . . . . .
154
. . . . . . . . . . . . . . . . . . . . . . . .
157
B erechenbarkeit
161
5.1
Zielsetzung
161
5.2
Die M e t h o d e d e r D i a g o n a l i s i e r u n g
5.3
Die M e t h o d e d e r R e d u k t i o n
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
162
. . . . . . . . . . . . . . . . . . .
172
5.4
Satz von Rice . . . . . . . . . . . . . . . . . . . . . . . . . . .
185
5.5
Das Post'sche Korrespondenzproblem
190
5.6
Die M e t h o d e d e r K o l m o g o r o v - K o m p l e x i t S ~ t . . . . . . . . . . .
199
5.7
Zusammenfassung
203
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
Komplexit~itstheorie
206
6.1
Zielsetzung
206
6.2
KomplexitS~tsmaf3e
6.3
Komplexits
. . . . . . . . . . . . .
215
6.4
N i c h t d e t e r m i n i s t i s c h e KomplexitS~tsmat3e . . . . . . . . . . . .
224
6.5
Die K l a s s e N P u n d B e w e i s v e r i f i k a t i o n
231
6.6
NP-VollstS~ndigkeit
. . . . . . . . . . . . . . . . . . . . . . . .
236
6.7
Zusammenfassung
. . . . . . . . . . . . . . . . . . . . . . . .
259
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u n d die K l a s s e P
. . . . . . . . . . . . .
208
Algorithmik fiir schwere Probleme
262
7.1
Zielsetzung
262
7.2
Pseudopolynomielle Algorithmen
7.3
Approximationsalgorithmen
7.4
Lokale Suche
7.5
Simulated Annealing
7.6
Zusammenfassung
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
264
. . . . . . . . . . . . . . . . . . .
271
. . . . . . . . . . . . . . . . . . . . . . . . . . .
279
. . . . . . . . . . . . . . . . . . . . . . .
285
. . . . . . . . . . . . . . . . . . . . . . . .
289
15
Inhalt
8
Randomisierung
292
8.1
Zielsetzung
292
8.2
Elementare Wahrscheinlichkeitstheorie
8.3
Ein r a n d o m i s i e r t e s K o m m u n i k a t i o n s p r o t o k o l l
8.4
Die M e t h o d e der h~ufigen Z e u g e n u n d der r a n d o m i s i e r t e P r i m zahltest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
302
Die M e t h o d e der F i n g e r a b d r i i c k e u n d die A q u i v a l e n z von zwei Polynomen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
308
8.6
Zusammenfassung
315
9
Kommunikation und Kryptographie
318
9.1
Zielsetzung
318
9.2
Klassische K r y p t o s y s t e m e
9.3
Public-Key-Kryptosysteme und RSA
. . . . . . . . . . . . . .
321
9.4
Digitale Unterschriften . . . . . . . . . . . . . . . . . . . . . .
327
9.5
Interaktive Beweissysteme und Zero-Knowledge-Beweise
331
9.6
E n t w u r f eines K o m m u n i k a t i o n s n e t z e s . . . . . . . . . . . . . .
336
9.7
Zusammenfassung
346
10
Grammatiken und Chomsky-Hierarchie
348
10.1
Zielsetzung
348
10.2
D a s K o n z e p t der G r a m m a t i k e n
10.3
R e g u l ~ r e G r a m m a t i k e n u n d endliche A u t o m a t e n
.......
362
10.4
Kontextfreie Grammatiken und Kellerautomaten
.......
376
10.5
Allgemeine G r a m m a t i k e n und Turingmaschinen
10.6
Zusammenfassung
8.5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .........
294 298
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
........
. . . . . . . . . . . . . . . . . . . . . . . .
319
350
402 405
Literaturverzeichnis
408
S achverzeichnis
413
Wenn du ein Schiff bauen willst, so trommle nicht M~nner zusammen, um Holz zu beschaffen,
Auftr/~ge zu vergeben oder Arbeit zu verteilen, sondern wecke in ihnen die Sehnsucht nach dem weiten, endlosen Meer! A. de Saint-Exup6ry
1
Einleitung
1.1
Informatik als wissenschaftliche Disziplin
Jeder, der Informatik studiert oder ausfibt, sollte sich yon Zeit zu Zeit die Frage stellen, wie er die Informatik definieren wfirde, und wie er die Rolle der Informatik im Kontext aller Wissenschaft, allgemeiner Bildung und der tgglichen Praxis sieht. Wichtig ist dabei, dass sich mit tieferem Verst~ndnis der Natur der Informatik auch unsere Vorstellung fiber die Informatik weiterentwickelt. Deswegen ist es insbesondere ffir die Studierenden im Grundstudium sehr wichtig, dass sie sich nach jedem Semester mit ihrer eigenen Vorstellung fiber Informatik besch~ftigen. Eine Hilfe zu einer solchen Auseinandersetzung zwischen eigener Vorstellung und neu erworbenen Kenntnissen soll diese Einleitung bieten. I Versuchen wir zuerst die Frage ,, Was ist Informatik?" zu b e a n t w o r t e n . Eine genaue Spezifikation einer wissenschaftlichen Disziplin zu geben, ist eine schwierige Aufgabe, die m a n selten vollstgndig erfiillen kann. /Jblicherweise versucht man, I n f o r m a t i k mit der folgenden allgemeinen Aussage zu beschreiben.
,,Informatik ist die Wissenschaft von der algorithmischen Darstellung, Verarbeitung, Speicherung und Obertragung von Information.
1Man beachte, dass das Folgende nur den pers6nlichen Ansichten und dem Wissensstand
des Autors entspricht und keinen Anspruch auf absolute Wahrheit erhebt.
18
1 Einleitung
Obwohl diese meist akzeptierte Definition der Informatik die Information und die Algorithmen als die Hauptobjekte der Untersuchung der Informatik lestlegt, und den Umgang mit diesen als Ziel der Untersuchung formuliert, sagt sie nicht genug fiber die Natur der Informatik und fiber die in der Informatik benutzten Methoden aus. Eine weiterfiihrende Frage fiir die K15~rung der Substanz der Informatik ist die folgende:
,,Zu welchen Wissenschaften kann man die Informatik zuordnen? Ist sie Metawissenschaft (wie Philosophie und Mathematik), Gelsteswissenschaft, Naturwissenschaft oder Ingenieurwissenschaft ?" Die Antwort auf diese Frage klgrt nicht nur das Objekt der Untersuchung, sondern sie legt auch die Methodik und die Beitrgge der Informatik fest. Die Antwort ist, dass die Informatik keiner dieser Wissenschaftsgruppen vollstS~ndig zugeordnet werden kann. Die Informatik besitzt sowohl Aspekte einer Metawissenschaft, einer Naturwissenschaft als auch einer Ingenieurwissenschaft. Wir geben hier eine kurze Begriindung fiir diese Behauptung. Wie die Philosophie und die Mathematik studiert die Informatik allgemeine Kategorien wie
Determinismus, Nichtdeterminismus, Zufall, Information, Wahrheit, Unwahrheit, Komplexitiit, Sprache, Beweis, Wissen, Kommunikation, Approximation, Algorithmus, Simulation usw. und tr/~gt zu ihrem Verst/~ndnis bei. Mehreren dieser Kategorien hat die Informatik einen neuen Inhalt und eine neue Bedeutung gegeben. Eine Naturwissenschaft (ira Unterschied zur Philosophie und Mathematik) studiert konkrete nat/irliche Objekte und Prozesse, bestimmt die Grenze zwischen M6glichem und Unm6glichem und erforscht die quantitativen Gesetze der Naturprozesse. Sie modelliert, analysiert und iiberpriift die Glaubwiirdigkeit erzeugter Modelle durch Experimente. Alle diese Aspekte einer Naturwissenschaft finden sich auch in der Informatik. Die Objekte sind Information und Algorithmen (Programme, Rechner) und die Prozesse sind die physikalisch existierenden Prozesse der Informationsverarbeitung. Versuchen wir dies an der Entwicklung der Informatik zu dokumentieren. Die historisch erste wichtige Forschungsfrage der Informatik war die folgende Frage von philosophischer Bedeutung:
1.1 Informatik als wissenschaftliche Disziplin
19
Existieren wohldefinierte Aufgaben, die man automatisch (dutch einen Rechner, fernab von der Leistungsfiihigkeit heutiger oder zukiinftiger Rechner) nicht 15sen kann ? Die Bemiihungen, diese Frage zu beantworten, f~hrten zur Grtindung der Informatik als eigenstgndige Wissenschaft. Die Antwort auf diese Frage ist positiv, und wir kennen heute vide praktisch relevante Aufgaben, die man gerne algorithmisch (automatisch) 16sen m6chte, die man aber algorithmisch nicht 16sen kann. Das liegt aber nicht daran, dass bisher niemand einen Algorithmus (ein Programm) zur L6sung dieser Aufgaben entwickelt hat, sondern dass man solche Programme nie entwickeln wird, weft ihre Nichtexistenz mathematisch bewiesen wurde. Nachdem man Methoden entwickelt hat, um die Aufgaben danach zu klassifizieren, ob f~r sie ein Programm als algorithmische L6sung existiert oder nicht, stellt man sich folgende naturwissenschaftliche Frage. Wie schwer sind konkrete algorithmische A ufgaben? Die Schwierigkeit einer Aufgabe misst man aber nicht darin, wie schwer ein Programm f~r die Aufgabe zu entwickeln ist, oder wie umfangreich das Programm ist. Die Schwierigkeit einer Aufgabe misst man als den Aufwand, den man leisten muss, um die Aufgabe f/ir konkrete Eingaben algorithmisch zu 16sen. Man stellte lest, dass es beliebig schwere Aufgaben gibt, sogar solche, f~r deren L6sung man mehr Energie braucht, als im ganzen bekannten Universum zur Verfiigung steht. Es existieren also Aufgaben, f~r deren L6sung man zwar Programme schreiben kann, was aber nichts hilft, weil ein Lauf eines solchen Programms mehr Zeit ben6tigt, als seit dem Urknall bis heute vergangen ist. Die blot3e Existenz eines Programms f/ir eine untersuchte Aufgabe bedeutet also nicht, dass diese Aufgabe praktisch algorithmisch 16sbar ist. Die Bemiihungen, die Aufgaben in praktisch 15sbare und praktisch unlSsbare zu unterteilen, ffihrten zu einigen der faszinierendsten mathematisch-naturwissenschaRlichen Erkenntnissen, die in der Informatik entdeckt worden sind. Als ein Beispiel solcher Resultate k6nnen wir zufallsgesteuerte Algorithmen betrachten. Die Programme (Algorithmen), wie wir sie benutzen, sind deterministisch. Die Bedeutung des Wortes ,,deterministisch" ist, dass das Programm und die Problemeingabe vollstgndig die Arbeit des Programms determinieren. In jedem Augenblick ist in Abhgngigkeit von den aktuellen Daten eindeutig, was die nS~chste Aktion des Programms sein wird. Zufallsgesteuerte Programme diirfen mehrere M6glichkeiten fiir die Umsetzung ihrer Arbeit haben; welche M6glichkeit ausgewghlt wird, wird zufS~llig entschieden. Es sieht so aus, als ob ein zufallsgesteuertes Programm von Zeit zu Zeit eine Miinze wirft und
20
1 Einleitung
abhS~ngig davon, ob Kopf oder Zahl gefallen ist, eine entsprechende Strategie fiir die Suche nach dem richtigen Resultat wghlt. Ein zufallsgesteuertes Programm hat daher mehrere unterschiedliche Berechnungen fiir eine Eingabe. Im Unterschied zu deterministischen Programmen, die immer eine zuverlgssige Berechnung des richtigen Resultats liefern, d~rfen einige Berechnungen des zufallsgesteuerten Programms auch falsche Resultate liefern. Das Ziel ist, die Wahrscheinlichkeit einer falschen Berechnung nach unten zu driicken, was in gewissem Sinne bedeuten k6nnte, dass man versucht, den proportionalen Anteil der Berechnungen mit falschem Resultat klein zu halten. Auf den ersten Blick sieht ein zufallsgesteuertes Programm unzuverlgssig gegeniiber deterministischen Programmen aus, und man kann fragen, wozu es gut sein sollte. Es existieren abet Probleme von grofier praktischer Bedeutung, bei denen der schnellste deterministische Algorithmus auf dem schnellsten heutigen Rechner mehr Zeit zur Berechnung der L6sung brauchen w~rde als die Zeit, die seit dem Urknall bis heute vergangen ist. Die Aufgabe scheint also praktisch unl6sbar zu sein. Und dann passiert ein ,,Wunder": ein zufallsgesteuerter Algorithmus, der die Aufgabe in ein paar Minuten auf einem gew6hnlichen Personalcomputer mit einer Fehlerwahrscheinlichkeit von 1 durch Tausend Milliarden 16st. Kann man ein solches Programm ftir unzuverlgssig halten? Ein deterministisches Programm, das eine Aufgabe in einem Tag berechnet, ist unzuverl~ssiger als unser zufallsgesteuertes Programm, weil die Wahrscheinlichkeit des Auftretens eines Hardwarefehlers wghrend einer 24sttindigen Arbeit viel h6her ist als die Wahrscheinlichkeit einer fehlerhaften Ausgabe des schnellen zufallsgesteuerten Programms. Ein konkretes Beispiel von hoher praktischer Bedeutung ist das Problem des Primzahltests. In der alltS~glichen Anwendung von kryptographischen Public-Key Protokollen muss man grofie Primzahlen generieren, wobei grog rund 400 Dezimalziffern bedeutet. Alle deterministischen Algorithmen fiir den Primzahltest basieren auf der /Jberprtifung der Teilbarkeit der gegebenen Zahl n. Aber schon die Anzahl der Primzahlen kleiner als v ~ f~r eine so grofie Zahl n ist gr6fier als die Anzahl der Protonen im bekannten Universum und deshalb sind solche Algorithmen praktisch uninteressant. Aber es gibt mehrere zufallsgesteuerte Algorithmen, die den Primzahltest in einigen Minuten auf einem PC realisieren. Ein anderes spektakulS~res Beispiel ist ein Kommunikationsprotokoll ftir den Vergleich der Inhalte zweier Datenbanken, die bei zwei weit entfernten Rechnern gespeichert sind. Man kann mathematisch beweisen, dass jedes deterministische Kommunikationsprotokoll, das die Aquivalenz der Inhalte iiberpriift, ungefS~hr so viele Bits bei der Kommunikation zwischen beiden Rechnern austauschen muss, wie die Datenbank enthglt. Betrachten wir jetzt den Fall, dass die Datenbanken
1.1 Informatik als wissenschaftliche Disziplin
21
eine Gr6fienordnung yon 1012 Bits haben. So viele Bits zu versenden ist ein grofier Aufwand. Ein zufallsgesteuertes Kommunikationsprotokoll kann diesen Aquivalenztest mit der Versendung einer Nachricht, die kiirzer als 2000 Bits ist, realisieren. Die Fehlerwahrscheinlichkeit des Tests ist dabei kleiner als 1 zu 1000 Milliarden. Warum so etwas iiberhaupt mSglich ist, ist ohne Informatikvorkenntnisse nur schwer zu erklS~ren. Die Suche nach den wahren Griinden f/Jr die StS~rke der Zufallssteuerung ist aber eine faszinierende mathematisch-naturwissenschaRliche Forschungsaufgabe. Wichtig zu bemerken ist aber, dass auch hier die Natur unser bester Lehrmeister sein kann, weil in der Natur mehr zufallsgesteuert ablS~uft als man glauben wiirde. Informatiker k6nnen viele Beispiele f/Jr Systeme geben, bei denen die gew/inschten Eigenschaften und Verhaltensweisen nur durch das Konzept der Zufallssteuerung erreicht werden kSnnen. In solchen Beispielen muss jedes deterministische ,,hundert Prozent zuverl~ssige" System mit dem erwiinschten Verhalten aus Milliarden Teilsystemen bestehen, die alle richtig miteinander kooperieren miissen. Ein solch komplexes System, bei dem viele Teilsysteme immer korrekt arbeiten, kann praktisch nicht realisiert werden, und falls ein Fehler auftritt, ist es eine fast unlSsbare Aufgabe, ihn zu finden. Man braucht gar nicht dariiber nachzudenken, wie hoch die Entwicklungsund Herstellungskosten eines solchen Systems sein wiirden. Auf der anderen Seite kann man ein solches System zu geringen Kosten mit dem gewiinschten Verhalten durch ein kleines zufallsgesteuertes System realisieren, bei dem alle Funktionen jederzeit iiberpriifbar sind und die Wahrscheinlichkeit eines fehlerhaften Verhaltens so klein ist, dass man sich in der Anwendung keine Sorgen dariiber machen muss. Trotz der naturwissenschaRlichen Aspekte der Informatik, die wir gerade illustriert haben, ist die Informatik fiir die meisten Informatiker eine typische anwendungs- und problemorientierte Ingenieurwissenschaft. Die Informatik umfasst nicht nur die technischen Aspekte des Engineering, wie
Organisation des Entwicklungsprozesses (Phasen, Meilensteine, Dokumentation), Formulierung von strategischen Zielen und Grenzen, Modellierung, Beschreibung, Spezifikation, Qualitiitssicherung, Testen, Einbettung in existierende Systeme, Wiederverwendung und Werkzeugunterstiitzung, sondern auch die Managementaspekte wie z.B.
Teamorganisation und-leitung, Kostenvoranschlag und Kostenaufschliisselung, Planung, Produktivit~t, Qualitiitsmanagement,
22
1 Einleitung
A bschiitzung von Zeitrahmen und Fristen, Zeit zur Markteinfiihrung, Vertragsabschluss und Marketing. Eine Informatikerin oder ein Informatiker sollte auch ein echter pragmatischer Praktiker sein. Bei der Konstruktion von sehr komplexen Software- oder Hardwaresystemen muss man oft die Entscheidung gefiihlsm~i3ig beztiglich eigener Erfahrung treffen, weil man keine Chance hat, die komplexe RealitS~t vollstS~ndig zu modellieren und zu analysieren. Wenn man sich das, was wir bisher fiber die Informatik geschildert haben, durch den Kopf gehen 15~sst, k6nnte man den Eindruck bekommen, dass das Studium der Informatik zu schwer ist. Mathematikkenntnisse sind erforderlich und die naturwissenschaftlichen sowie die ingenieurm~i3igen Aspekte des Denkens sind gleichermat3en erwiinscht. Das mag stimmen, aber das ist auch der grSfite Vorteil dieser Ausbildung. Die grSftte Schwgche heutiger Wissenschaft ist eine zu enge Spezialisierung, die dazu f/ihrt, dass sich viele Wissenschaften zu unabh~ngig voneinander entwickelt haben. Die Wissenschaften entwickelten eigene Sprachen, die oft sogar ftir benachbarte Wissenschaften nicht mehr verst~ndlich sind. Es geht so weit, dass die standardisierte Art der Argumentation in einer Wissenschaft in einer anderen Wissenschaft als eine oberflS~chliche und unzulS~ssige Begrtindung eingestuft wird. Das macht die propagierte interdisziplin~re Forschung ziemlich schwierig. Die Informatik ist in ihrem Kern interdisziplin~r. Sie orientiert sich an der Suche nach ProblemlSsungen in allen Bereichen des wissenschaftlichen und allt~iglichen Lebens, bei denen man Rechner anwendet oder anwenden k6nnte, und bedient sich dabei eines breiten Spektrums yon Verfahren, das yon prS~zisen formalen Methoden der Mathematik bis hin zum erfahrungsmS~tJigem ,,Know-How" der Ingenieurdisziplinen variiert. Die M6glichkeit, gleichzeitig unterschiedliche Wissenschaftssprachen und Arten des Denkens zusammenh~ingend in einer Disziplin zu erlernen, ist das Wichtigste, was die Informatikabsolventen in ihrer Ausbildung bekommen sollen.
1.2
Eine faszinierende Theorie
Dieses Buch ist der elementaren Einfiihrung in die algorithmischen Gebiete der Theoretischen Informatik gewidmet. Die Theoretische Informatik ist eine faszinierende Wissenschaftsdisziplin, die durch spektakulSze Ergebnisse und hohe InterdisziplinaritS~t wesentlich zur Entwicklung unserer Weltanschauung beigetragen hat. Statistisch gesehen gehSrt aber die Theoretische Informatik nicht
1.2 Eine faszinierende Theorie
23
gerade zu den LieblingsfS~chern der Studierenden.Viele Studierende bezeichnen die Theoretische Informatik sogar als eine Htirde, die man tiberwinden muss, um ein Diplom-Informatiker zu werden. Ftir diese Einstellung gibt es sicherlich mehrere Griinde. Ein Grund dafiir ist, dass die Theoretische Informatik von allen Informatikbereichen am stS~rksten mathematisch geprS~gt ist, und so einen h6heren Schwierigkeitsgrad besitzt. Dazu kommt oft noch, dass die Studierenden mit einer falschen Vorstellung fiber das Informatikstudium angetreten sind und dass wir, die Dozenten der Informatik, nicht immer die theoretischen Veranstaltungen attraktiv genug verkaufen. Zuviel Druck auf eine saubere Darstellung der kleinsten technischen Details von mathematischen Beweisen und zu wenig Raum ftir Motivationen, Zusammenhgnge, informelle Ideenentwicklung in geschichtlichem Rahmen und direkten Anwendungsm6glichkeiten k6nnen das Studium auch der faszinierendsten Wissenschaftsgebiete versguern. In der obigen Beschreibung der Informatik als einer Wissenschaft mit vielen Gesichtern haben wir schon indirekt die Wichtigkeit der Theoretischen Informatik dargestellt. Weil es aber noch weitere wichtige Gr/inde fiir die Unverzichtbarkeit des Studiums der Theoretischen Informatik in der Informatikausbildung gibt, m6chten wir die wichtigsten systematisch auflisten.
1. Philosophische Tiefe Die Theoretische Informatik erforscht Kenntnisse und bildet neue Konzepte und Begriffe, die die ganze WissenschaR in ihren tiefsten Grundlagen beeinttusst. Die Theoretische Informatik gibt partielle oder vollst~ndige Antworten auf Fragen philosophischer Tiefe wie 9 Existieren Probleme, die nicht automatisch (algorithmisch) 16sbar sind? Falls ja, wo liegt die Grenze zwischen automatisch L6sbarem und automatisch Unl6sbarem? 9 Wie kann man ein zuf~lliges Objekt definieren? 9 K6nnen nichtdeterministische und zufallsgesteuerte Prozesse etwas, was die deterministischen nicht k6nnen? Ist Nichtdeterminismus und Zufall starker (etIizienter) als Determinismus? 9 Wie kann man die Schwierigkeit von Aufgaben definieren? 9 Wo ist die Grenze der ,,praktischen" automatischen L6sbarkeit? 9 Was ist ein mathematischer Beweis, und ist es schwerer, mathematische Beweise algorithmisch zu finden, als gegebene Beweise algorithmisch auf Korrektheit zu tiberprtifen? Wichtig ist dabei zu bemerken, dass viele dieser Fragestellungen eigentlich ohne die formalen Konzepte der Algorithmen und Berechnungen nicht formulierbar
24
1 Einleitung
waren. So hat die Theoretische Informatik die Sprache der Wissenschaften auch urn neue Begriffe bereichert und dadurch zur Entwicklung der WissenschaRssprache beigetragen. Mehrere bekannte Grundkategorien der Wissenschaft wie Determinismus, Zufall und Nichtdeterminismus haben neue Bedeutung gewonhen, und so wurden unsere allgemeinen Ansichten tiber die Welt beeinflusst. 2. Praxisniihe und spektakul~re Ergebnisse Die Theoretische Informatik ist praxisrelevant. Auf der einen SeRe liefert sie Erkenntnisse methodologischer Natur, die unsere erste grobe Entscheidung bei der Bearbeitung von algorithmischen Aufgaben steuern. Auf der anderen Seite liefert sie Konzepte und Methoden, die direkt praktisch umsetzbar sind, und ohne die viele Anwendungen unmSglich w~ren. Neben dem schon erw~hnten Konzept des zufallsgesteuerten Algorithmus existieren noch viele andere ,,Wunder", die in der Theoretischen Informatik entstanden sind. Es gibt schwere Optimierungsprobleme, bei denen man durch eine AbschwS~chung der Forderung, eine optimale LSsung zu liefern, einen gewaltigen Sprung von einer unrealisierbaren Menge von Rechnerarbeit zu einer Angelegenheit von ein paar Minuten springen kann. Dabei braucht die Abmilderung der Forderung oft nicht grog zu sein. Wir diirfen die Berechnung einer LSsung fordern, deren Qualitgt nur sehr wenig yon der Qualit~t einer optimalen LSsung abweicht. Wiirden Sie glauben, dass es mSglich ist, jemanden vom Besitz eines Geheimnisses (z.B. eines Passwortes) zu tiberzeugen, ohne ein einziges Bit der Information fiber dieses Geheimnis zu verraten? Wiirden Sie glauben, dass zwei Personen in einero GesprS~ch bestimmen k6nnen, wet von ihnen 5~lter ist, ohne dem anderen das eigene Alter zu verraten? W/irden Sie glauben, dass man mathematische Beweise von mehreren tausend Seiten Lgnge fast mit hundertprozentiger Zuverl~ssigkeit auf Korrektheit tiberpr~fen kann, obwohl man diese gar nicht liest und nut einige wenige zufS~llig ausgewS~hlte Bits (Buchstaben) des Beweises ansieht? Alles das, was wit oben erwS~hnt haben, ist m6glich. Dies zeigt nicht nur, dass man dank der Theorie Dinge realisieren kann, die man vorher vielleicht fiir unm6glich gehalten hat, sondern auch, dass die Forschung in der Theoretischen Informatik voller Spannung und Uberraschungen ist, und dass man auch mit Theoretischer Informatik begeistern kann. 3. Lebensdauer von Kenntnissen Durch die schnelle Entwicklung der Technologien 5~ndert sich die Welt der berufs-praktischen Informatik stS~ndig. Die HS~lfte der dort erworbenen Kenntnisse fiber Produkte ist in fiinf Jahren so veraltet, dass man mit ihnen nichts mehr anfangen kann. Daher gS~be ein Studium, das sich iiberproportional dem Wissen fiber Produkte widmet, keine hinreichende Berufsperspektive. Auf der anderen Seite haben die Konzepte und Methoden der Theoretischen Informatik im Durchschnitt eine wesentlich l~ngere Lebensdauer von mehreren Jahrzehn-
1.2 Eine faszinierende Theorie
25
ten. Ein Absolvent der Informatik kann auf dieses Know-How lange aufbauen. 4. Intevdisziplinaritiit Die Theoretische Informatik ist stark interdisziplinSz und kann sich in vielen spannenden Gebieten an Forschung und Entwicklung beteiligen. Genomprojekte, medizinische Diagnostik, Optimierung in allen Gebieten der Wirtschaft und technischen Wissenschaften, automatische Spracherkennung und Weltraumforschung sind nur einige Beispiele eines grofien Spektrums von M6glichkeiten. Neben diesen wesentlichen BeitrS~gen der Informatik fiir andere Wissenschaften gibt es auch M6glichkeiten yon faszinierenden BeitrS~gen anderer WissenschaRen f/Jr die Informatik. Das Studium der Berechnungen auf der Ebene der Mikroteilchen, die den Gesetzen der Quantenmechanik folgen, hat als Hauptthema die Fragestellung, ob man in der Mikrowelt gewisse Berechnungen (AufgabenlSsungen) effizient realisieren kann, die in der Makrowelt nicht effizient realisierbar sind. Das theoretische Modell eines Quantenrechners ist bereits ausgearbeitet, aber die M6glichkeit einer praktischen Realisierung ist fiir Physiker eine grot3e Herausforderung mit unbekanntem Ausgang. Unabh~tngig davon, ob dieses Projekt Erfolg haben wird, sind die Gesetze der Mikrowelt so tiberraschend und so kontraintuitiv fiir die Menschen, die ihre Erfahrungen in der Makrowelt gesammelt haben, dass man noch mit vielen ,,Wundern" durch die Anwendung der Kenntnisse der Quantentheorie rechnen muss. Schon heute ist klar, dass man in der Mikrowelt sicher kommunizieren kann, da jeder Versuch, die Kommunikation abzuhSren, sofort vom Sender entdeckt und abgewehrt werden kann. Ein anderes spannendes Gebiet ist das Rechnen mit DNS-Molekiilen. DNS-Molek/ile sind InformationstrS~ger und daher sollte es nicht iiberraschen, dass man sie zur Informationsspeicherung und -iibertragung benutzen kann. Heute wissen wir schon, dass man durch chemische Operationen auf DNS-Molekiilen die Arbeit von Rechnern nachahmen kann. Dies ist nicht nur theoretisch klar, mehrere solcher Simulationen yon Berechnungen durch DNS-Molekiile wurden schon in Laboratorien realisiert. Es ist nicht auszuschliefien, dass eines Tages einige DNS-Molekiile die ganze Arbeit eines Rechners iibernehmen kSnnen. 5. Denkweise Die Mathematiker begr/inden die Sonderrolle der Mathematik in der Ausbildung mit der Entwicklung, Bereicherung und PrS~gung einer Denkweise, die der allgemeinen Entwicklung einer PersSnlichkeit zugute kommen sollte. Falls dieser Beitrag der Mathematik anerkannt wird, dann muss man die Wichtigkeit der Informatik fiir die allgemeine Bildung und die Bereicherung um neue Denkweisen in gleichem Mage akzeptieren. WS~hrend sich in letzter Zeit die Mathematikausbildung leider zu stark auf das Erlernen yon korrekter Beweisfiihrung reduziert hat, fSrdert die Theoretische Informatik auch die Modellierung der
26
1 Einleitung
RealitS~t und die Suche nach Konzepten und Methoden zur L6sung konkreter Probleme. In Verbindung mit dem pragmatischen Denken eines guten Praktikers ist dies das Wesentliche, was das Studium den Informatikern bieten kann.
1.3
Fiir die Studierenden
Dieses Buch ist in erster Linie fiir Sie bestimmt. Der Sinn des Buches ist nicht nur, Ihnen einige grundlegende Konzepte der Informatik zu vermitteln, sondern es ist auch ein Versuch, Sie ftir die Informatik zu begeistern. Wie weit diese Zielsetzungen erfiillt werden, bleibt Ihnen zu beurteilen. In den ersten Teilen dieses Kapitels habe ich versucht, Sie davon zu iiberzeugen, dass Informatik eine faszinierende Wissenschaft ist, eine Wissenschaft, die einem sehr viel Spar3, Spannung und Freude bereiten kann. Dass es viele Leute gibt, die die Arbeit in der Theoretischen Informatik richtig genief3en, m6chte ich an einigen miindlich iiberlieferten (m6glichen) Ausschnitten aus den Lehrund Forschungsveranstaltungen eines meiner Freunde illustrieren. 9 ,,Und wenn sich dieser verdammte Fehlerfaktor dann immer noch nicht unter 0, 5 dr/icken 15~sst, dann werden wir andere Saiten aufziehen. Der wird es noch bereuen, sich in mein Lernmodell getraut zu haben." 9 ,,Also heute haben wir so ein Epsilon in die Knie gezwungen. Da war was am Dampfen, sag ich Euch. Erst haben wir eine Approximation draufgehetzt. Erst hat es ja noch ein bisschen gezuckt. Aber dann haben w i r e s mit einer semidefiniten Matrix stumpf erschlagen. Es war herrlich!" 9 ,,Ihr sagt es, kein popliges, dahergelaufenes Lambda vergreift sich an unserein My, ohne dafiir zu bezahlen. Wir machen es so richtig fertig. Es wird gar nicht wissen, wie ihm geschieht." Halten Sie solche Emotionen zu einem mathematisch geprS~gten Thema fiir iibertrieben? Ich nicht. Es ist ein riesiger Spat3, in einer solchen Vorlesung sitzen zu dtirfen, und man begreift gleich, wo die Schwierigkeiten, mit denen man zu kS~mpfen hat, liegen. Die Emotionen in Lehre und Forschung sind der Hauptantrieb. Wenn Sie eine emotionale Beziehung zu einem Lehrthema entwickeln k6nnen, sind sie schon auf der Erfolgstour. Wenn Sie bisher noch keine emotionale Beziehung zu irgendeinem Gebiet der Informatik gefunden haben, ist es h6chste Zeit, sich auf die Suche zu begeben. Falls die Suche erfolglos bleiben sollte, wS~re es angemessen, die Suche auf Wissenschaftsdisziplinen oder Aktivit~ten aut3erhalb der Informatik zu erweitern.
1.3 Fiir die Studierenden
27
Dieses Buch ist einigen Teilen der Theoretischen Informatik gewidmet. Warum hglt man das Studium der Theoretischen Informatik fiir schwer? Es existiert kein leichter Weg zu einem tieferen VerstS~ndnis und zur Beherrschung von Methoden, die eindrucksvolle Anwendungen haben. Das sollte aber niemanden iiberraschen. Wenn jemand 100 Meter unter 10 Sekunden laufen oder fiber 8 Meter weit springen mSchte, muss er auch lange Jahre ein ziemlich hartes Training absolvieren. Immer wenn man etwas Besonderes erreichen will, muss man etwas Besonderes dafiir tun. Eine Wissenschaft zu erlernen ist keine Ausnahme, und vielleicht haben Sie noch zusS~tzlich die Motivationsschwierigkeit, dass Sie das Ziel wS~hrend der Bemiihung noch nicht genau sehen und seinen Wert nicht abschgtzen kSnnen. Es wird also viel Ausdauer gefordert und insbesondere Bereitschaft, jedes Thema viele Male zu iterieren, um ein immer tiefer gehendes Verst~ndnis fiir die Zusammenhgnge zu entwickeln. Dieses Buch soll Ihnen helfen, den Einstieg in die algorithmischen Teile der Theoretischen Informatik zu erleichtern. Dazu benutzen wir folgende drei Konzepte: 1. Einfachheit und Anschaulichkeit Wir erkl~ren alles, was einfach zu erkl~tren ist, auch einfach. Wir vermeiden unn6tige mathematische Abstraktionen, wit versuchen also so konkret zu sein, wie es nur geht. Dadurch schaffen wit den Einstieg mit elementaren Kenntnissen der Mathematik. Bei allen komplizierteren Uberlegungen und Beweisen erkl~tren wit zuerst die Zusammenh~tnge und Ideen auf eine anschauliche und informelle Weise und gehen erst dann zu formalen Begriindungen fiber. An mit 9 gekennzeichneten Stellen empfehlen wit den Fachhochschulstudenten und Nicht-Informatikern, auf die formalen Beweise zu verzichten. Aufierdem kSnnen diese Gruppen zum Beispiel auf den technischen Umgang mit dem formalen Modell der Turing-Maschine im Teil Berechenbarkeit verzichten, und das Verst~tndnis der Grundlagen der Theorie der Berechenbarkeit fiber die Argumentation auf der Ebene von Programmen (in beliebiger Programmiersprache) erreichen. Die Anschaulichkeit ist uns wichtiger als die Presentation der besten bekannten Ergebnisse. Wenn wit die Methoden und Beweisideen leichter mit schw~cheren Resultaten erkl~tren k6nnen, dann ziehen wit die Darstellung solcher Resultate der technischen und schwer durchschaubaren Presentation st~rkerer Resultate vor. Im ganzen Buch folgen wir der Linie, stufenweise mit kleinen Schritten vom Einfachen zum Komplizierten zu gehen, und vermeiden so Gedankenspriinge. 2. ,, Weniger ist manchmal mehr" oder eine kontextsensitive Darstellung Viele Studienplgne und Lehrbiicher gehen von der falschen Vorstellung aus, .o
28
1 Einleitung
dem Leser in erster Linie ein gewisses Quantum an Information liefern zu mfissen. In der Vorlesung oder in den Lehrmaterialien spielt man dann ein falsches Optimierungsspiel- in minimaler Zeit so viele Kenntnisse und Resultate wie m6glich zu vermitteln. Dies fiihrt oft zur Pr/~sentation einer grofJen Menge von einzelnen Resultaten, die zu isoliert wirken. Dabei geht der Kontext der ganzen Veranstaltung verloren. Die Philosophie dieses Buches ist eine andere. Wit wollen die Denkweise der Studierenden prggen. Deswegen ist uns die Anzahl der prgsentierten Resultate nicht so wichtig. Wit konzentrieren uns auf die historische Entwicklung der informatischen Konzepte und Denkweisen, und die Prgsentation von Definitionen, Resultaten, Beweisen und Methoden ist nur ein Mittel, um dieses Ziel zu erreichen. Deswegen nehmen wit gerne die Reduktion der Masse des Lernstoffes urn 2 0 - 30% im Vergleich zu standardisierten Vorlesungen in Kauf. Darer widmen wit mehr Zeit den Motivationen, Zielsetzungen und Zusammenhgngen zwischen der Praxis und den theoretischen Konzepten und insbesondere dem inneren Kontext der entwickelten Theorie. ginen besonderen Schwerpunkt legen wit auf die Bildung neuer Begriffe. Es ist nicht so, wie es vielleicht in einigen Vorlesungen mathematischer Natur aussehen k6nnte, dass die Terminologie vom Himmel gefallen ist. Die formal definierten Terme sind immer eine Approximation oder eine Abstraktion intuitiver Begriffe, deren Formalisierung wir brauchen, urn iiberhaupt exakte Aussagen fiber gewisse Objekte und grscheinungen formulieren zu k6nnen, und um die Realisierung einer formal sauberen und eindeutigen Argumentation (Beweisfiihrung) zu erm6glichen. Wit bemiihen uns hier, die Griinde zu erlgutern, warum man die Begriffe so wie hier und nicht anders formalisiert hat und wo die Grenzen ihres Nutzens liegen.
3. Unterstiitzung iterativer Arbeitsweise An diese Strategie ist auch der Aufbau des Buches angepasst, die wiederholtes Nachdenken fiber prS~sentierte Konzepte fSrdert. Jedes Kapitel fS~ngt mit dem Unterkapitel ,,Zielsetzungen" an, in dem das Lernziel des Kapitels in allen Zusammenh~ngen erl~utert wird. Der Kern des Kapitels ist dann der Formalisierung der Ideen durch theoretische Konzepte und dem Studium im Rahmen dieser Konzepte gewidmet. Bei jedem wesentlichen neuen Schritt wird auf die wichtigsten ZusammenhS~nge mit deren Zielsetzungen aufmerksam gemacht. Jedes Kapitel endet mit einer kurzen Zusammenfassung und einem Ausblick. Dort werden noch einmal die wichtigsten Kenntnisse des Kapitels informell wiederholt und in Zusammenhang mit anderen Teilen der Theorie gebracht. Hier werden auch weitere Entwicklungen der theoretischen Konzepte und aus der Literatur bekannte tiefgreifende Resultate kurz erwS~hnt. Die Entfernung des Wissenstandes von den angestrebten Forschungszielen wird auch diskutiert.
1.4 Aufbau des Lehrmaterials
29
Wie iiblich wird das Erlernen des Buchinhaltes durch (~bungen unterst/itzt. Die (Jbungen befinden sich hier nicht in einem gesonderten Kapitel, sondern sind direkt an den Stellen des Textes eingefiigt, wo es am passendsten ist, fiber sie nachzudenken. Sie dienen zur (Jbung der Anwendungen der prgsentierten Methoden sowie zur Vertiefung des Verstgndnisses des Lernstoffes. Das Ziel des Autors ist nicht nur, die Informatik als eine faszinierende Wissenschaft vorzustellen, sondern Ihnen auch eine preiswerte Eintrittskarte in die algorithmischen Gebiete der Informatik anzubieten. Die Voraussetzungen fiir die Anwendung dieser Karte sind minimal. Erfahrungen mit der Programmierung im Umfang eines Semesters und elementare Kenntnisse der Mathematik sind hinreichend. Die Kenntnisse von Standardvorlesungen wie Rechnerstrukturen und Algorithmen und Datenstrukturen sind zwar nicht notwendig, aber sehr hilfreich fiir das VerstSmdnis konzeptueller Zusammenhgnge.
1.4
Aufbau des Lehrmaterials
Auger dieser Einleitung umfasst das Buch acht weitere Kapitel. Kapitel 2 und 3 dienen als Einstieg. In ihnen lernt man die Sprache und Ausdrucksweisen der Theoretischen Informatik. Das Resultat der Arbeit eines Rechners kann man immer als eine Transformation eines Textes in einen anderen Text verstehen, weil wir die Eingaben und Ausgaben als Texte darstellen. Kapitel 2 legt die Grundlagen fiir den Umgang mit Texten und benutzt sie, um die formale Spezifikation algorithmischer Aufgaben zu entwickeln. Aufierdem beschgftigt sich Kapitel 2 mit der Frage, wie man die Menge des Informationsgehaltes eines Textes messen kann, und wann man einen Text (ein Objekt) als zufgllig betrachten kann. Kapitel 3 stellt die endlichen Automaten als das einfachste Modell von Berechnung vor. Das Ziel ist dabei nicht der Einstieg in die Automatentheorie, sondern nur eine Vorbereitung fiir die Definition eines formalen Modells yon Algorithmen (Programmen). Wir nutzen endliche Automaten, um eine erste einfache Vorstellung der Kernbegriffe der Informatik wie Zustand und Konfiguration eines Berechnungsmodells, Berechnung, Berechnungsschritt, Determinismus, Nichtdeterminismus, BeschreibungskomplexitS~t und Simulation zu vermitteln. Diese erleichtert es uns spS~ter, das Verstgndnis dieser Begriffe fiir das allgemeine Modell der Turing-Maschine zu gewinnen. Kapitel 4 ist der Turing-Maschine als dem theoretischen Grundmodell des intuitiven Begriffes Algorithmus gewidmet. Weil der technische Umgang mit
30
1 Einleitung
Turing-Maschinen einer Programmierung im Maschinencode eines Rechners entspricht, versuchen wir diesen Teil auf das Notwendigste ftir das Verst~ndnis und den Umgang mit den oben erwSohnten Grundbegriffen zu beschrS~nken. Kapitel 5 beschgftigt sich mit der Theorie der Berechenbarkeit. Hier stellen wir uns die Frage, welche A ufgaben man algorithmisch (automatisch) 15sen kann und welche nicht, und prS~sentieren einige Methoden, mit deren Hilfe wir diese Frage ffir einige konkrete Aufgaben beantworten. Hier arbeiten wir auf zwei Ebenen. Die erste Ebene f/ihrt die Argumentation nut anhand eines intuitiven VerstSondnisses des Begriffes Programm, die zweite Ebene argumentiert formal fiber Turing-Maschinen. Kapitel 6 ist der Komplexitgtstheorie gewidmet. Hier stellt man sich die Frage, wie man die Schwierigkeit algorithmischer A ufgaben misst, und ob es beliebig schwere algorithmisch 15sbare Aufgaben gibt. Die Schwierigkeit (Berechnungskornplezitiit) messen wit als die zur LSsung algorithmischer Aufgaben notwendige Menge der Rechnerarbeit. Zuerst prS~sentieren wit einige wichtige Grundkenntnisse, auf deren formale Beweise wir wegen ihres Schwierigkeitsgrades in diesem Kurs verzichten. Danach zeigen wir das Konzept der NP-VollstS~ndigkeit als eine Methode zur Klassifizierung algorithmischer Aufgaben in einfache (praktisch 16sbare) und schwere Aufgaben. Das Konzept basiert auf dem Studium der Beziehung zwischen nichtdeterministischen und deterministischen Berechnungen, welches eines der Kernforschungsthemen der Theoretischen Informatik ist. In gewissem Rahmen zeigen wir, dass die Schwierigkeit (KomplexitS~t), etwas nichtdeterministisch zu 16sen, der Schwierigkeit einer Korrektheitspriifung (Verifikation) eines mathematischen Beweises und die deterministische Art, L6sungen zu suchen, der Erzeugung mathematischer Beweise entspricht. Daher ist die Frage, ob nichtdeterministische Berechnungen effizienter als deterministische sein k6nnen, ~quivalent zu der Frage, ob es einfacher ist, einen gegebenen Beweis zu verifizieren, als ihn zu erzeugen. Kapitel 7 beschSfftigt sich mit der Algorithmentheorie. 2 Dieses Kapitel ist eine Fortsetzung des Kapitels 6 und stellt folgende Frage: Was kann man mit Aufgaben machen, die so schwer sind, dass der beste Algorithmus Jahre brS~uchte, um diese zu 16sen? Hier prS~sentieren wit AnsS~tze wie pseudopolynornielle Algorithrnen, lokale Suche, Approzirnationsalgorithrnen und Heuristiken wie Sirnulated Annealing, die in der Praxis solche Probleme oft bewgltigen. Wit erklgren die methodologischen Grundlagen solcher Methoden, die darauf basieren, dass man durch kleine Anderungen der L6sungsanforderungen oder Aufgabenspezi2Dabei handelt es sich nicht um die Teile der Vorlesung Algorithmen nnd Datenstrnktnren oder der klassischen Vorlesung tiber Algorithmen.
1.4 Aufbau des Lehrmaterials
31
fikation einen gewaltigen Sprung yon einer physikalisch unrealisierbaren Menge von Arbeit zu einer Angelegenheit von ein paar Minuten macht. Zum Beispiel k6nnen Approximationsalgorithmen gewaltige KomplexitS~tsspriinge erm6glichen. Dort weicht man vonder Forderung ab, eine optimale L6sung zu berechnen, und geht fiber zur Berechnung einer L6sung, deren Qualits~t sich vonder Qualitgt einer optimalen L6sung nicht allzu viel unterscheidet. Im Fall der schon in Abschnitt 1.1 erwghnten zufallsgesteuerten Algorithmen ist man von der Forderung nach richtigen L6sungen mit hundertprozentiger Sicherheit zu der schwgcheren Forderungen der Korrektheit mit grofier Wahrscheinlichkeit iibergegangen. Das Konzept der Randomisierung (Zufallssteuerung) geh6rt zweifellos zu den Basiskonzepten der in Kapitel 7 prgsentierten Algorithmik. Weil es heute von essentieller Bedeutung f/Jr viele theoretische und praktische Kernbereiche der Informatik ist, widmen wir diesem Konzept aber ein eigenes Kapitel 8. Hier beschrgnken wir uns aber nicht nur auf die PrS~sentation einiger eindrucksvoller Beispiele von effizienten zufallsgesteuerten Algorithmen wie z.B. den randomisierten Primzahltest. Wir versuchen dem Leser auch die Griinde fiir den Erfolg der zufallsgesteuerten Algorithmen wenigstens teilweise zu erlgutern. In diesem Rahmen stellen wir die Methode der hgufigen Zeugen und die Methode der Fingerabdrticke als grundlegende Paradigmen des Entwurfes von zufallsgesteuerten Algorithmen vor. Das Kapitel 9 ist Kommunikationsaufgaben gewidmet. Besonders in den letzten Jahren hat die Entwicklung der Technologie die Ubertragung von riesigen Mengen von Daten und Gesprgchen erm6glicht. Deswegen sind die algorithmischen Ansgtze zur L6sung von Kommunikationsaufgaben ein fester und sich dynamisch entwickelnder Bestandteil der Informatik geworden. Das Kapitel 9 bietet zungchst einen Ausblick auf die Thematik der sicheren Kommunikation. Wir beginnen mit ein paar Beispielen von Kryptosystemen und stellen das Konzept der Public-Key-Kryptosysteme vor. Wir verwenden dieses Konzept, um zu zeigen, wie man ohne FSJschungsrisiko digitale Unterschriften leisten kann. Dann pr~sentieren wir das Konzept der Zero_Knowledge_Beweissysteme, das auch eine wichtige Rolle in kryptographischen Anwendungen spielt. Wir schliefien dieses Kapitel mit dem Entwurf eines leistungsfS~higen Telefonnetzes ab, um die Problemstellungen in dem Bereich der Netzwerkkommunikation zu illustrieren. Wie im Vorwort zu dieser dritten Auflage schon vorgestellt wurde, ist das letzte Kapitel Grammatiken als Generierungsmechanismen von Sprachen gewidmet. Die Typen von Grammatiken werden wir nach Chomsky klassifizieren und mit den entsprechenden Maschinenmodellen in Verbindung setzen.
Oas
ief te das wir erf hren k nnen
sind die Offenbarungen der Mystik. Sie sind das fundamentalste Gefiihl, das an der Wiege aller wahren Kunst und Wissenschaft steht. Wer es nicht kennt, kann sich nicht mehr wundern; er erlebt das tiefe Staunen nicht mehr: Er ist so gut wie tot ... Wie eine erloschene Kerze ... A. Einstein
~ ~ ,
2
Alphabete, WSrter, Sprachen und Aufgaben
2.1
Zielsetzung
Die Rechner arbeiten im Prinzip mit Texten, die nichts anderes sind als Folgen yon Symbolen aus einem bestimmten Alphabet. Die Programme sind Texte fiber dem Alphabet der Rechnertastatur, alle Informationen sind im Rechner als Folgen yon Nullen und Einsen gespeichert, Eingaben und Ausgaben sind im Wesentlichen auch Texte (oder k6nnen zumindest als Texte dargestellt werden) fiber einem geeignet gew~thlten Alphabet. Aus dieser Sicht realisiert jedes P r o g r a m m eine Transformation von Eingabetexten in Ausgabetexte. Das erste Ziel des Kapitels 2 ist, den Formalismus fiir den Umgang mit Texten als Informationstr~tger einzufiihren. Dieser liefert die notwendige Grundlage, um tiberhaupt formal die Grundbegriffe der Informatik wie algorithmisches Problem (Aufgabe), Algorithmus (Programm), Rechner, Berechnung, Eingabe, Ausgabe usw. definieren zu k6nnen. Die Grundbegriffe, die hier eingefiihrt werden, sind A l p h a b e t , W o r t und S p r a c h e . Ein Teil unserer Aufgabe hier ist es, auch den Umgang mit diesen Begriffen zu iiben und so einige grundlegende Operationen auf Texten zu erlernen. Das zweite Ziel dieses Kapitels ist zu lernen, wie der eingefiihrte Formalismus zur formalen Darstellung yon algorithmischen Aufgaben genutzt werden kann. Dabei betrachten wir iiberwiegend zwei Klassen yon Aufgaben, E n t s c h e i d u n g s p r o b l e m e und O p t i m i e r u n g s p r o b l e m e . Das dritte und letzte Ziel dieses Kapitels ist, sich mit der Komprimierbarkeit von Texten zu beschgftigen. Wir fiihren hier den Begriff der Kolmogorov-
2.2 Alphabete, W6rter und Sprachen
33
K o m p l e x i t ~ i t ein. Dank diesem k6nnen wir nicht nur fiber die kiirzeste Darstellung von Objekten (Texten) und Komprimierbarkeit von Darstellungen sprechen, sondern auch den Informationsinhalt von Texten messen und eine sinnvolle Definition des Adjektivs zufiillig fiir Texte geben. Dies ist ein Beitrag der Informatik auf der philosophischen Ebene, weft er sinnvoll erklS~rt, wann ein Objekt oder eine Erscheinung als zufS~llig eingeordnet werden kann. Ein anderer wichtiger Punkt ist, dass die Kolmogorov-Komplexit~t ein wertvolles Instrument zur Untersuchung von Berechnungen ist, was auch an mehreren Stellen in diesem Buch deutlich gemacht wird.
2.2
Alphabete, WSrter und Spraehen
Bei der algorithmischen Datenverarbeitung reprgsentieren wir die Daten und betrachteten Objekte durch Folgen von Symbolen. Genau wie bei der Entwicklung von natiirlichen Sprachen fangen wir mit der Festlegung von Symbolen an, die wir zur Darstellung der Daten verwenden wollen. Im Folgenden bezeichnet IN = {0, 1, 2 , . . . } die Menge der natiirlichen Zahlen. D e f i n i t i o n 2.1. Eine endliche nichtleere Menge E heiflt A l p h a b e t . Die Elemente eines Alphabets werden B u c h s t a b e n ( Z e i c h e n , S y m b o l e ) genannt. Die Bedeutung ist die gleiche wie bei natiirlichen Sprachen: Das Alphabetwird verwendet, um eine schriftliche Darstellung einer Sprache zu erzeugen. F/Jr uns ist nur wichtig zu wissen, dass wir uns beliebige, aber nur endlich viele Symbole aussuchen diirfen, um eine Darstellung untersuchter Objekte zu realisieren. Wir prgsentieren jetzt einige der hier am hgufigsten benutzten Alphabete.
}-]bool- {0, 1} ist das Boole'sche Alphabet, mit dem die Rechner arbeiten. 9 Elat -- {a, b, c , . . . , z} ist das lateinische Alphabet. 9 2T~statur = 21~t O {A, B , . . . , Z,u, >, <, (,), . . . , !} ist das Alphabet aller Symbole der Rechnertastatur, wobei u das Leersymbol ist. 9 E,~ - {0, 1, 2 , . . . , r n - 1} fiir jedes rn _> 1 ist ein Alphabet fiir die rn-adische Darstellung yon Zahlen. 9 s - {0, 1, z, (,), A, V, ~} ist ein Alphabet, in dem man Boole'sche Formeln gut darstellen kann. 9
Im Folgenden definieren wir W6rter als Folgen von Buchstaben. Man bemerke, dass der Begriff W o r t in der Fachsprache der Informatik einem beliebigen
2 Alphabete, W6rter, Sprachen und Aufgaben
34
Text entspricht und nicht nur der B e d e u t u n g des Begriffs Wort in natiirlichen Sprachen. D e f i n i t i o n 2.2. Sei E ein Alphabet. Ein W o r t iiber E ist eine endliche (eventuell leere) Folge von Buchstaben aus E. Das l e e r e W o r t ,k ist die leere Buchstabenfolge. (Manchmal benutzt man c start A.)
Die L~inge Iwl eines Wortes w ist die Liinge des Wortes als Folge, d.h. die Anzahl der Vorkommen von Buchstaben in w. E* ist die Menge aller WSrter iiber E, E + - E* - {A}. Die Folge 0, 1, 0, 0, 1, 1 ist ein Wort fiber Ebool und fiber ETastatur, 10, 1, 0, 0, 1, 11 = 6. A ist ein Wort fiber jedem Alphabet, - 0. Verabredung. Wir werden W 6 r t e r ohne K o m m a schreiben, d.h. start der Folge z~, z 2 , . . . , z~ schreiben wir z ~ z 2 . . , z~. Also s t a t t 0, 1, 0, 0, 1, 1 benutzen wir im Folgenden die Darstellung 010011. Das Leersymbol u fiber ET~statur ist unterschiedlich yon A, es gilt lul = 1. Somit kann der Inhalt eines Buches oder ein P r o g r a m m als ein Wort fiber ETastatu~ betrachtet werden.
(}--]bool)*
{A, 0, 1, 00, 01, 10, 11,000,001,010, 1 0 0 , 0 1 1 , . . . } {,~} ~ {XlX2... xi l i E IN, xj E }-]bool fiir j -- 1 , . . . , i}.
Wir sehen an diesem Beispiel, dass eine MOglichkeit, alle WOrter fiber einem A l p h a b e t aufzuzghlen, darin besteht, alle W a r t e r der Lgnge i - 0, 1 , 2 , . . . hintereinander zu schreiben. Aufgabe 2.1. Bestimme ffir jedes i c IN, wie viele WSrter der L~nge i fiber einem Alphabet E existieren. Aufgabe 2.2. Gegeben sei ein Alphabet E - {0, 1, r mit k K n .
Seinen k, n positive ganze Zahlen
(i) Bestimme die Anzahl der verschiedenen W6rter der Lgnge n mit genau k Vorkommen des Symbols #. (ii) Bestimme die Anzahl der verschiedenen W6rter der Lgnge n mit h6chstens k Vorkommen des Symbols #.
2.2 Alphabete, W6rter und Sprachen
35
W6rter kSnnen wir benutzen, um unterschiedliche Objekte wie z.B. Zahlen, Formeln, Graphen und Programme darzustellen. Ein Wort x - X l X 2 . . . x ~ E (Eboo~)*, xi E P'bool fiir i -- 1 , . . . , n, kann als die bin/~re Darstellung der Zahl n
-
2
i=1
betrachtet werden. Fiir eine nat/irliche Zahl m bezeichnen wir durch B i n ( m ) E E~oo~ die kiirzeste I bingre Darstellung von m, also N u m m e r ( B i n ( m ) ) m. A u f g a b e 2.3. Eine bingre Darstellung jeder positiven Zahl beginnt mit einer 1. Wie lang ist Bin(m) bei einer gegebenen Zahl m?
A u f g a b e 2.4. Sei x r (E,~)* fiir ein m _> 1. Betrachte x als m-adische Darstellung einer Zahl Nummer.~(x). Wie berechnet man Nummer.~(x)?
Eine Zahlenfolge al, a 2 , . . . , a,~, m E IN, ai E IN fiir i - 1 , . . . , m, kann man als Bin(al)#Bin(a2)#
. . . #Bin(a,~)
E {0, 1, #}*
darstellen. Sei G - (V, E) ein gerichteter Graph mit der Knotenmenge V und der Kantenmenge E c_ {(u, v) l u , v E 17, u r v } . Sei I V I - n die Kardinalitgt von V. Wir wissen, dass wir G durch eine Adjazenzmatrix Ma reprgsentieren kSnnen. Ma[aij] hat die GrSf3e n x n und
a~j- 1 ~
(v~, vj) e E.
Daher bedeutet aij - 1, dass die Kante (vi, vj) in G vorhanden ist, und aij - 0 bedeutet, dass die Kante (vi, vj) in G nicht vorhanden ist. Eine Matrix k6nnen wir als ein Wort fiber dem Alphabet E - {0, 1, # } reprgsentieren. Wir schreiben einfach die Zeilen von Ma hintereinander und das Symbol # benutzen wir, um das Ende einer Zeile zu markieren. Man betrachte den Graphen in Fig. 2.1. 1Die Forderung, dass Bin(m) das kiirzeste Wort mit Nummer(Bin(m)) - m ist, bedeutet nur, dass das erste Symbol yon Bin(m) 1 ist.
2 Alphabete, W6rter, Sprachen und Aufgaben
36
V2
Vl(
C, V3
~-V4
Fig. 2.1 Die entsprechende Adjazenzmatrix ist 0 0 1 1 001 1 0101 0 0 0 0
"
Die vorgeschlagene Kodierung als Wort fiber {0, 1, ~ } ist 0011#0011#0101#0000#. Es ist Mar, dass diese Darstellung eindeutig ist, was bedeutet, dass m a n aus der gegebenen Darstellung den Graphen eindeutig b e s t i m m e n kann. Aufgabe 2.5. Die vorgeschlagene Darstellung eines Graphen als Wort fiber {0, 1, r hat die L~nge n(n + 1) fiir einen Graphen mit n Knoten. Uberlegen Sie sich eine kfirzere eindeutige Darstellung yon Graphen fiber dem Alphabet {0, 1, r Aufgabe 2.6. Entwerfen Sie eine Darstellung ffir Graphen tiber dem Alphabet Ebool. Bei algorithmischen Aufgaben sind die Eingaben oft gewichtete Graphen G = (V, E, h), wobei h e i n e Funktion von E nach I N - {0} ist. Informell bedeutet dies, dass jeder Kante e E E ein Gewicht (manchmal auch Kosten genannt) h(e) zugeordnet ist. Wir wissen, dass auch solche Graphen durch Adjazenzmatrizen darstellbar sind. Auch in diesem Fall bedeutet aij - 0 , dass die Kante 2 {vi, vj} nicht vorhanden ist. Falls {vi, vj} E E, dann ist aij = h({vi, vj}) das Gewicht der Kante {vi, vj}. In diesem Fall k6nnen wir die Gewichte aij = h{vi, vj} bingr darstellen und durch r abtrennen. Urn das Ende einer Zeile zu bezeichnen, kann 2Die ungerichtete Kante zwischen u und v bezeichnen wir hier als {u, v}. Ffir eine gerichtete Kante yon u nach v benutzen wir die iibliche Bezeichnung (u, v).
2.2 Alphabete, W6rter und Sprachen
37
man zwei # hintereinander benutzen. Damit hat der gewichtete Graph in Fig. 2.2 mit der Adjazenzmatrix 0 7 0 6 1
7 0 1 1 0
0 1 0 6 0
6 1 6 0 5
1 0 0 5 0
die folgende Darstellung fiber {0, 1, #}"
0#111#0#110#1##111#0#1#1#0##0#1#0#110#0##110#1#110# 0#101##1#0#0#101#0 Vl
1
7 V2
V5
V4
V3
Fig. 2.2 Weil der betrachtete Graph ungerichtet ist, gilt ai] = a j i f/Jr alle i, j. In unserer Darstellung bedeutet dies, dass die Information fiber das Gewicht jeder Kante in dem Wort doppelt vorkommt. Deswegen reicht es aus, nur die Matrixelemente oberhalb der Hauptdiagonalen zu betrachten. Das resultierende Wort fiber {0, 1, # } ist dann 111#0#110#1##1#1#0##110#0##101. Als letztes Beispiel betrachten wir die Darstellung yon Boole'schen Formeln, die nur die Boole'schen Operationen Negation (=), Disjunktion (V) und Konjunktion (A) benutzen. Im Folgenden bezeichnen wir Boole'sche Variablen in Formeln als X l , X 2 , . . . . Die Anzahl der m6glichen Variablen ist unendlich und deswegen k6nnen wir X l , X 2 , . . . nicht als Buchstaben unseres Alphabets benutzen. Wir benutzen daher das Alphabet Elogic = {0, 1, x, (,), A, V, =} und kodieren die Boole'sche Variable xi als das Wort x B i n ( i ) fiir jedes i E IN. Die
2 Alphabete, W6rter, Sprachen und Aufgaben
38
restlichen Symbole der Formel iibernehmen wir eins zu eins. Damit hat die Formel
(X 1 V X7) A re(X12 ) A (x 4 V
2; 8
V ~(X2) )
die folgende Darstellung (xl V x111) A ~(x1100) A (xl00 V xl000 V ~(xl0)). Eine niitzliche Operation fiber W6rter ist die einfache Verkettung zweier W6rter hintereinander. D e f i n i t i o n 2.3. D i e eine Abbildung K:E*
fiir alle x, y E
Verkettung (Konkatenation) f i i r
ein Alphabet
E ist
x E* ~ E*, s o d a s s
E*.
Sei E = {0, 1, a,b} und seien x = O a a l b b und y = 111b. Dann ist K ( x , y )
=
x . y = Oaalbblllb.
B e m e r k u n g 2.1. Die Verkettung K fiber E ist eine assoziative Operation fiber E*, weil
K ( ~ , K(~, ~ ) ) = ~ . ( ~ ~ ) = ~
= (~ ~)~
= K ( K ( ~ , ~), ~ )
fiir alle u, v, w E E*. Ferner gilt fiir jedes x E E*: x . )~ = )~ . x = x .
Also ist (E*, K, A) eine Halbgruppe (Monoid) mit dem neutralen Element A. Es ist klar, dass die Konkatenation nur f/Jr ein einelementiges Alphabet kommutativ ist. Bemerkung
2.2. Fiir alle x, y E E* gilt:
I~yl = I ~ yl = I~1 + lyl. Im Folgenden werden wir die einfache Notation xy statt der Notation K ( x , y) und x . y bevorzugen.
2.2 Alphabete, WSrter und Sprachen
39
D e f i n i t i o n 2.4. Sei E ein Alphabet. Fiir alle x E E* u n d alle i E IN definieren wir die i-re I t e r a t i o n x i von x als X 0 --
)~,
X 1 --
X
und
xi
-
xx
i-1.
So ist z u m Beispiel t ( ( a a b b a , aaaaa) - a a b b a a a a a a - a2b2a 6 - a2b2(aa) 3. W i r sehen, dass uns die eingefiihrte N o t a t i o n eine kiirzere D a r s t e l l u n g von W S r t e r n ermSglicht. Im F o l g e n d e n definieren wir TeilwSrter eines W o r t e s x als z u s a m m e n h ~ n g e n d e Teile yon x (Fig. 2.3).
a, Teilwort
PrS~fix
,a Suffix
Fig. 2.3 Definition
9 9 9 9
v v v v v
2.5. S e i e n v, w E E* fiir ein Alphabet E.
heiflt ein T e i l w o r t von w e , 3x, y E E* " w - x v y . heiflteinSuffix vonw ev3xEE*:w=xv. heiflteinPr~ifixvonw ev3yEE*:w=vy. # / ~ heiflt t i n e c h t e s Tcilwort (Suffix, Priifix) von w g e n a u dann, w e n n r w, u n d v ist ein Teilwort (Suffix, Priifix) yon w.
Es gilt (abc) a - abcabcabc, u n d das W o r t abc ist ein echtes PrSofix von (abc) 3. Das W o r t bc ist ein echtes Suffix yon (abc) 3. A u f g a b e 2.7. Sei E ein Alphabet und sei x c E ~ fiir ein n C I N - {0}. Wie viele unterschiedliche TeilwSrter kann x hSchstens haben? Zghle alle unterschiedlichen TeilwSrter des Wortes abbcbbab auf. D e f i n i t i o n 2.6. Sei x E E* u n d a E E. D a n n ist IXla definiert als die A n z a h l der V o r k o m m e n von a in x.
Fiir jede M e n g e A bezeichnet IAI die Kardinalitiit yon A u n d 7:' ( A ) S c A } die P o t e n z m e n g e yon A. Also ist I(abbab)la -- ~, I(11bb0) 10 -- 1. Fiir alle x E E* gilt
Ixl-
Ix a aEE
{S I
2 Alphabete, WSrter, Sprachen und Aufgaben
40
In diesem Buch brauchen wir oft eine feste Ordnung von allen W6rtern fiber einem gegebenen Alphabet. Die giinstigste M6glichkeit fiir uns ist, die folgende kanonische Ordnung zu betrachten. D e f i n i t i o n 2.7. Sei E - {Sl, s 2 , . . . , s,~}, m >_ 1, ein Alphabet und sei Sl < s2 < . . . < s,~ eine Ordnung auf E. Wir definieren die k a n o n i s c h e O r d n u n g auf E* fiir u, v E E* wie folgt: u < v r
ul -
Ivl/~u-
x
. si
. u'
/~ v
-
x
. sj
. v'
fiir irgendwelche x, u ~, v ~ E E* und i < j.
Unter dem Begriff Sprache verstehen wir jede Menge yon W6rtern fiber einem festen Alphabet. D e f i n i t i o n 2.8. Eine S p r a c h e L iiber einem Alphabet E ist eine Teilmenge yon E*. Das K o m p l e m e n t L c der Sprache L beziiglich E ist die Sprache E * - L . Lo = 0 ist die leere S p r a c h e .
L~ = {A} ist die einelementige Sprache, die nur aus dem leeren Wort besteht. Sind L 1 und L2 Sprachen iiber E, so ist L 1 9 L 2 = ElL
2 = {vw
I v C L 1 ~tTtd w C L2}
die K o n k a t e n a t i o n von L1 und L2. Ist L eine Sprache iiber E, so definieren wir
L ~ := La und L i+l = L i. L fiir alle i E IN,
L*- [JL
[J
L
-L L *
L* n e n n t m a n den K l e e n e ' s c h e n S t e r n .
Die Folgenden Mengen sind Sprachen fiber dem Alphabet E = {a, b}: L1 = 0, L2 = {)~}, L3 = {A, ab, abab}, L 4 = ~ * = {)~, a, b, aa, . . .}, L5 = E + = {a,b, a a , . . . } , L6 = {a}* = {A,a, aa, a a a , . . . } = { a i [ i E IN}, L7 = {a; [p ist eine Primzahl}, Ls = {aib2ia~[i E IN}, L9 = E, Llo = E* = {aaa, aab, aba, abb, baa, bab, bba, bbb},
die Menge aller grammatisch korrekten Texte im Deutschen ist eine Sprache fiber ETastatur ~ und
2.2 Alphabete, W6rter und Sprachen
41
die Menge aller syntaktisch korrekten Programme in C + + ist eine Sprache fiber }--]Tastatur 9 Man bemerke, dass E i Lx.L-L.
{x e E* I I x l -
i}, und dass LoL -
Lo -
O,
Aufgabe 2.8. Sei L1 - {A, ab, b3a4} und L2 - {ab, b, ab2, b4}. Welche W6rter liegen in der Sprache L1L2? Unser n~chstes Ziel ist, den Umgang mit Sprachen ein wenig zu tiben. Weil Sprachen Mengen sind, haben die tiblichen Operationen Vereinigung (U) und Schnitt (N) eine klare Bedeutung. Zu diesen Operationen haben wir die Konkatenation und den Kleene'schen Stern hinzugefiigt. Die erste Frage, die wir uns stellen, ist, ob Distributivgesetze beztiglich U und Konkatenation bzw. beztiglich N und Konkatenation gelten. F/Jr die Konkatenation und U gibt uns das nS~chste Lemma 2.1 eine positive Antwort. Um den Beweis der Gleichheit yon zwei Mengen (Sprachen) A und B zu fiihren, benutzen wir die iiblichen Methoden der Mengentheorie. Wir zeigen nacheinander A C_ B und B C_ A, was A - B impliziert. Um A C_ B zu zeigen, reicht es zu beweisen, dass fiir jedes Element x E A gilt, dass x E B. L e m m a 2.1. Seien L1, L2 und L3 Sprachen iiber einem Alphabet E. Dann gilt L1L2 U L1L3 - L1 (L2 U L3).
Beweis. Zuerst zeigen wir LIL2 U LIL3 C_ LI(L2 U L3). Die Bemerkungen in geschweiften Klammern sind die Begrtindung fiir den vorangegangenen Schritt. Es gilt" LIL2 C_ LI(L2 U L3), weil
L1L2
- { x y [ x E L1 A y E L2} {Definition der Konkatenation} c_ L1 A y u {wei c_ U L1. (L2 U Ls).
{Definition der Konkatenation}
Ebenso zeigt man LIL3 c_ LI(L2UL3). Daraus folgt LIL2ULIL3 c_ LI(L2UL3). Jetzt zeigen wit die Inklusion LI(L2 U L3) C_ LIL2 U LIL3. Sei x E LI(L2 U L3). Dann
x E { y z l y E L I A Z E L2UL3} {Definition der Konkatenation} 3yEL~A3zEL2ULs,
sodat3x=yz
42
2 Alphabete, W6rter, Sprachen und Aufgaben =:> 3y E L1 A (3z E L2 V 3z E La), so daft x - yz {Definition von t2} (3y E L 1 A 3z E L2 " x - - y z )
V (3y E LI A 3Z E L3 " x - y z )
{Distributivgesetz fiir A, V}
(X E {yz I Y E L1 f z E L2})V (X E {yz I Y E L1 f z E f3}) LIL2
LIL3
{Definition der Konkatenation} x E L1L2 U L1L3.
{Definition yon U}
Jetzt wollen wir uns mit der Frage nach der Giiltigkeit des Distributivgesetzes fiir die Konkatenation und den Schnitt beschS~ftigen. Vielleicht ist es auf den ersten Blick iiberraschend, dass hier die Antwort im allgemeinen negativ ist. Es gilt nur eine Inklusion, die wir zuerst zeigen. L e m m a 2.2. Seien L1, L2, L3 Sprachen iiber einem Alphabet E. Dann gilt
LI (L2 A L3) C_ LI L2 N LI L3. Beweis.
Sei x E LI(L2 N L3). Dies ist 5~quivalent zu x E {yz]y
E L1 A z E L2 A L3}
{D efinition der Konkatenation} v:~ 3y, z E E*, y E L1 A (z E L2 A z E L3), so dass x = y z {Definition yon A} r
3y, z E r * , ( y E L 1 A z E L2)A (y E L 1 A z E L3): x = y z
=~ 3y, z e E*, (yz e LIL2) A (yz e L I L 3 ) : x = yz {Definition der Konkatenation} e=> x E LIL2 A LIL3.
{Definition yon A}
Um zu zeigen, dass LI(L2 N L3) D_ LIL2 N LIL3 nicht im allgemeinen gilt, reicht es, drei konkrete Sprachen U1, [/2 und [/3 zu finden, so daft U1([/2 N U2) C UIU2 A UIU3. Die Idee fiir die Suche nach solchen U1, [/2, [/3 beruht auf der Tatsache, dass die einzige Implikation in dem Beweis von Lemma 2.2 nicht umgekehrt werden kann. Wenn ein Wort x in LIL2 und auch in LIL3 liegt, bedeutet das noch nicht x = yz, wobei x E L1 und z E L2 N L3. Es
2.2 Alphabete, W6rter und Sprachen
43
kann passieren, dass es zwei verschiedene Zerlegungen von x gibt, so dass gilt X - YlZl --Y2Z2 mit Yl r Y2 und Yl E L1, Z1 E L2 und Y2 E L1, z2 E L3. L e m m a 2.3. Es ezistieren U1, U2, U3 E (Ebool)*, so dass
Ul(U2 n u3)
UlU2 n UlU3
13eweis. Zuerst wS~hlen wir U2 = {0} und U3 = {10}. Damit ist U2 N U3 = 0 und damit auch UI(U2 A U3) = 0 fiir jede Sprache U1. Jetzt reicht es aus, U1 so zu wS~hlen, dass U1 U2 ffl U1U3 nicht leer wird. Wir setzen U1 = {A, 1}. Dann ist U1U2= { 0 , 10}, U1U3= {10,110} und damit U~U2 A UIU3 = {10}. D A u f g a b e 2.9. Seien L1, L2 und L3 Sprachen fiber dem Alphabet {0}. Gilt LI(L2 N L3) - LIL2 A LIL3 7. A u f g a b e 2.10. Seien L1 c_ E~ und L2,L3 c E~ fiir zwei Alphabete E1 und E2 mit E1 N
E2 - 0. Gilt LI(L2 N L3) - LIL2 V?LIL3? A u f g a b e 2.11. Existieren Sprachen L1, L2 und L3, so dass LI(L2AL3) endlich und LIL2A LIL3 unendlich ist?
Im Folgenden tiben wir noch den Umgang mit dem Kleene'schen Stern. B e i s p i e l 2.1. Es ist {a}*{b}* - {a~Yl i, j ~ IN}.
13eweis. Zuerst zeigen wir {a}*{b}* C_ { a i t C [ i , j E IN}. Sei x E {a}*{b}*. Dann x-
yz, wobei y E {a}*A z E {b}* {Definition der Konkatenation}
=~
x-
yz, wobei (3k E l N ' y E {a} k) A (3m E I N ' z E {b} "~) {Definition des Kleene'schen Stern}
x-
yz, wobei (3k E l N ' y -
3k, rn E IN, so dass x =~
akb "~
x E {aibdli, j E IN}.
Jetzt zeigen wir {a~tCl i, j E IN} c_ {a}*{b}*.
a ~) A (3rn E l N ' z -
b"~)
44
2 Alphabete, W6rter, Sprachen und Aufgaben
Sei z E
{a~lC l i, j
~ IN}. D a n n
x=~
a~bl fiir irgendwelche Zahlen r, 1 E IN
z E {a}*{b}*, weil a ~ E {a}*, b1 E {b}*.
Aufgabe 2.12. Seweisen oder widerlegen Sie: ({a}*{b}*)* = {a,b}* D e f i n i t i o n 2.9. Seien E1 und E2 zwei beliebige Alphabete. Ein Hornornorphismus von E1 nach E2 ist jede Funktion h " E~ ~ E~ mit den folgenden Eigenschaften: h(A) = A und
(//)
=
r?
W i r b e o b a c h t e n leicht, dass es zur Spezifikation eines H o m o m o r p h i s m u s reicht, h(a) fiir alle B u c h s t a b e n a E E1 festzulegen.
Aufgabe 2.13. Sei h ein Homomorphismus yon E1 nach E2. Beweisen Sie mit HiKe der Induktion, dass fiir jedes Wort x = xlx2...z,~, zi E E1 fiir i = 1,..., m,
h(~) = h(~l)h(~).., h ( ~ ) . B e t r a c h t e n wir h ( # ) = 10, h(0) = 00 u n d h(1) = 11. Es ist klar, dass h ein H o m o m o r p h i s m u s yon {0, 1, r nach Ebool ist. h (011:ff: 101:if:)
h(O)h(1)h(1)h(~)h(1)h(O)h(1)h(~) 0011111011001110.
W i r k 6 n n e n h b e n u t z e n , u m jede eindeutige D a r s t e l l u n g von irgendwelchen O b j e k t e n tiber {0, 1, r in eine neue eindeutige D a r s t e l l u n g dieser O b j e k t e fiber Ebool zu iiberfiihren.
Aufgabe 2.14. Definieren Sie einen Homomorphismus von {0, 1, r nach Ebool, der unendlich viele unterschiedliche W6rter aus {0, 1, 4P}* auf das gleiche Wort aus (Ebool)* abbildet. Aufgabe 2.15. Definieren Sie einen injektiven Homomorphismus yon Elogic nach Ebool, um eine eindeutige Darstellung von Boole'schen Formeln fiber Ebool zu erzeugen.
2.3 Algorithmische Probleme
45
Aufgabe 2.16. Seien E1 und E2 zwei Alphabete. Sei h ein Homomorphismus yon E1 nach
E2. Fiir jede Sprache L c_ E~ definieren wir h(L)-{h(w) wcL}. Seien L1, L2 C_E~. Beweisen oder widerlegen Sie die foglende Aussage: h(L1)h(L2) - h(L1L2).
2.3
Algorithmische Probleme
Bevor wir den intuitiven Begriff Algorithmus durch das Modell der Turingmaschine formal definieren, werden wir statt Algorithmus den Begriff Programm benutzen. Wir setzen voraus, dass der Leser weifi, was ein Programm ist. In welcher Programmiersprache es geschrieben ist, spielt hier keine Rolle. Wenn wir Programme als Algorithmen betrachten, fordern wir jedoch, dass ein solches Programm f/Jr jede zulS~ssige Eingabe hS~lt und eine Ausgabe liefert. Daher ist es fiir einen Algorithmus unzulS~ssig, in eine Endlosschleife zu laufen. Mit dieser Voraussetzung realisiert ein Programm (Algorithmus) A typischerweise eine Abbildung A~I
----~~2
fiir irgendwelche Alphabete
E1
und E2. Dies bedeutet, dass
(i) die Eingaben als W6rter kodiert sind, (ii) die Ausgaben als W6rter kodiert sind und (iii) A fiir jede Eingabe eine eindeutige Ausgabe bestimmt. Fiir jeden Algorithmus A und jede Eingabe x bezeichnen wir mit A ( x ) die Ausgabe des Algorithmus A fiir die Eingabe x. Wir sagen, dass zwei Algorithmen (Programme) A und B ~ q u i v a l e n t sind, falls beide iiber dem gleichen Eingabealphabet E arbeiten und A ( x ) = B ( x ) fiir alle x E E*. Im Folgenden prgsentieren wir einige grundlegende Klassen von algorithmischen Problemen. Wir beginnen mit den Entscheidungsproblemen, die man iiblicherweise benutzt, um die Theorie der Berechenbarkeit und die Komplexitgtstheorie aufzubauen.
2 Alphabete, W6rter, Sprachen und Aufgaben
46
D e f i n i t i o n 2.10. Das E n t s c h e i d u n g s p r o b l e m (E, L) fiir ein gegebenes Alphabet E und eine gegebene Sprache L c_ E* ist, fiir jedes x E E* zu entscheiden, ob
x E L oder x C L. Ein Algorithmus A 15st das Entscheidungsproblem (L, E), falls fiir alle x E E* gilt:
A(x) -
1, falls x E L , O, falls x C L.
Wit sagen auch, dass A die Sprache L e r k e n n t . Wenn fiir eine Sprache L ein Algorithmus existiert, der L erkennt, werden wir sagen, dass L r e k u r s i v ist. 3 Wir benutzen hgufig eine Sprache L C_ E*, um eine gewisse Eigenschaff von W6rtern aus E* (oder von Objekten, die durch die WSrter dargestellt sind) zu spezifizieren. Die WSrter, die in L sind, haben diese Eigenschaft und alle W6rter aus L C - E * - L haben diese Eigenschaft nicht. Ublicherweise stellen wit ein Entscheidungsproblem (E, L) wie folgt dar"
Eingabe: x E E*.
A~tsgabe: d(x) E rbool- {0, 1}, wobei ( 1 falls x E L (J a, x hat die Eigenschaft), 1
[ 0,
falls x ~ L (Nein, x hat die Eigenschaft nicht).
Beispielsweise ist ({a, b}, { a ~ b ~ l n E IN}) ein Entscheidungsproblem, das man auch folgendermagen darstellen kann:
Eingabe: x E {a, b}*. Ausgabe: Ja, x - a~b~ ffir ein n E IN. Nein, sonst. B e i s p i e l 2.2. Ein bekanntes und praktisch wichtiges Entscheidungsproblem ist der P r i m z a h l t e s t (Eboo~, {x E (Eboo~)*lNummer(x)ist eine Primzahl}). Die iibliche Darstellung ist aDie Rekursivitgt ist ein wichtiger Begriff und deswegen geben wir spgter mit dem formalen Modell der Berechnung eine formal prgzise Definition dieses Begriffes.
2.3 Algorithmische Probleme
47
Eingabe: x E (Y~%ool)*. Ausgabe: Ja, falls Nummer(x) eine Primzahl ist, Nein, sonst.
Beispiel 2.3. Sei L = {x E (}--]Tastatur)* I x ist ein syntaktisch korrektes Programm in C++}. Wir k6nnen folgendes Problem betrachten, das eine Teilaufgabe des Compilers ist. Eingabe: x ~ (ETastatur)*Ausgabe: Ja, falls x E L, Nein, sonst.
Beispiel 2.4. Das P r o b l e m des H a m i l t o n s c h e n Kreises ( H K ) i s t (E, HK), wobei E = {0, 1, #} und HK
=
{x E E* I x kodiert einen ungerichteten Graphen, der einen Hamiltonschen Kreis enthglt.4}.
Beispiel 2.5. Das E r f f i l l b a r k e i t s p r o b l e m von a u s s a g e n l o g i s c h e n Form e l n ( E R F ) i s t (Elogi~, E R F ) m i t El~F = {X E (}--]~logic)* I x kodiert eine erfiillbare Formel}.
Eine wichtige Teilklasse von Entscheidungsproblemen ist die Klasse der Aquivalenzprobleme. Das Aquivalenzproblem fiir Programme besteht z.B. darin, fiir zwei Programme A und B in irgendeiner festen Programmiersprache (also fiir die Eing~be (A, B) E (ET~st~tur)*)zu entscheiden, ob A und B ~quivalent sind. Ein anderes Beispiel ist, fiir zwei Boole'sche Formeln zu entscheiden, ob beide Formeln die gleiche Boole'sche Funktion darstellen. Definition 2.11. Seien E und F zwei Alphabete. Wit sagen, daft ein Algorithmus A eine F u n k t i o n ( T r a n s f o r m a t i o n ) f : E* ---+ F* b e r e c h n e t (realisiert), falls A(x) = f (x) fiir alle x E E*. 4Zur Erinnerung, ein Hamiltonscher Kreis eines Graphen G ist ein geschlossener Weg (Kreis), der jeden Knoten von G genau einmal enth/~lt.
2 Alphabete, WSrter, Sprachen und Aufgaben
48
Die Entscheidungsprobleme sind spezielle FS~lle von Funktionsberechnungen, weil das LSsen eines Entscheidungsproblems bedeutet, die charakteristische Funktion 5 einer Sprache zu berechnen. Auf den ersten Blick kSnnte man den Eindruck bekommen, dass die Berechnung von Funktionen die allgemeinste Darstellung von algorithmischen Problemen ist. Die folgende Definition zeigt, dass das nicht der Fall ist. D e f i n i t i o n 2.12. Seien E und F zwei Alphabete, und sei R c_ E* x F* eine Relation in E* und F*. Ein Algorithmus A b e r e c h n e t R (oder 16st d a s R e l a t i o n s p r o b l e m R), falls fiir jedes x E E* gilt:
(x,A(x)) E R. Man bemerke, dass es hinreichend ist, ffir jedes gegebene x eins yon potenziell unendlich vielen y mit (x, y) E R zu finden, um ein Relationsproblem zu 15sen. Die folgenden Beispiele zeigen, dass die Relationsprobleme nicht nur eine mathematische Verallgemeinerung der Berechnung von Funktionen darstellen, sondern dass wit viele derartige Probleme in der Praxis haben. Sei /~fac ~ (}-]bool)* X (}-]bool)*, wobei (x, y) e ~fac g e n a u d a n n , w e n n entweder Nummer(y) ein Faktor 6 yon N u m m e r ( x ) i s t oder = 1, wenn Nummer(x) eine Primzahl ist. Eine anschauliche Darstellung dieses Relationsproblems kSnnte wie folgt aussehen.
Eingabe: x E (Ebool)*. Ausgabe: y E (Ebool)*, wobei y - 1 ist, falls Nummer(x) eine Primzahl ist, r
Ein
anderes
schweres
Problem
ktor
ist
i t.
die
Beweisherstellung.
Es
sei
/~Beweis ~ (~Tastatur) * X (}--]Tastatur)*~ w o b e i (x~ y) E /~Beweis~ weIlI1 e I l t w e d e r x
eine wahre Aussage in einer bestimmten mathematischen Theorie kodiert und y einen Beweis der durch , kodierten Aussage darstellt oder y - u, w e n n , keine wahre Aussage darstellt. Fiir uns sind aber die Optimierungsprobleme, die einen Spezialfall von Relationsproblemen darstellen, von zentralem Interesse. Um die Struktur der Optimierungsprobleme anschaulich darzustellen, benutzen wir folgende Beschreibung statt der Relationsdarstellung. Informell bestimmt eine Eingabe m eines 5Die charakteristische Funktion fL einer Sprache L C_ E* ist eine Funktion aus E* nach {0, 1} mit fL(x) -- 1 genau dann, wenn x C L. 6Eine Zahl a ist ein Faktor einer Zahl b, falls a die Zahl b teilt und a 6 {1, b}.
2.3 Algorithmische Probleme
49
Optimierungsproblems eine Menge M ( x ) yon zulS~ssigen L6sungen f/Jr x. Damit bekommen wir auch eine Relation R mit (x, y) E R, wenn y eine zul~tssige L6sung yon x ist. Aber dieses R ist nicht das zu 16sende Relationsproblem. Die Eingabe x bestimmt zusS~tzlich noch den Preis fiir jedes y mit der Eigenschaft (x, y) E _R. Die Ausgabe zu x muss eine zulS~ssige L6sung mit dem giinstigsten (je nach Aufgabenspezifizierung minimMen oder maximalen) Preis sein. D e f i n i t i o n 2.13. Ein O p t i m i e r u n g s p r o b l e m ist ein 6-Tupel L t - (EI, Eo, L, Ad, cost, goal), wobei:
(i) (~) (~)
E1 ist ein Alphabet (genannt E i n g a b e a l p h a b e t ) , Eo ist ein Alphabet (genannt A u s g a b e a l p h a b e t ) , L c E~ ist die Sprache der zul~issigen E i n g a b e n (als Eingaben kommen nur WSrter in Frage, die eine sinnvolle Bedeutung haben). Ein x E L wird ein P r o b l e m f a l l ( I n s t a n z ) von U, genannt. M ist eine Funktion yon L nach 7)(E~)), und fiir jedes x E L i s t M ( x ) die M e n g e der zul~issigen L S s u n g e n fiir x, cost ist eine Funktion, cost" [_Jx~L(M(x ) • {x}) -~ IR+, genannt P r e i s funktion, goal E {Minimum, Maximum} ist das Optimierungsziel.
Eine zulSssige LSsung (~ E M ( x ) heiflt o p t i m a l fiir den Problemfall x des Optimierungsproblems U, falls cost(~,x) - O p t u ( x ) - goal{cost(/3, x) l /3 E M ( x ) } . Ein Algorithmus A 15st 14, falls fiir jedes x E L
(i) (~)
A(x) E M ( x ) (A(x) ist eine zuliissige LSsung des Problemfalls x yon Lt), ~o~t(d(~),~) - go~l{~o~t(Z,~) l ~ e M(~)}
Falls g o a l - Minimum, ist Lt ein M i n i m i e r u n g s p r o b l e m ; falls g o a l - Maximum, ist Lt ein M a x i m i e r u n g s p r o b l e m . In der Definition eines Optimierungsproblems als 6-Tupel hat das Eingabealphabet E1 die gleiche Bedeutung wie das Alphabet von Entscheidungsproblemen, d.h. E1 benutzt man, um die Instanzen von b/ darzustellen. Analog benutzt man das Ausgabealphabet Eo fiir die Darstellung von Ausgaben (zulgssigen L6sungen). Die Sprache L C E} ist die Menge der Darstellungen von Problemf~llen. Dies bedeutet, dass wir uns auf das Optimierungsproblem
2 Alphabete, W6rter, Sprachen und Aufgaben
50
und nicht auf das Entscheidungsproblem (Ez, L) konzentrieren und dass wir voraussetzen, dass eine Eingabe aus E~ - L nie vorkommen wird. Ein Problemfall z E L formuliert meistens eine Menge von EinschrS~nkungen und A4(z) ist die Menge yon Objekten (zulS~ssigen L6sungen zu z), die diese EinschrS~nkungen erfiillen. In der Regel bestimmt der Problemfall z auch, wie hoch die Kosten cost(c~,z) fiir jedes ct E Ad(z) sind. Die aufgabe ist, in der Menge der zulS~ssigen L6sungen A/t(z) zu z eine optimale zu finden. Die typische Schwierigkeit ist, dass die Menge Ad(z) eine so grot3e MS~chtigkeit hat, dass es unm6glich ist, alle zulS~ssigen L6sungen aus Ad(z) zu generieren und deren Kosten zu vergleichen. Um die Spezifikation von konkreten Optimierungsproblemen zu veranschaulichen, lassen wir oft die Spezifikation von EI, Eo und die Darstellung von Daten fiber E1 und Eo aus. Wir setzen einfach voraus, dass die typischen Daten wie Zahlen, Graphen oder Formeln in der oben prgsentierten Darstellung vorkommen. Dadurch reduzieren wir die Definition eines Optimierungsproblems auf die Spezifikation folgender vier Objekte: 9 die Menge der Problemf~lle L, also die zulgssigen Eingaben, 9 die Menge der EinschrS~nkungen, gegeben durch jeden Problemfall z E L, und damit Ad(z) fiir jedes z E L, 9 die Kostenfunktion, 9 das Optimierungsziel.
Beispiel 2.6. Traveling Salesman Problem (TSP)
Eingabe:
Ein gewichteter vollstS~ndiger Graph (G, c), wobei G = (IF, E), V = {Vl,...,v~} fiir ein n E IN - {0}, und c: E ~ IN - {0}. {Strikt formal ist die Eingabe jedes Wort z E {0, 1, r so dass z einen gewichteten, vollstSmdigen Graphen (G, c) darstellt}. Einschv~nkungen: Far jeden Problemfall (G, c) ist A4(G, c) die Menge aller Hamiltonscher Kreise yon G mit der Kostenfunktion e. Jeder Hamiltonsche Kreis 15~sst sich durch ein (n + 1)-Tupel yon Knoten vii, vi~,..., vi~, vi~ darstellen, wobei ( i l , . . . , i~) eine Permutation yon {1, 2 , . . . , n} ist. Man beachte, dass diese Darstellung nicht eindeutig ist. {Eine streng formale Darstellung yon Ad(G, c) ware die Menge aller W6rter y l # y 2 C P . . . # y ~ E {0,1,r = E b mit Yi E {0,1} + fiir i = 1, 2 , . . . , n und {N~f/zf/zef(~]l), N~f/zf/zef(~]2),... , N~tTrtTrtef(~jn)} {1, 2, =
...,
2.3 Algorithmische Probleme
51
K o s t e n : Fiir jeden Hamiltonschen Kreis H = vi~ , vi~, . . . , Vin, Vi~ E A/t(G, c),
n
CO~t((Vil,... ,Vin,Vil), (G,C)) - ~ C ({Vij,Vi( j modn)+l}) ' j=l
d.h., die Kosten jedes Hamiltonschen Kreises ist die Summe der Gewichte aller seiner Kanten. Ziel: M i n i m u m . Fiir den Problemfall von TSP aus Fig. 2.4 gilt: c o s t ( ( v l , v2, v3, va, v5, vl), (G, c))
=
8+1+7+2+1=19
c o s t ( ( v l , v5, v3, v2, v4, Vl), (G, c))
:
1 + 1 + 1 + 1 + 1 = 5.
Der Hamiltonsche Kreis Vl, v5, v3, v2, v4, V 1 ist die einzige optimale LSsung zu diesem Problemfall yon TSP. V1
1
v5
1 V2
V4
V3
Fig. 2.4
Das TSP ist ein schweres Optimierungsproblem. In der Anwendung erscheihen aber oft nur ProblemfSJle, die gewisse gute Eigenschaften haben und ftir die man bei der Suche nach einer guten L6sung bessere Chancen hat. Wir sagen, dass ein Optimierungsproblem ~/~1 -- (~I, ~ 0 , L/, J~/{, cost, goal) ein Tellp r o b l e m des Optimierungsproblems b/2 - (EI, E o , L, 3 4 , cost, goal) ist, falls L ~ C_ L ist. Auf diese Weise definieren wir auch das m e t r i s c h e T S P ( A - T S P ) als ein Teilproblem yon TSP. Das bedeutet, dass die EinschrS~nkungen, die Kosten und das Ziel genauso definiert sind wie bei TSP, nur die Menge der Eingaben (Problemf~lle) wird folgendermagen eingeschr~nkt" Jeder Problemfall
2 Alphabete, WSrter, Sprachen und Aufgaben
52
(G, c) von A - T S P erfiillt die sogenannte D r e i e c k s u n g l e i c h u n g , tet, dass
_<
was bedeu-
+
fiir alle K n o t e n u, v, w yon G. Dies ist eine natiirliche dass die direkte V e r b i n d u n g zwischen u und v nicht liebige Umwege (Verbindungen fiber andere Knoten). Problemfall in Fig. 2.4 die Dreiecksungleichung nicht Aufgabe 2.17. Beweisen Sie, dass .A4((G,c)) I Knoten ist, wobei n > 2.
(n-
Eigenschaft, die besagt, teurer sein darf als beM a n bemerke, dass der erfiillt.
1)!/2, wenn G ein Graph mit n
Eine K n o t e n i i b e r d e c k u n g eines G r a p h e n G - (V, E) ist jede K n o t e n m e n g e U C_ V, so dass jede K a n t e aus E mit mindestens einem K n o t e n aus U inzident 7 ist. Die Menge {v2, v4, vs} ist z.B. eine K n o t e n t i b e r d e c k u n g des G r a p h e n aus Fig. 2.5, weil jede K a n t e mindestens mit einem dieser drei K n o t e n inzident ist. Die Menge {vl, v2, va} ist keine K n o t e n i i b e r d e c k u n g des G r a p h e n aus Fig. 2.5, weil die K a n t e {v4, vs} durch keinen der K n o t e n vl, v2 und va bedeckt wird. Aufgabe 2.18. Das Knotenfiberdeckungsproblem (minimum vertex cover problem, kurz M I N - V C P ) ist ein Minimierungsproblem, bei dem man ffir einen gegebenen (ungerichteten) Graphen G eine Knotenfiberdeckung mit minimaler Kardinalitgt sucht. (i) Bestimmen Sie die Menge aller Knotenfiberdeckungen des Graphen aus Fig. 2.5. (ii) Geben Sie die formale Beschreibung des MIN-VCP an. Spezifizieren Sie dabei die Darstellung der Eingaben und der Ausgaben fiber dem Alphabet {0, 1, ~:}. Vl
V5
V2
v4
v3
Fig. 2.5 7Eine Kante {u, v} ist inzident zu ihren Endpunkten u und v.
2.3 Algorithmische Probleme
53
B e i s p i e l 2.7. Das Problem der m a x i m a l e n Clique ( M A X - C L ) Eine Clique eines G r a p h e n G = (V, E) ist jede Teilmenge U c V, so dass {{u, v} l u, v E U, u r v} c_ E (die K n o t e n von U bilden einen vollstandigen Teilgraph yon G). Das Problem der m a x i m a l e n Clique ist, eine Clique mit maximaler Kardinalit~t zu finden.
Eingabe: Ein (ungerichteter) G r a p h C -
(If, E).
Kosten: Ftir jedes S E ]td(G) ist cost(S, G) - I s l . Ziel: Maximum. Aufgabe 2.19. Ein Graph T - (V, E') heif3t Spannbaum eines Graphen G - (V, E), falls T ein Baum (ein kreisfreier zusammenh~ngender Graph) und E' C_E ist. Das Gewicht eines Spannbaumes T - (V, E') eines gewichteten Graphen (G, c) entspricht der Summe ~-~-e~z,c(e) aller Gewichte der Kanten in E'. Das Problem des minimalen Spannbaumes ist, fiir einen gewichteten Graphen (G, c) einen Spannbaum mit dem minimalen Gewicht zu bestimmen. Geben Sie die formale Darstellung des Problems des minimalen Spannbaumes als Optimierungsproblem an. B e i s p i e l 2.8. Maximale Erfiillbarkeit ( M A X - S A T ) Sei X = {Xl,X2,...} die Menge der Boole'schen Variablen. Die Menge der Literale fiber X ist Litx = { x , ~ I x E X } , wobei ~ die Negation von x bezeichnet. Eine Klausel ist eine beliebige endliche Disjunktion von Literalen (z.B. Xl V~3Vx4V~7). Eine Formel ist in k o n j u n k t i v e r N o r m a l f o r m ( K N F ) , wenn sie eine K o n j u n k t i o n von Klauseln ist. Ein Beispiel einer Formel fiber X in K N F ist
r - ( ~ v ~ ) A (~, v ~ v ~ ) A ~ A ( ~ v ~ ) A ~ A (~, v ~ ) . Das Problem der m a x i m a l e n Erfiillbarkeit ist, fiir eine gegebene Formel (I) in K N F eine Belegung ihrer Variablen zu finden, die die m a x i m a l m6gliche Anzahl von Klauseln von (I) erftillt.
Eingabe: Eine Formel q) = F1 A F2 A . . . A F,~ fiber X in KNF, wobei Fi eine Klausel ftir i = 1 , . . . , m i s t , m E I N - {0}. Einschriinkungen: Fiir jede Formel (I) fiber {xi~, xi2,..., Xin} ist a4(~)
= {0,1} ~
{Jedes c~ = c~1.., c~, E ]t4(q)), c~j E {0, 1} fiir j = 1 , . . . , n, stellt eine Belegung dar, die xi~ den Wert c~j zuordnet.} Kosten: Fiir jedes (I) und jedes c~ C A4((I)) ist cost(c~, ep) die Anzahl der Klauseln, die durch c~ erfiillt werden.
2 Alphabete, WSrter, Sprachen und Aufgaben
54
Ziel: Maximum. Zu der oben gegebenen Formel (I) k6nnen wir in der Tabelle 2.1 alle 8 Belegungen der Variablen Xl, x2, x3 b e t r a c h t e n u n d d a d u r c h die optimale L6sung bestimmen. Tab. 2.1 xl
x2
X3
Xl V x2
N1 V N2 V x3
X2
X2 V x 3
x3
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0
0
1
0
1 1 1 1 1 1
1 1 0 0 1 1
0 1 1 1 0 1
0 1 0 1 0 1
0
1
1
1
0
1
1
1
x l v x3 1 1 1 1 1 0
0
1
1
0
1
0
1
1
1
0
0
1
1
0
r erfiill. Klauseln
Die o p t i m a l e n L6sungen sind die Belegungen 0 0 1 , 0 1 1 u n d 101, die 5 Klauseln von (I) erfiillen. B e i s p i e l 2.9. Ganzzahlige Lineare P r o g r a m m i e r u n g (integer linear p r o g r a m ming I L P ) Hier besteht die Aufgabe darin, fiir ein gegebenes S y s t e m yon linearen Gleichungen u n d eine lineare F u n k t i o n yon U n b e k a n n t e n des linearen Systems eine L6sung dieses Systems zu berechnen, die m i n i m a l beziiglich der linearen Funktion ist.
Eingabe: Eine m • n M a t r i x A = [aij]i=l,...m,j=l,...,n u n d zwei Vektoren b = ( b l , . . . , bin)T u n d c - ( c l , . . . , Cn) fiir n, m E I N - {0}, wobei a~j, b~, cj ganze Zahlen fiir i = 1 , . . . , m u n d
j = 1 , . . . , n sind.
Einschriinkungen: Ad(A, b, c ) - { X - ( X l , . . . , Xn) T E I N ' l A X b}. {Ad(A,b,c) ist die Menge aller L a s u n g s v e k t o r e n des linearen System A X = b, deren Elemente nur aus natiirlichen Zahlen bestehen.} Kosten: Fiir jedes X = ( x ~ , . . . , x~) r 2t4(A, b, c) ist n
o t(x, (A, b,
-
CiXi. i=1
Ziel: Minimum.
2.3 Algorithmische Probleme
55
AuBer Entscheidungsproblemen und Optimierungproblemen betrachten wir auch algorithmische Probleme anderer Natur. Diese haben keine Eingabe, sondern die Aufgabe ist, ein Wort oder eine unendliche Reihenfolge yon Symbolen zu generieren. D e f i n i t i o n 2.14. Sei E ein Alphabet, u n d sei x c E*. W i t sagen, dass ein A l g o r i t h m u s A das W o r t x g e n e r i e r t , falls A fiir die Eingabe ;~ die Ausgabe x liefert.
Das folgende Progamm A generiert das Wort 100111. A:
begin write(100111) end
Das folgende Programm An :
;
An generiert das Wort (01) n fiir jedes n E IN - {0}.
begin f ori--i rondo write(01) ; end
Ein Programm, das x generiert, kann man als eine alternative Darstellung yon x betrachten. Damit kann man einige W6rter im Rechner als Programme, die diese W6rter generieren, speichern.
D e f i n i t i o n 2.15. Sei E ein Alphabet, u n d sei L C_ E*. A ist ein Aufz~ihlungsa l g o r i t h m u s ffir L , falls A fiir jede Eingabe n E I N - {0} die Wortfolge x l , x 2 , . . . , x ~ ausgibt, wobei x l , x 2 , . . . , x ~ die k a n o n i s c h n ersten W S r t e r in L sind.
B e i s p i e l 2.10. Seien E - {0} und L -
{0p I P ist eine Primzahl}.
Eingabe: n Ausgabe" 02, 03, 0 ~, 0 7 , . . . , 0p~, wobei p~ die n-te kleinste Primzahl ist. Aufgabe 2.20. Beweisen Sie, dass eine Sprache L rekursiv ist genau dann, wenn ein Aufzghlungsalgorithmus fiir L existiert.
2 Alphabete, W6rter, Sprachen und Aufgaben
56
2.4
K o l m o g o r ov- K o m p lexit ~it
In diesem Abschnitt wollen wir W 6 r t e r als Informationstr~tger betrachten und einen sinnvollen Weg zur Messung des Informationsgehaltes von W 6 r t e r n finden. Wir beschrS~nken uns dabei auf W 6 r t e r fiber dem Alphabet Ebool. Die intuitive Grundidee k6nnte sein, einem Wort einen kleinen Informationsgehalt zuzuordnen, falls das Wort eine kurze Darstellung hat (komprimierbar ist), und einen grof3en Informationsgehalt, wenn es so unregelm~tf3ig (irregul~tr) aussieht, dass m a n keine kiirzere Darstellung des Wortes finden kann. So scheint das Wort 011011011011011011011011 mit der Darstellung (011) s einen kleineren Informationsgehalt als 0101101000101101001110110010 zu haben. Die Erzeugung einer kiirzeren Darstellung eines Wortes x nennen wir eine Kornprirnierung von x. Die erste Idee w~re, sich eine feste K o m p r i m i e r u n g s m e t h o d e zu iiberlegen und dann die L~tnge des resultierenden komprimierten Wortes als Mar3 fiir den Informationsgehalt zu nehmen. Natiirlich muss dabei gefordert werden, dass die resultierende Darstellung wieder ein Wort fiber Ebool ist, weil es sicherlich keine Kunst ist, mit m~chtigeren Alphabeten kiirzere Darstellungen zu erzeugen. Aufgabe 2.21. Finden
Sie {0, 1, 2, 3, 4}* - E;, so d ass
Ixl ~
eine
injektive
Abbildung
H
von
(~bool)*
nach
2. IH(~)l- 1
fiir jedes x C (~bool)*, Ixl _) 4. Was fiir einen Komprimierungsfaktor kann man erreichen, wenn man statt 25 das Alphabet G,~ fiir ein rn > 5 nimmt? Wenn wir als m6gliche K o m p r i m i e r u n g die Ausnutzung der Wiederholungen der Teilw6rter betrachten wollen, b e k o m m e n wir zuerst W 6 r t e r fiber dem Alp h a b e t {0, 1, (,)} wie z.B. (011)1000 fiir (011) s oder
(o)1olO;OlO)1;Ol)11Ol f~r (o/1~
1~.
2.4 Kolmogorov-Komplexit~t
57
Um diese wieder fiber Ebool z u kodieren, k6nnen wir einen Homomorphismus yon {0, 1, (,)} nach Ebool wie folgt definieren: h(0)=00,
h(1)=11,
h(()=10,
undh())=01.
So bekommt das Wort (011) s die Darstellung 100011110111000000. Das Problem ist, dass man unendlich viele mSgliche Komprimierungsmechanismen betrachten kann. Welcher soll dann aber der richtige sein? Wir kSnnen z.B. die vorgestellte Komprimierung noch so verbessern, dass wir die Darstellung yon Potenzen noch komprimieren. So kann ein Wort (011) 1~ kiirzer als (011) 2~~ dargestellt werden. Diese Strategie kann man natiirlich beliebig fortsetzen, um kurze Darstellungen fiir W6rter wie (01)12~, (01)2~2n, ... ZU generieren. Dies bedeutet, dass, egal welche dieser Komprimierungen wir nehmen, immer eine weitere Komprimierung existiert, die fiir unendliche viele W6rter bessere Resultate liefert. Daher kSnnen wir, um ein objektives Mat3 fiir den Informationsgehalt von WSrtern zu bekommen, keine dieser Strategien verfolgen. Es kommt noch schlimmer. Betrachten wir folgende Komprimierungsmethode. Fiir jedes x E (Ebool)* k6nnen wir rung ;i 1 .;;2 9
"
.....
Nummer(x)
eindeutig als seine Faktorisie-
ik
fiir Primzahlen P l < P2 < " ' " < Pk, i l , i 2 , . . . , i~ E IN {0} fiir j = 1, 2 , . . . , k ausdrticken. Eine Darstellung von p~l. p~ . . . . . p~ fiber {0, 1, (,), } kSnnte 9
Bin(pl)(Bin(il))Bin(p2)(Bin(i2))
"
/k
. . . Bin(pk)(Bin(ik))
sein. Mit der Anwendung des Homomorphismus h bekommen wir wieder eine bingre Darstellung. Die schlechte Nachricht ist, dass diese Komprimierungsmethode unvergleichbar mit der vorherigen Methode der W6rterpotenzen ist. Also komprimiert die erste Methode fiir einige W6rter besser als die zweite und umgekehrt. Aufgabe 2.22. Finden Sie zwei WSrter x, y E (~bool)*, SOdass (i) die Komprimierungsmethode der Teilw6rterpotenzen eine wesentlich kiirzere Darstellung fiir x als die Methode der Primzahlzerlegung liefert und
58
2 Alphabete, W6rter, Sprachen und Aufgaben
(ii) die Komprimierungsmethode der Primzahlzerlegung fiir y zu einer wesentlich kiirzeren Darstellung fiihrt als die Methode der TeilwSrterpotenzen. Eine Definition des Komplexitgtsmat3es muss robust sein in dem Sinne, dass die gemessene KomplexitS~t eine breite Giiltigkeit hat und daher unter unterschiedlichen Rahmenbedingungen genutzt werden kann. Bei einer Variierung der Komplexitgt in Abhgngigkeit yon der Komprimierungsmethode wiirde eine Festlegung auf eine Methode keine M6glichkeit zu allgemeinen Aussagen fiber den Informationsgehalt von W6rtern geben. Ein Ausweg aus dieser scheinbaren Sackgasse hat Kolmogorov durch folgende Definition gefunden. Es ist dabei wichtig zu beobachten, dass die L6sung unseres Komprimierungsproblems ohne die vorherige Einfiihrung des Begriffs Algorithmus (Programm) nicht mSglich gewesen wgre. D e f i n i t i o n 2.16. Fiir jedes Wort x E (Ebool)* ist die K o l m o g o r o v - K o m plexit~it K ( x ) des W o r t e s x die biniire Liinge des kiirzesten Pascal-Programms, das x generiert. Wir wissen, dass uns ein/Jbersetzer fiir Pascal zu jedem Pascal-Programm seihen Maschinencode generiert, der ein Wort fiber (Ebool)* ist. Fiir jedes Wort x betrachten wir also alle (unendlich vielen) Maschinencodes yon Programmen, die x generieren und die LS~nge eines k/irzesten ist die Kolmogorov-KomplexitS~t yon x. Ist K ( x ) ein guter Kandidat fiir die Definition des Informationsgehaltes von x? Wenn es um die Einbeziehung aller m6glichen Komprimierungsmethoden geht, sicherlich ja. Wir k6nnen zu jeder Komprimierungsmethode, die zu x eine komprimierte Darstellung y produziert, ein Programm schreiben, das y als Parameter (Konstante des Programms) beinhaltet, und das x aus y (basierend auf der Komprimierungsmethode) erzeugt. Bevor wir uns aber in diese Definition vertiefen, zeigen wir ein paar grundlegende Resultate fiber die Kolmogorov-KomplexitS~t, um mehr VerstS~ndnis fiir dieses KomplexitS~tsmaf3 zu gewinnen. Das erste Resultat sichert, dass K ( x ) nicht wesentlich 15~nger sein darf als was nat/irlich erw/inscht ist.
Izl,
L e m m a 2.4. Es existiert eine Konstante d, so dass fiir jedes x E (Ebool)*
Beweis. Fiir jedes x E (Ebool)* nehmen wir folgendes Programm s Ax: SZur Vereinfachung benutzen wir im Folgenden eine Pascal-/ihnliche Programmiersprache, die z.B. ohne Variablendeklaration auskommt.
2.4 Kolmogorov-Komplexit~t
59
begin write(x); end Die Teile begin, write, end und K o m m a t a des Programms Ax sind gleich ffir jedes x E (Ebool)* und die Linge ihrer Kodierung im Maschinencode bestimmt die (nicht zu grofie) Konstante d. Das Wort x ist im P r o g r a m m als x binir dargestellt und leistet deswegen zur biniren Darstellung von Ax nur den Beitrag Die letzte Frage, die noch zu beantworten bleibt, ist die folgende: "Wie erkennt man in der binS~ren Darstellung des Programmes A, den Teil, der x entspricht?" Das Problem liegt darin, dass wir zum Beispiel die Symbole des benutzten Alphabets 2Tastatur durch Folgen von 8 Nullen und Einsen bingr darstellen. Das gilt natiirlich auch ffir die Darstellung der Symbole 0 und 1 aus EWastatur. Wenn wir aber die Nullen und Einsen von x so reprgsentieren wiirden, wS~re die Lgnge yon A, 8. Ixl + d. Um x eins zu eins in A, darzustellen, geben wir am Anfang der binS~ren Kodierung yon A, zwei Zahlen k und 1 an. Die Zahl k gibt die Lgnge des Prgfixes der Kodierung bis zu der Stelle an, an der x geschrieben wird. Die Zahl 1 gibt die Lgnge des Suffixes der bingren Kodierung yon Ax ab der Stelle an, an der dass Wort x steht. Damit ist k die LS~nge der Kodierung von
begin write( und 1 ist die LS~nge der Kodierung yon ) ; end Bemerken wir, dass die Angabe yon 1 und h erforderlich ist. Es reicht nicht, x durch Sondersymbole vom Rest des Programmes zu trennen, weil die bingre Darstellung dieser Sondersymbole auch in x mehrmals vorkommen k6nnte und dadurch wgre nicht eindeutig zu erkennen, wo sich x in Ax befindet. Wichtig ist noch zu beobachten, dass die Zahlen k und 1 unabhS~ngig yon x sind. Deswegen diirfen wir nicht statt 1 die Lgnge Ixl von x am Anfang der Kodierung angeben, weil Bi~(I~I) die LS~nge [log 2 ( B i ~ ( I ~ I ) + 1)] hat, die yon x abhS~ngig ist. D RegelmS~fiige W6rter haben natiirlich eine kleinere Kolmogorov-Komplexit~tt. Sei y~ = 0 ~ E {0, 1}* fiir jedes n E I N - {0}. Das folgende P r o g r a m m Y~ generiert y~.
begin for I = 1 to n d o
2 Alphabete, WSrter, Sprachen und Aufgaben
60 write(0); end
Alle P r o g r a m m e Y~ sind gleich bis auf das n. Die Kosten fiir die bingre Kodierung Bin(n) yon n sind [log2(n § 1)]. Daher kann m a n b e h a u p t e n , class eine K o n s t a n t e c existiert, so dass
ftir a l l e n E IN
-
{0}.
B e t r a c h t e n wir jetzt z~ - 0 ~ E {0, 1}* fiir jedes n E I N - {0}. Das folgende P r o g r a m m Z~ generiert das Wort z~. begin M "-n;
M:=M• f o r I = 1 t o M do write(0); end Alle P r o g r a m m e Z~ sind gleich bis auf das n. Beobachte, dass n die einzige Zahl (Konstante) ist, die im A~ vorkommt. Die Symbole M und I bezeichnen die Variablen und fiir die K o d i e r u n g des P r o g r a m m s spielt es keine Rolle, wie grog die Zahlen sind, die den Variablen w g h r e n d der Ausfiihrung des P r o g r a m m s zugeordnet werden. Wenn d die GrSi3e der K o d i e r u n g e n von Z~ his auf das n ist, erhalten wir
K(z~) <_ [log2(n
+ 1)] + d _~
Flog (glz l]
+ d + 1.
Aufgabe 2.23. Beweisen Sie die folgende Behauptung: Es existiert eine Konstante c, so dass fiir jedes n c I N - {0} K ((01) 2n) _< rlog2(n + 1)] + c - / l o g 2 log 2 (1(01) ~ / 2 ) l
+~.
Aufgabe 2 . 2 4 . Geben Sie eine unendliche Folge von WSrtern yl, y2, Y 3 , . . . fiber ~bool mit folgenden Eigenschaften an: (i) lyil < lyi+ll ftir alle i E I N - {0}, und (ii) es existiert eine Konstante c, so dass
K(yi) <_ [log~ log~ log~ lyil] + ffir alle i C I N - {0} gilt.
2.4 Kolmogorov-Komplexit~t
61
Aufgabe 2.25. Beweisen Sie, dass fiir jede positive Zahl rn ein Wort w,~ existiert, so dass
Wir k6nnen auch den Informationsgehalt von Zahlen messen, wenn wir die Messung der Kolmogorov-KomplexitS~t an ihrer BinS~rdarstellung durchftihren. D e f i n i t i o n 2.17. Die K o l m o g o r o v - K o m p l e x i t / i t
einer natfirlichen Zahl
ist K(n)= K(~in(n)). Aufgabe 2.26. Sei n = pq eine positive Zahl. Beweisen Sie
K(~) _< K(p) + K(q) + fiir eine Konstante c, die unabh~ngig von n, p und q ist. Das nS~chste Resultat zeigt, dass es auch nichtkomprimierbare W6rter im Sinne der Kolmogorov-KomplexitS~t gibt. Lemma dass
2.5. Fiir jede Zahl n E I N - {0} existiert ein Wort w~ E (Ebool) ~
SO
d.h., es existiert fiir jede Zahl n ein nichtkomprimierbares Wort der Lgnge n. Beweis. Der Beweis basiert auf einer einfachen kombinatorischen Idee, die oft Anwendung findet. Wir haben genau 2 ~ WSrter X l , . . . ,x2~ in (Ebool) ~. Sei, fiir i = 1 , 2 , . . . ,2 ~, C-Prog(x~) E {0, 1}* der Maschinencode eines Programrues Prog(xi), das xi generiert und K ( x i ) = IC-Prog(xi)l (also ist Prog(xi) eines der kiirzesten P r o g r a m m e 9, die xi generieren). Es ist klar, dass ftir zwei unterschiedliche WSrter x~ und xj, i # j, C-Prog(x~) und C-Prog(xj) unterschiedlich sein miissen. Das bedeutet, dass wir 2 ~ unterschiedliche Maschinencodes C-Prog(xl), C - P r o g ( x 2 ) , . . . , C-Prog(x2~)von kiirzesten P r o g r a m m e n fiir x l, x 2 , . . . , x2~ haben. Es geniigt zu zeigen, dass mindestens einer der Maschinencodes eine LS~nge gr6i3er gleich n haben muss. Das kombinatorische Argument fiir die gewiinschte B e h a u p t u n g sagt einfach, dass es unm6glich ist 2 ~ unterschiedliche Maschinencodes der L~nge kleiner als n zu haben. Jeder Maschinencode ist ein Wort fiber (Ebool)*. Die Anzahl 9Man bemerke, dasses mehrere unterschiedliche kiirzeste Programme fiir xi geben kann, und wir legen nur eines von ihnen lest.
62
2 Alphabete, WSrter, Sprachen und Aufgaben
der WSrter der LS~nge i fiber Ebool ist genau 2i. Daher ist die Anzahl aller (unterschiedlichen) nichtleeren WSrter fiber Ebool mit einer Lgnge von hSchstens n--1 n-1
2~ = 2~ - 2 < 2~. i=1
Also muss es unter den 2~ WSrtern C - P r o g ( x l ) , . . . , C-Prog(z2~) mindestens eines mit Lgnge von mindestens n geben. Sei C-Prog(zo) ein solches Wort mit IC-Prog(xj)l > n. Weil I C - P r o g ( x j ) l - K(xj), ist xj nicht komprimierbar. D A u f g a b e 2 . 2 7 . B e w e i s e n Sie, dass fiir alle i, n E I N - {0}, i < n, 2 ~ - 2 n - i u n t e r s c h i e d l i c h e W S r t e r x in (Ebool) ~ existieren, so dass
K(x) _> ~ - i. Aufgabe 2.28. [log 2 m] - 1.
B e w e i s e n Sie, dass es u n e n d l i c h viele Z a h l e n m gibt, so dass
K(m) >_
Kehren wir jetzt zuriick zur Frage, ob die Kolmogorov-Komplexit/R ein geniigend robustes Marl fiir den Informationsgehalt von W6rtern ist. Statt einet spezifischen Komprimierungsmethode haben wir ein formales Modell von Programmen genommen, das in sich alle m6glichen KomprimierungsansS~tze implizit beinhaltet. Man kann aber die Festlegung auf eine Programmiersprache als zu groi3e Einschr~nkung sehen. W~re es fiir die Komprimierung einiger WSrter nicht giinstiger, C + + oder Java statt Pascal zu betrachten? Spielt nicht die Festlegung einer Programmiersprache in der Definition der Kolmogorov Komplexit~tt eine ~hnlich negative Rolle ftir die Robustheit der Messung des Informationsgehaltes wie die Festlegung einer Komprimierungmethode? Die Antworten auf diese Fragen sind negativ. Wir zeigen im Folgenden einen Satz, der aussagt, dass die Festlegung auf eine Programmiersprache nur einen beschrSmkten Einttuss auf die KolmogorovKomplexitS~t von WSrtern hat und daher unsere Festlegung auf Pascal in der Formalisierung des intuitiven Begriffs des Informationsgehalts akzeptiert werden kann. Sei, fiir jedes Wort x fiber Ebool und jede Programmiersprache A, KA(X) die Kolmogorov-Komplexit~it yon x beziiglich der Programmiersprache A (die Ltinge des kiirzesten Maschinencodes eines Programmes in A, das x generiert). S a t z 2.1. Seien A und B Programmiersprachen. Es existiert eine Konstante
2.4 Kolmogorov-Komplexitgt
63
CA,B, die n u t von A und B abhiingt, so dass
fiir alle w E
(}--]bool)*.
Beweis. Wir wissen, dass wir fiir beliebige Programmiersprachen A und /3 einen Interpreter als ein Programm UA--,B in /? erstellen k6nnen, das jedes Programm aus A in ein 5~quivalentes Programm in/3 umschreibt und dann auf einer aktuellen Eingabe arbeiten 15~sst. Fiir die Vereinfachung kann man sich fiir die Wortgenerierung die Situation so vorstellen, dass UA--,B ein Programm P in A als einen Eingabeparameter bekommt und die gleiche Arbeit wie P realisiert. Sei CA~B die binS~re LS~nge des Programms UA~B. Sei P~ ein Programm in A, das z generiert. Dann generiert das Programm UA~B mit Eingabe P~ das Wort z. Weil UA~B mit Eingabe P~ ein Programm in der Programmiersprache /3 ist, gilt
(2.1) Wenn man einen Ubersetzer UB~A yon B nach A mit einer binS~ren LS~nge CB~A nimmt, bekommt man fiir jedes Wort x E (Ebool)*
(2.2) Wenn wir CA,B als das Maximum von CA~B und cB-,a nehmen, implizieren (2.1) und (2.2)
_<
Nachdem wir die Kolmogorov-Komplexitgt als das Mar3 des Informationsgehalts von W6rtern akzeptiert haben, wollen wir uns mit der Niitzlichkeit dieses Begriffes besch~tftigen. Die Kolmogorov-Komplexit~tt hat viele Anwendungen, meistens als eine effiziente Methode ffir die Herstellung von anschaulichen mathematischen Beweisen. Im Folgenden pr~sentieren wir drei Anwendungen, fiir deren Verstgndnis keine besonderen Vorkenntnisse ben6tigt werden. Die erste Anwendung ist auf der grundlegenden Ebene der Begriffserzeugung. Der Zufall ist eine der grundlegenden Kategorien der Wissenschaft und wir werden uns mit diesem Begriff in Kapitel 8 fiber zufallsgesteuerte Algorithmen beschSfftigen. Hier stellen wir uns die Frage, warm man ein Objekt oder seine Darstellung als Wort als zuf~tllig bezeichnen kann. Dabei kann die klassische
2 Alphabete, W6rter, Sprachen und Aufgaben
64
Wahrscheinlichkeitstheorie nicht helfen, weil sie nur den Zufallserscheinungen die Wahrscheinlichkeit ihres Eintreffens zuordnet. Wenn man zum Beispiel W6rter aus (Ebool) n zufS~llig beziiglich einer uniformen Wahrscheinlichkeitsverteilung fiber (Ebooa)~ ziehen m6chte, dann hat jedes Wort die gleiche Wahrscheinlichkeit gezogen zu werden. K6nnte man diese Wahrscheinlichkeiten mit der ZufSJligkeit in Verbindung bringen? Dann wgre 0 ~ genauso zufgllig wie ein unregelmgt3iges Wort und das entspricht nicht der intuitiven Vorstellung des Adjektivs zufS~llig. Nach dem W6rterbuch sollte zufgllig bedeuten: ,,hath keinem Plan gebaut". Ein zufS~lliges Objekt hat also eine chaotische Struktur, die keine RegularitS~t besitzt. Und da sind wir mit unserem Begriff der Komprimierung und des Informationsgehalts gerade richtig. Ein Wort ist zufgllig, wenn fiir dieses Wort keine komprimierte Darstellung existiert, wenn es keinen anderen Plan zu seiner Erzeugung gibt als seine vollstgndige Beschreibung. Deswegen ist die folgende Definition bisher die beste bekannte Formalisierung des informellen Begriffes ,,zufiillig". D e f i n i t i o n 2.18. Ein Wort x E (Y]bool)* hciflt zuf~illig, falls K ( x ) >_ Eine Zahl n heiflt zuf~illig, falls K ( n ) = K ( B i n ( n ) ) >_ [log2(n + 1)] - 1.
I 1.
Die n/~chste Anwendung zeigt, dass die Existenz eines Programmes, das ein Entscheidungsproblem (Ebool, L) 16st, zu gewissen Aussagen fiber die Kolmogorov-Komplexit/~t der W6rter in L fiihren kann. Wenn L zum Beispiel keine zwei W6rter gleicher Lgnge enthglt, dann ist die Kolmogorov-Komplexitgt jedes Wortes x aus L nicht viel gr6i3er als log 2 Ixl. S a t z 2.2. Sei L vine Sprache iiber Y]bool. Sei, fiir jedes n E I N - {0}, z~ das n-re Wort in L beziiglich der kanonischen Ordnung. Wenn ein Programm AL existiert, das das Entscheidungsproblem (Ebool, L) 15st, dann gilt fiir alle
_< [aog ( + 1)] + wobei c vine von n unabhiingige Konstante ist. Beweis. Fiir jedes n entwerfen wir ein Programm C~, das z~ generiert. Jedes C~ enthglt AL als Teilprogramm. Die Beschreibung von C~ folgt.
begin i--0; x'--~; while i
AL};
2.4 Kolmogorov-Komplexit~t
65
i f AL(X)= 1 t h e n b e g i n i:=i+1;
z'--x; end; x :-- Nachfolger von x in kanonischer O r d n u n g ; end write(z); end. W i t sehen, dass C~ nacheinander die WSrter aus (Ebool)* in kanonischer Ordnung generiert. Ffir jedes Wort x fiberpriift C~ mit dem Teilprogramm AL~ ob x ~ L oder nicht. C~ z~hlt die Anzahl der v o n An akzeptierten WSrter. Es ist klar, dass die Ausgabe yon C~ das n-te Wort z~ in L i s t . W i t bemerken wieder, dass alle P r o g r a m m e C~ gleich sind bis auf den Parameter n. Wenn wit die bingre Lgnge yon C~ bis auf den Teil, der n darstellt, m i t c bezeichnen, dann ist die Lgnge yon C~ genau c § [log2(n § 1)] fiir jedes n E IN. Das Resultat des Satzes folgt direkt aus dieser Beobachtung. D Um ein typisches Missverst~ndnis zu vermeiden bemerken wir, dass die Lgnge des P r o g r a m m e s C~ nichts damit zu t u n hat, wieviel Speicherplatz die Variablen x, i und z w~hrend der Arbeit von C~ verbrauchen. Dass die Inhalte der Variablen von C~ mit der Zeit wesentlich lgngere Darstellungen als der Maschinencode von C~ haben kSnnen, spielt dabei keine Rolle, weil diese Werte nicht in die Beschreibung des P r o g r a m m e s gehSren. Der einzige Wert, der in die Beschreibung des P r o g r a m m e s geh6rt, ist n. Aus der Sicht des P r o g r a m m e s C~ ist aber n eine feste Konstante (Zahl) und wird daher als Teil des Maschinencodes von C~ dargestellt. Im n~chsten Kapitel werden wir die Beweisidee des Satzes 2.2 vertiefen. Aufgabe 2.29. Sei p ein Polynom einer Variablen. Sei L C_ (Ebool)* eine unendliche rekursive Sprache mit der Eigenschaft L N (Ebool)'~l _< p(m) fiir alle m C IN - {0}. Sei, fiir alle n E I N - {0}, z~ das n-te Wort in L beztiglich der kanonischen Ordnung. Wie kann man K(zn) in Izn nach oben beschr~nken?
Die letzte Anwendung bezieht sich auf ein Resultat der Zahlentheorie~ das eine enorme Wichtigkeit fiir den Entwurf von zufallsgesteuerten Algorithmen hat. Fiir jede positive ganze Zahl n sei Prim (n) die Anzahl der Primzahlen kleiner gleich n. Der folgende grundlegende Satz der Zahlentheorie sagt, dass die Primzahlen relativ dicht zwischen den natiirlich Zahlen verstreut sind. Bei Unterstreichung der Primzahlen k6nnen wir diese H~ufigkeit von Primzahlen
2 Alphabete, W6rter, Sprachen und Aufgaben
66
in folgender Folge kleiner Zahlen I, 2, _3,4, 5, 6, _7, 8, 9, I0, ii, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,... direkt beobachten. Im Folgenden bezeichnet pi immer die i-te kleinste Primzahl. Satz
2.3.
Primzahlsatz
lira
Prim (n)
~-~o~ n / l n n
=1.
Der Primzahlsatz ist eine der bemerkenswertesten Entdeckungen der Mathematik. Er sagt, dass die Anzahl der Primzahlen ungef~hr so schnell wgchst wie die Funktion n~ i n n . Fiir ,,kleine" Werte von n kann m a n Prim (n) genau berechnen. Die folgende Tabelle zeigt einige solcher Werte.
n
Prim (n)
Prim(n)
103 106 109
168 78498 50847478
I, 161 I, 084 I, 053
(n/inn)
Wie nah Prim (n) an n / i n n herankommt, zeigt die folgende Ungleichung inn
3
2
<
n
Prim (n)
< inn
1
2
fiir a l l e n > 67. A u f g a b e 2.30. Sei pi die i-te kleinste Primzahl fiir i - 1, 2 , . . . . Benutzen Sie Satz 2.3, um zu beweisen, dass
lim P~ = 1. n~oo n in rt Die urspr/inglichen Beweise dieses Satzes (diese sind vor mehr als 100 Jahren enstanden) waren sehr kompliziert und kamen nicht ohne die Benutzung komplexer Zahlen aus. Auch die spS~ter vereinfachten Beweise sind zu schwer, um sie hier zu prS~sentieren. Dies sollte nicht iiberraschen, weil die Frage, wie schnell die Funktion Prim (rt)/(rt/inn) zu 1 mit wachsendem rt konvergiert, sehr stark mit der Riemannschen Hypothese, einem der spektakulS~rsten offenen Probleme der M a t h e m a t i k , zusammenh5ngt.
2.4 Kolmogorov-Komplexit~t
67
An dieser Stelle wollen wir die Niitzlichkeit der Kolmogorov-komplexitS~tsartigen Argumentation zeigen, indem wir einen einfachen Beweis fiir eine schw~tchere Version des Primzahlsatzes geben. Diese einfachere Version des Primzahlsatzes ist aber stark genug, um fiir die meisten Anwendungen fiir den Entwurf yon zufallsgesteuerten Algorithmen hinreichend zu sein. Wir zeigen zuerst ein fundamentales Resultat, das besagt, dass es unendlich viele Primzahlen mit bestimmten Eigenschaften gibt. L e m m a 2.6. Sei hi, n2, n 3 , . . , eine steigende unendliche Folge von natiirlichen Zahlen mit K(n~) _> [log 2 n~]//2. Sei fiir i = 1, 2 , . . . die Zahl qg die grSflte Primzahl, die die Zahl n~ teilt. D a n n ist die Menge Q = {q~ l i E I N - {0}} unendlich. Beweis. Wir beweisen Lemma 2.6 indirekt. Angenommen, Q {qi I i E I N - {0}} ist eine endliche Menge. Sei p,~ die gr6t3te Primzahl in Q. Dann kann man jede Zahl ni eindeutig als =
ni
ri,1
-
-
Pl
~i,2 . . . . .
" P2
T)f i , m
,-m
fiir irgendwelche ri,i, r i , 2 , . . . , ri,,~ E IN darstellen. Somit kann man ein einfaches Programm A entwerfen, das ftir gegebene Parameter ri,1, r i , 2 , . . . , ri,m die bin~tre Darstellung von ni erzeugt. Sei c die bingre Lgnge des Programms A auger der Darstellung der Parameter r i , 1 , . . . , ri,m (also die Darstellung des Teils von A, der fiir alle i E IN gleich ist). Dann gilt
K ( ~ ) < c + 2. (Flog2(r~,l + 1)] + Flog2(r{,2 + 1)] + . . . + Flog2(r{,,~ + 1)]) fiir alle i E I N - { 0 } . Die multiplikative Konstante 2 kommt, um die Kodierung der Zahlen ri,1, ri,2,..., ri,,~ so zu gestalten, dass ihre Darstellung klar vom Rest des Programmes trennbar ist. Weil ri,j _< log2 ni fiir alle j E {1, 2 , . . . , m} erhalten wir K (ni) _< c + 2 m . [log 2(log 2 ni + 1)] fiir alle i G I N - {0}. Weil m und c Konstanten beziiglich i sind, kann
Flog2 ~ ] / 2 < c + 2m- Flog2(log2 ~ + 1)1 nur f/ir endlich viele Zahlen i gelten. Dies ist aber ein Widerspruch zu unserer Voraussetzung K(n~) >_ [log2 n~]/2 fiir alle i E IN. D
2 Alphabete, W6rter, Sprachen und Aufgaben
68
Aufgabe 2.31. In Lemma 2.6 setzen wir eine unendliche steigende Folge von natiirlichen Zahlen hi, n2,n3,.., mit der Eigenschaft K(ni) >_ [log2 ni~/2 voraus. Wie weit kann man diese Voraussetzung abschw~tchen (d.h. ~log2 ni~/2 verkleinern), ohne die Aussage des Lemmas 2.6 zu verletzen? L e m m a 2.6 zeigt nicht nur, dass es unendlich viele Primzahlen geben muss, sondern sogar, dass die Menge der gr6f3ten Primzahlfaktoren einer beliebigen unendlichen Folge von natiirlichen Zahlen mit nichttrivialer KolmogorovKomplexitS~t unendlich ist. Wir werden dieses Resultat im Beweis folgender unterer Schranken f/Jr Prim (n) benutzen. S a t z 2.4.*
Fiir unendlich viele k E IN gilt
Prim (k) > -
k 64 log 2 k . (log 2 log 2 k )
2"
Beweis.
Sei pj die j - t e kleinste Primzahl fiir j - 1, 2, .... Betrachten wir ein beliebiges n _> 2. Sei p,~ der gr66te Primfaktor von n. Es ist klar, dass m a n aus p,~ und n/p,~ durch Multiplikation die Zahl n generieren kann. Es geht auch mit noch weniger Information, n~mlich m u n d n/p,~, weil m a n ftir ein gegebenes rn einfach p,~ mit einem P r o g r a m m , das Primzahlen aufzghlt, b e s t i m m e n kann. ()berlegen wir uns jetzt eine eindeutige und dabei kurze Darstellung des Paares (rn, n/p,~) als ein Wort fiber Ebool. Wir k6nnen nicht einfach Bin(m) und Bin(n/p,~) konkatenieren, weil m a n dann nicht weif3, wo das Wort Bin(m) in Bin(rn)Bin(n/p,~)endet, und somit die Darstellung nicht eindeutig wird. Versuchen wir jetzt, m anders zu kodieren. Sei Bin(m) - ala2.., a[log2(m+l)? fiir ai E Ebool ftir i = 1, 2 , . . . , [log2(m + 1)]. Dann setzen wir
Bin(m) -- alOa2Oa30 . . . a[log2(m+l)]_lOa[log2(m+l)]1. Das Wort B i n ( m ) B i n ( n / p ~ ) kodiert eindeutig (m, n/p,~), weil das Ende der Kodierung von rn eindeutig durch die erste 1 an einer geraden Stelle b e s t i m m t ist. Die Lange dieser Darstellung ist 2. [log2(rn + 1)1 + [log2(1 + (n/p,~))]. Das ist uns aber noch zu lang und deswegen kodieren wir (m, n/p,~) als
Bin(~log2(m + 1 ) l ) B i n ( m ) B i n ( n / p ~ ) . Diese Darstellung ist eindeutig, weil das Ende von Bin( Flog2(m+ 1)1) eindeutig zu erkennen ist und Bin( ~log2(m+ 1)1 ) aussagt, dass die nachsten [log2(m+ 1)~
2.4 Kolmogorov-Komplexit~t Bits zum Teilwort
69
Bin(m) gehAren.
Die LA~nge dieser Kodierung ist
2 F1og,~ F1og2(m + 1)ll + F]og,~(m + 1)I + Flog2(1 + ( ~ / p ~ ) ) l 9 Auf diesem Prinzip aufbauend kann m a n unendlich viele Verbesserungen durchfiihren, fiir den Satz reicht eine weitere. Wir reprA~sentieren definitiv das Paar (,~, n / p ~ ) als
Wo~t(.~, ~/p~) = Bin(Flog2Flog2(m + 1)]])Bin(Flog2(m + 1)])Bin(m)Bin(n/p.~). Damit ist offenbar
IWort(m, ~/p~)l
2.
r,o,~:~r,o,~ r,o,~(~
+
1)Ill (2.8)
+ [log 2 []og 2 (m + 1)ll
+[1og2(m
1)]
+
+
Flog2(1 + (n/p~))].
Das Wort(m, n/p.~) betrachten wir jetzt als die K o m p r i m i e r u n g yon Bin(n). Weil wir eine feste Komprimierungsstrategie betrachten, b e k o m m e n wir mit demselben Argument wie in L e m m a 2.5 und in Aufgabe 2.27, dass fiir alle i E I N - {0} f/Jr mehr als die Halfte aller Zahlen n aus {2 ~, 2~+ 1 , . . . , 2 ~+1- 1} die LA~nge yon Wort(m,n/p,~) mindestens Flog(n + 1)] - 1 ist. Analog hat mehr als die HAJfte der Zahlen aus {2 i, 2 i + 1 , . . . , 2 i+1 - 1} die KolmogorovKomplexitA~t von mindestens [log2(n + 1)] - 2. Damit erhalten wir, dass fiir alle i E IN - {0} eine Zahl hi, 2 i _< ni _< 2 i+1 - 1, mit
IWont (~, ~/p~) ~ I ~ i ~ ( ~ ) l - 1
=
Flog2 (hi + 1)]
-
1
und
K(n~) >_[log2(n~ + 1)]
- 2
existiert. Also gibt es unendlich viele n mit den Eigenschaften
I Wo~t(m, ~/p~)l ~ F]-og~('~ + 1)] -
1
(2.4)
und
K ( ~ ) _> [iog2(~ + l)l - 2
(2.5)
2 Alphabete, WSrter, Sprachen und Aufgaben
70
W e n n wir (2.4) f/Jr ein solches n in (2.3) einsetzen, erhalten wir
Flog2(~ +
1)l -
1
_<
2 r,o,~ r,o,~ r,o,~ <~ + 1)Ill + [log,~Flog2(m + i)]] + [log2(m + 1)] + raog2(1 + (~/p~))l.
Weil l o g 2 ( n / p , ~ ) - log 2 n - l o g 2 p , ~ folgt d a r a u s log2 P,~
_<
2. [log2 log2 log2(m + 1)] + Flog2(m + 1)] + 2
<
2 9 log 2 log 2 log 2 m + log 2 log 2 m + log 2 m + 6.
+
I-log2log2(m
+
1)l
Daher ist p,~ _< 64. m . log 2 m . (log 2 log 2 m) 2.
(2.6)
Wegen (2.5) erf/illt unsere unendliche Folge n l , n 2 , n 3 , 9 9 9 die Voraussetzung des L e m m a s 2.6. D a m i t gilt (2.6) ftir unendlich viele m. Das bedeutet, dass die mte P r i m z a h l hSchstens 6 4 - m - l o g 2 m - ( l o g 2 log 2 m) 2 sein darf fiir unendlich viele m. Daher gibt es m P r i m z a h l e n unter den ersten 64. m . log 2 m . (log e log e m) e natfirlichen Zahlen. Anders ausgedrfickt ist
(2.7) fiir unendlich viele m. Setzen wir jetzt die S u b s t i t u t i o n k - 64. m . log 2 m . (log 2 log 2 m) 2 in (2.7) ein. Weil k _> m i s t , erhalten wir Prim(k)
> >
m-
6 4 . log 2 m . (log 2 log 2 m ) 2
k 64. log 2 k . (log 2log 2 k) 2"
A u f g a b e 2.32. Betrachte Bin(Flog 2 m l ) . B i n ( m ) . B i n ( n / p ~ ) als die Komprimierung yon n - p.~ (n/p.~). Welche untere Schranke auf Prim (k) wiirde die Anwendung dieser Komprimierung im Beweis des Satzes 2.3 liefern? A u f g a b e 2.33. Was fitr ein Resultat wiJrde die Darstellung
Bin (F,og2F,og2F,og2ml I l)Bin( ['og2 ['og2 roll)Bin( [,og2ml )Bin(m)Bin(n/p.~)
2.5 Zusammenfassung und Ausblick von n = p , ~ 9 ( n / p ~ )
71
im Beweis yon Satz 2.3 bringen?
A u f g a b e 2.34.* Was ist die best mSgliche untere Schranke auf P r i m ( k ) , die man mit der Beweismethode des Satzes 2.3 bekommen kann? A u f g a b e 2.35.* Sei p l , p 2 , p 3 , . . , die aufsteigende Folge aller Primzahlen. Zeigen Sie mit Hilfe des Primzahlsatzes, dass eine Konstante c existiert, so dass ftir alle m c I N - {0}
gilt.
2.5
Zusammenfassung und Ausblick
In diesem Kapitel haben wir die Grundbegriffe Alphabet, Wort und Sprache eingefiihrt. Ein Alphabet ist eine beliebige nichtleere endliche Menge von Symbolen genau wie bei der SchriR von natiirlichen Sprachen. Der Begriff Wort fiber einem Alphabet entspricht einem beliebigen Text, der aus den Symbolen des Alphabets besteht. Jede Menge von WSrtern fiber dem gleichen Alphabet nennt man Sprache. Diese Grundbegriffe benutzt man in allen Bereichen der Datenverarbeitung. Es fgngt an bei der Spezifikation algorithmischer Aufgaben, wo die Eingaben und Ausgaben immer als WSrter dargestellt werden. Ein Entscheidungsproblem ist im Prinzip durch eine Sprache L spezifiziert. Die Aufgabe ist es zu entscheiden, ob ein gegebenes Wort in L ist oder nicht. Ein Optimierungsproblem hat eine kompliziertere Struktur. Ein Eingabewort kodiert eine Menge yon Anforderungen und die Kosten der Objekte (zulgssiger LSsungen), die die Anforderungen erfiillen. Diese Menge von Anforderungen erfiillen meistens sehr viele LSsungen, von denen man eine der optimalen beziiglich der Optimierungskriterien als Ausgabe berechnen soll. Eine verniinftige M6glichkeit, den Informationsgehalt yon W6rtern fiber {0, 1} zu messen, ist die Kolmogorov-KomplexitS~t. Die Kolmogorov-KomplexitS~t eines Wortes x ist die bingre LS~nge des kiirzesten Pascal-Programms, das das Wort x generiert. Ein Programm, das x generiert, kann man als eine komprimierte Darstellung yon x betrachten. Die Kolmogorov-KomplexittR yon x ist also die Lgnge der ktirzesten Komprimierung yon x. Die W6rter, die man nicht komprimieren kann, kann man als zuf/~llig betrachten. Es gibt unendlich viele zufS~llige WSrter fiber {0, 1}, fiir jede LS~nge mindestens eins. Die KolmogorovKomplexitgt hilR nicht nur, den Informationsgehalt von WSrtern und deren
2 Alphabete, WSrter, Sprachen und Aufgaben
72
Grad der ZufS~lligkeit zu messen, sondern man kann sie als eine effiziente Methode zum Beweisen neuer Resultate verwenden. Das Studium yon Alphabeten, WSrtern, Sprachen und deren Darstellung ist das Thema der Theorie der Formalen Sprachen. Diese Theorie ist eine der gltesten Gebiete der Informatik. Weil in der Informatik die zentralen Objekte wie Informationen, Programme, Aussagen (SS~tze), Nachrichten, Speicherinhalte, Beweise und Berechnungen als WSrter dargestellt sind, liefert die Theorie der Formalen Sprachen die Bausteine fiir viele andere Grundgebiete der Informatik wie Berechenbarkeit, Komplexitgtstheorie, Algorithmik, Kryptographie, Compilerbau u.s.w. In diesem Buch haben wir uns auf minimale Kenntnisse der Theorie der Formalen Sprachen, die hinreichend fiir die ngchsten Kapitel sind, beschrgnkt. Ein Grund dafiir ist auch, dass dem Interessierten fiir die Theorie der Formalen Sprachen hervorragende Lehrbiicher zur Verfiigung stehen, und wir keinen Grund dafiir sehen, das ,,hundertste" Buch zu diesem Thema zu liefern. Wgrmstens empfehlen wir das erfolgreichste klassische Lehrbuch der Theoretischen Informatik, ,,Introduction to A u t o m a t a Theory, Languages, and Computation" yon Hopcroft und Ullman [HU 79] und seine erweiterte neue Version [HMU 01]. Ein anderes schSn geschriebenes klassisches Buch ist [Sal 73] yon Salomaa. Von den neuesten deutschen Lehrbiichern k6nnen wir z.B. Erk und Priese [EP 00] und Wegener [Weg 05] empfehlen. Die Idee, die Kolmogorov-KomplexitS~t zur Messung des Informationsgehaltes von W6rtern einzufiihren, entstand in den 60er Jahren unabhgngig bei Kolmogorov.[Kol 65, Kol 68], und Chaitin [Cha 66, Cha 69, Cha 74]. Den umfassendsten Uberblick fiber dieses Thema bietet das Buch von Li und Vitgnyi [LV 93], das leider ftir Anfgnger sehr schwer lesbar ist. Anschauliche Beispiele ihrer Anwendung kann man bei SchSning [Sch 95] finden.
Kontrollaufgaben 1. Sei E - {0, 1, 2, 3} ein Alphabet. Seien h, 1 und n positive Zahlen, k + 1 _< n. Wie viele WSrter fiber E der Lgnge n mit k Symbolen 1 und 1 Symbolen 0 gibt es? 2. Definiere die Konkatenation yon zwei Sprachen und den Kleene'schen Stern einer Sprache. 3. Seien E1 und E2 zwei Alphabete. Definieren Sie den Begriff des Homomorphismus yon E1 nach E2. Warum ist jeder Homomorphismus h durch h(x) ffir jedes x E E1 vollsttindig determiniert? 4. Seien L1, L2, L3 und L4 beliebige Sprachen fiber einem Alphabet E. Beweisen Sie oder widerlegen Sie die folgenden Behauptungen. (i) (El U L2)" (L3 U L4) -- ElL3 U LIL4 U L2L3 U L2L4 ElL3 n ElL4 n L2L3 n L2L4
(ii) (L1 n L2). (L3 n L4)
-
-
(iii) (L1 U L2). (L3 n L4) -- (L1L3 n L1L4) U (L2L3 n L2L4)
2.5 Zusammenfassung und Ausblick
73
(iv) (L1 0 L2). (L3 V/L4) = LI(L3 gl L4) U L2(L3 gl L4) Wenn eine Gleichung nicht fiir alle Sprachen gelten sollte, iiberprtifen Sie ob mindestens eine Inklusion gilt. 5. Gilt die Gleichung {a, b}* = {a{b}*}*. {b{a}*}*? 6. 7.
8. 9. 10.
11. 12. 13.
14. 15.
Beschreiben Sie informell die Bedeutung des Begriffes ,,Algorithmus". Definieren Sie folgende algorithmische Grundaufgabenstellungen: Entscheidungsproblem, Optimierungsproblem und Aufzghlungsproblem. Erklgren Sie, was es bedeutet, diese Probleme zu 16sen. Wie hgngt die Existenz eines Algorithmus ffir ein Entscheidungsproblem (E, L) mit der Existenz eines Aufz/~hlungsalgorithmus ftir L zusammen? Suchen Sie sich ein Optimierungsproblem aus und geben Sie seine vollstgndige formale Beschreibung an. Definieren Sie die Kolmogorov-Komplexit~t von WSrtern tiber {0, 1}* und erkl~ren Sie, warum man sich gerade ftir diese Art der Messung des Informationsgehaltes von W6rtern geeinigt hat. Wie stark h/~ngt die Definition der Kolmogorov-Komplexit/~t von der Wahl der Programmiersprache ab? Wie definiert man die Kolmogorov-Komplexit/~t von natfirlichen Zahlen? Sei E = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Wie wiirden Sie die Kolmogorov-Komplexit/~t von WSrtern fiber E definieren? Betraehten Sie mehrere M6glichkeiten und diskutieren Sie ihre Vor- und Naehteile. Warum ist die Kolmogorov-Komplexit/~t eines Wortes x nie wesentlich grSfier als Ixl und warum ist dies erwiinseht? Bei der Bestimmung einer oberen Schranke ffir die Kolmogorov-Komplexit~t K(x) eines Wortes x geht man meistens so vor, dass ein P r o g r a m m Px zur Generierung von x entwiekelt wird um dann die bin/~re L/~nge des Programms zu messen. H/~ngt diese Messung von der Gr6t3e des yon Px w/~hrend der Generierung von x benutzten Speichers ab? Gibt es Unterschiede in der Messung der bin~ren L/~nge der folgenden zwei Programme, die das gleiehe Wort O n3 generieren?
/)nl:
begin ]~ :-- n; ]~ := ]~ x ]~ x ]~; f o r Z : = 1 to iV/do
write(O); end
Pn2:
begin .M-:--n
x n x n;
f o r I : = 1 to M d o write(O); end
74 16.
17. 18.
2 Alphabete, W6rter, Sprachen und Aufgaben Geben Sie eine unendliche Folge von W6rtern yl, y2, Y3,... fiber ~bool mit folgenden Eigenschaften an: (i) lyil < lyi+ll ffir alle i C I N - {0}, und (ii) es existiert eine Konstante c, so dass fiir alle i E I N - {0} gilt. Wie sieht es es mit der Verteilung der W6rter aus {0, 1} ~ bezfiglich deren KolmogorovKomplexitgt aus? Wieviele wenig komprimierbare W6rter gibt es? Erkl/~ren Sie ohne die formalen Beweise zu wiederholen, warum die Annahme der Existenz von zu wenigen Primzahlen (z.B. Prim (k) <_ k/(log 2 k) 2) zwischen natfirlichen Zahlen zu einem Widerspruch fiihrt. Was hat das mit der Darstellung der Zahlen durch ihre Primfaktorzerlegung zu tun?
Der Beweis einer hohen Bildung ist die F~higkeit, fiber komplexe Sachen so einfach wie m6glich zu sprechen. R. Emerson
3
Endliche A u t o m a t e n
3.1
Zielsetzung
Endliche Automaten sind das einfachste Modell der Berechnungen, das man in der Informatik betrachtet. Im Prinzip entsprechen endliche Automaten speziellen Programmen, die gewisse Entscheidungsprobleme 16sen und dabei keine Variablen benutzen. Endliche Automaten arbeiten in Echtzeit in dem Sinne, dass sie die Eingabe nur einmal von links nach rechts lesen, das Resultat steht sofort nach dem Lesen des letzten Buchstabens fest. Der Grund, endliche Automaten hier zu behandeln, ist nicht der Einstieg in die Automatentheorie. Wir nutzen die endlichen Automaten zu didaktischen Zwecken, um auf einfache und anschauliche Weise die Modellierung von Berechnungen zu erlS~utern. Daher fiihren wir einige Grundbegriffe der Informatik wie Konfiguration, Berechnungsschritt, Berechnung, Simulation, Determinismus und Nichtdeterminismus fiir das Modell der endlichen Automaten mit dem Ziel ein, das grobe VerstS~ndnis fiir die allgemeine Bedeutung dieser Begriffe zu gewinnen. Dies sollte uns spS~ter die Entwicklung des VerstS~ndnisses dieser Begriffe im Zusammenhang mit einem allgemeinen Modell von algorithmischen Berechnungen erleichtern. Wir lernen also in diesem Kapitel, wie man eine Teilklasse von Algorithmen (Programmen) formal und dabei anschaulich modellieren und untersuchen kann. Neben dem ersten Kontakt mit den oben erw~hnten Grundbegriffen der Informatik lernen wir auch, was es bedeutet, einen Beweis zu fiihren, der zeigt, dass eine konkrete Aufgabe in einer gegebenen Teilklasse von Algorithmen nicht 16sbar ist.
3 Endliche Automaten
76
3.2
Die Darstellungen der endlichen Automaten
Wenn man ein Berechnungsmodell beantworten:
definieren will, muss man
folgende Fragen
i. Welche elementaren Operationen, aus denen man die Programme zusammenstellen kann, stehen zur Verfiigung? 2. Wieviel Speicher steht einem zur Verfiigung und wie geht man mit dem Speicher urn? 3. Wie wird die Eingabe eingegeben? 4. Wie wird die Ausgabe bestimmt (ausgegeben)?
Bei endlichen Automaten hat man keinen Speicher zur Verfiigung auger dem Speicher, in dem das Programm gespeichert wird und dem Zeiger, der auf die angewendete Zeile des Programmes zeigt. Das bedeutet, dass das Programm keine Variablen benutzen darf. Das mag iiberraschend sein, weil man fragen kann, wie man ohne Variablen iiberhaupt rechnen kann. Die Idee dabei ist, dass der Inhalt des Zeigers, also die Nummer der aktuellen Programmzeile, die einzige wechselnde Information ist, und dass man mit dieser Pseudovariablen auskommen muss. Wenn E = {al, a 2 , . . . , a k } das Alphabet ist, fiber dem die Eingaben dargestellt sind, dann darf der endliche Automat nur den folgenden Operationstyp benutzen: select i n p u t = al goto il i n p u t = a2 goto i2 i n p u t = ak
goto ik
Die Bedeutung dieser Operation (dieses Befehls) ist, dass man das n&chste Eingabesymbol liest und mit al, a2,..., a~ vergleicht. Wenn es gleich a d ist, setzt das Programm die Arbeit in der Zeile id fort. Die Realisierung dieses Befehls bedeutet automatisch, dass das gelesene Symbol gel6scht wird und man daher in der Zeile id das n~chste Symbol liest. Jede Zeile des Programms enth~it genau einen Befehl der oben angegebenen Form. Wir numerieren die Zeilen mit natiirlichen Zahlen 0, 1,2, 3,... und die Arbeit des Programmes beginnt immer in der Zeile 0. Wenn E nur aus zwei Symbolen (z.B. 1 und 0) besteht, kann man statt des Befehls select den folgenden Befehl if ... then ... else benutzen.
3.2 Die Darstellungen der endlichen Automaten if
input = 1 then
77
goto i else goto j.
Solche Programme benutzt man, um Entscheidungsprobleme zu 16sen. Die Antwort ist durch die Zeilennummer bestimmt. Wenn ein Programm aus rn Zeilen besteht, wS~hlt man sich eine Teilmenge F yon {0, 1, 2 , . . . , r n - 1}. Wenn dann nach dem Lesen der gesamten Eingabe das Programm in der j-ten Zeile endet, und j E F, dann akzeptiert das Programm die Eingabe. Wenn j E {0, 1 , 2 , . . . , r n - 1 } - F, dann akzeptiert das Programm die Eingabe nicht. Die Menge aller akzeptierten W6rter ist die von dem Programm akzeptierte (erkannte) Sprache. Betrachten wir als Beispiel folgendes Programm A, das Eingaben fiber dem Alphabet Eboo~ bearbeitet. O~ 1: 2: 3:
if if if if
input = 1 then input = 1 then input = 0 then input = 0 then
goto goto goto goto
1 else goto 2 0 else goto 3 0 else goto 3 i else goto 2
Setzen wir F = {0, 3}. Das Programm A arbeitet auf einer Eingabe 1011 wie folgt: Es startet in der Zeile 0, und geht in die Zeile 1, nachdem es eine 1 gelesen hat. Es liest eine 0 in der ersten Zeile und geht in die dritte Zeile. In der dritten Zeile liest es eine 1 und geht in die zweite Zeile, um in die dritte Zeile zuriickzukehren beim Lesen einer weiteren 1. Die Berechnung ist beendet, und weil 3 E F gilt, wird das Wort 1011 akzeptiert. Mit endlichen Automaten verbindet man oft die schematische Darstellung aus Fig. 3.1. In dieser Abbildung sehen wir die drei Hauptkomponenten des Mod e l l s - ein gespeichertes P r o g r a m m , ein B a n d mit dem Eingabewort und einen Lesekopf, der sich auf dem Band nur von links nach rechts bewegen kann. 1 D~s B~nd (auch Eingabeband genannt) betr~chtet man als einen linearen Speicher ftir die Eingabe. Das Band besteht aus Feldern (Zellen). Ein Feld ist eine elementare Speichereinheit, die ein Symbol aus dem betrachteten Alphabet beinhalten kann. Die oben beschriebene Klasse von Programmen benutzt man heute fast gar nicht mehr, um endliche Automaten zu definieren, weil diese Programme wegen des goto-Befehls keine sch6ne Struktur haben. Daher ist diese Modellierungsart nicht sehr anschaulich und fiir die meisten Zwecke auch sehr unpraktisch. Die Idee einer umgangsfreundlicheren Definition endlicher Automaten basiert 1Die komponentenartige Darstellung von allgemeinen Berechnungsmodellen beinhaltet aut3erdem noch einen Speicher, Schreib- und Lesezugriffsm6glichkeiten auf diesen Speicher und eventuell ein Ausgabemedium.
3 Endliche Automaten
78
~176
I 1101 11
Eingabeband
Lesekopf Programm
Fig. 3.1
auf folgender visueller Darstellung unseres Programms. Wir ordnen jedem Programm A einen gerichteten markierten Graphen G(A) zu. G(A) hat genau so viele Knoten wie das Programm A Zeilen hat, und jeder Zeile yon A ist genau ein Knoten zugeordnet, der durch die Nummer der Zeile markiert wird. Falls das Programm A aus einer Zeile i in die Zeile j beim Lesen eines Symbols b iibergeht, dann enthalt G(A) eine gerichtete Kante (i, j) mit der Markierung b. Weil unsere Programme ohne Variablen fiir jedes a E E in jeder Zeile einen goto-Befehl haben, 2 hat jeder Knoten yon G(A) genau den ausgangsgrad a I~1. Fig. 3.2 enthS~lt den Graph G(A) fiir das oben beschriebene vierzeilige Programm A. Die Zeilen aus F sind durch Doppelkreise als abgesonderte Knoten yon G(A) gekennzeichnet. Der Knoten, der der Zeile 0 entspricht, wird durch einen zusS~tzlichen Pfeil (Fig. 3.2) als der Anfangsknoten aller Berechnungen bezeichnet.
1
0
Fig. 3.2 2Jede Zeile ist ein select fiber alle Symbole des Alphabets. 3Der Ausgangsgrad eines Knoten ist die Anzahl der gerichteten Kanten, die den Knoten verlassen.
3.2 Die Darstellungen der endlichen Automaten
79
Aus dieser graphischen Darstellung entwickeln wir jetzt die standardisierte formale Definition von endlichen Automaten. Die graphische Darstellung werden wir aber weiterhin benutzen, weil sie eine sehr anschauliche Beschreibung von endlichen Automaten bietet. Die folgende formale Definition ist andererseits besser f~r das Studium der Eigenschaften endlicher Automaten und ftir die formale Beweisfiihrung geeignet. Hierfiir 5~ndern wir teilweise die Terminologie. Was wir bisher als Zeile des Programms oder als Knoten des Graphen bezeichnet haben, werden wir im Weiteren als Zustand des endlichen Automaten bezeichnen. Die Kanten des Graphen, die den goto-Befehlen des Programms entsprechen, werden durch die sogenannte Ubergangsfunktion beschrieben. Man beachte, dass der folgenden Definition ein allgemeines Schema zugrunde liegt, das man bei der Definition aller Rechnermodelle anwenden kann. Zuerst definiert man eine Struktur, die die exakte Beschreibung jedes Objektes aus der Modellklasse erm6glicht. Dann beschreibt man die Bedeutung (Semantik) dieser Struktur. Dies geschieht in folgender Reihenfolge. Zuerst definiert man den Begriff der Konfiguration. Eine Konfiguration ist die vollst~ndige Beschreibung einer Situation (eines allgemeinen Zustand..s), in der sich das Modell befindet. Dann definiert man einen Schritt als einen Ubergang aus einer Konfiguration in eine andere Konfiguration, wobei dieser/Jbergang durch eine elementare Aktion des Rechnermodells realisierbar sein muss. Eine Berechnung kann dann als eine Folge solcher Schritte gesehen werden. Wenn man eine Berechnung deftniert hat, kann man jeder Eingabe das Resultat der Arbeit des Rechnermodells als Ausgabe zuordnen. D e f i n i t i o n 3.1. Ein (deterministischer) e n d l i c h e r Automat (EA) ist ein
Quintupel M = (Q, E, 5, qo, F), wobei
(ii) (iii)
Q eine endliche Menge von Zust~inden ist {vorher die Menge yon Zeilen eines Programms ohne Variablen}, E ein Alphabet, genannt E i n g a b e a l p h a b e t , ist, { die Bedeutung ist, das zuliissige Eingaben alle WSrter iiber E sind.} qo E (2 der A nfangszustand ist {vorher die Zeile 0 des Programms ohne Variablen}, F c_ Q die M e n g e d e r a k z e p t i e r e n d e n Zust~inde 4 ist, und
4In der deutschsprachigen Literatur auch Endzustgnde genannt. Der Begriff ,,Endzustand" kann abet auch zu Missverst~ndnissen fiihren, weil die Berechnungen in einem beliebigen Zustand enden kSnnen. Aut3erdem entspricht der Begriff ,,akzeptierender Zustand" der wahren Bedeutung dieses Begriffes und der Bezeichnung bei anderen Berechnungsmodellen wie bei Turingmaschinen.
3 Endliche Automaten
80
6 eine Funktion aus Q • E nach Q ist, die U b e r g a n g s f u n k t i o n genannt wird {5(q~ a) = p bedeutet, dass M in den Zustand p iibergeht, falls M im Zustand q das Symbol a gelesen hat}. Eine K o n f i g u r a t i o n von M ist ein Element aus Q • E*. { Wenn M sich in einer Konfiguration (q, w) E Q • E* befindet, bedeutet das, dass M im Zustand q ist und noch das Suffix w eines Eingabewortes lesen soll.} Eine Konfiguration (qo~x) E {q0} • E* heiflt die S t a r t k o n f i g u r a t i o n von M
auf x. {Die Arbeit (Berechnung) von M a u f x muss in der Startkonfiguration (qo~x) von x anfangen}. Jcde Konfiguration aus Q • {1} ncnnt man cinc E n d k o n f i g u r a t i o n . Ein S c h r i t t von M ist eine Relation (auf Konfigurationen) ~
c_ (Q • E*) •
{Ein Schritt entspricht einer Anwendung der Ubergangsfunktion auf die aktuelle Konfiguration, in der man sich in einem Zustand q befindet und ein Eingabesymbol a liest. } Eine Berechnung C von M i s t eine endliche Folge C = Co~ C1,...~ C~ von Konfigurationen, so dass Ci ~ C~+1 fiir alle 0 <_ i <_ n - 1. C ist die Berechnung von M auf einer E i n g a b e x E E*, falls Co = (qo~x) und C~ E Q x {,k} eine Endkonfiguration ist. Falls C~ c F x {I}, sagen wit, dass C eine a k z e p t i e r e n d e B e r e c h n u n g von M auf x ist, und dass M das W o r t x a k z e p t i e r t . Falls C~ E (Q F) x {~}, sagen wit, dass C eine verw e r f e n d e B e r e c h n u n g von M a u f x ist, und dass M das W o r t x v e r w i r f t (nicht a k z e p t i e r t ) . {Man bemerke, dass M fiir jede Eingabe x E E* genau eine Berechnung hat.} Die von M a k z e p t i e r t e S p r a c h e L ( M ) :=
ist definiert als
die Berechnung von M auf w endet in
s = { L ( M ) I M ist sin EA} ist die tilasse der Sprachen, die yon endlichen Automaten akzeptiert werden. s bezeichnet man auch als die K l a s s e
3.2 Die Darstellungen der endlichen Automaten
81
d e r r e g u l ~ r e n S p r a c h e n , und jede Sprache L aus Z;(EA) wird r e g u l a r genannt. Benutzen wir noch einmal das P r o g r a m m A, um die gegebene Definition der endlichen Automaten zu illustrieren. Der zum P r o g r a m m A gquivalente EA ist M = (Q, E, 5, qo, F) mit Q = {qo, ql, q2, q3}, E = {0, 1 }, F = {qo, q3 } und 5(qo, 0) = q2, 5(qo, 1) = ql, (~(ql, 0)
=
q3, (~(ql, 1) = q0,
5(q2, 0) = q0, 5(q2, 1) = q3, 5(q3, 0) = ql, ~(q3, 1) = q2. Anschaulicher kann man die Ubergangsfunktion 5 durch die folgende Tabelle beschreiben. Tab. 3.1 Zustand
Eingabe 0
1
qo ql
q2
ql
q3
qo
q2
qo
q3
q3
ql
q2
0
0
Fig. 3.3
Die anschaulichere Darstellung eines EA ist aber die schon angesprochene graphische Form (Fig. 3.2), die man fiir den EA in die in Fig. 3.3 gegebene Form
3 Endliche Automaten
82
umwandeln kann. Die Berechnung yon M auf der Eingabe 1011 ist (qo, 1011) ~
(ql, 011) ~
(q3, 11) ~
(q2, 1) ~
(q3,/~).
Weil q3 E F, ist 1011 E L ( M ) . Die folgende Definition ffihrt Bezeichnungen ein, die den formalen Umgang mit endlichen Automaten erleichtern. Definition 3.2. Sei M = (Q, E, 5, qo, F) ein endlicher Automat. Wit definieten - ~ als die reflexive und transitive Hiille der Schrittrelation ~ daher ist (q, ~ ) -5- (p, ~) ~ , (q - p ~ d
(i)
von M ;
~ - ~) o d ~ 3k c ~ - {0}, ~o d ~
w = ala2.., aku, ai E E fiir i = 1, 2 , . . . , k und 3rl, r 2 , . . . , rk-1 E Q, 8o dass (q, w) - ~ (fl, a2... aku) ~ (r2, a 3 . . . aku) ~ ... (f k_l, aku) ~
(p, u).
Wit definieren 5 " Q x E* ~ Q dutch:
(i) (ii)
3(q, A) - q fa~ ~zz~ q e Q ~ d 3(q, ~a) - 5(~(q, ~), a) fa~ ~ZZ~a e ~, ~ ~ ~*, q e Q.
Die Bedeutung von (q, w ) ~ (p, u)ist, dasses eine Berechnung von M gibt, die ausgehend yon der Konfiguration (q, w) zu der Konfiguration (p, u) ffihrt. Die Aussage 3(q, w) - p bedeutet, dass, wenn M im Zustand q das Wort w zu lesen beginnt, dann endet M im Zustand p (also (q, w ) ~ (p, ~)). Daher kOnnen wir schreiben: L(~)
{w E ~* ] (qo, w ) ~
(p, A) mit p E F}
{w E ~*]5(qo, w) E F}. Betrachten wir jetzt den EA M aus Fig. 3.3. Versuchen wir, die Sprache L ( M ) zu bestimmen. Wir k6nnen leicht beobachten, dass fiir W6rter, die gerade [~g~r~d~] A ~ h l
vo~ E i ~ ~
h ~ b ~ , ~ di~ B ~ r ~ c h ~ g
i~ q0 odor q~ [q, odor
qa] beendet. Wenn die Anzahl der Nullen in einem x E E* gerade [ungerade] ist, dann 5(qo, z) E {q0, ql} [(~(q0,z) E {q2, qa}]. Diese Beobachtung ffihrt zu folgender Behauptung.
L e m m a 3.1.
L(M) = {w E {0, 1}* I Iwlo + IWll ~ 0 (1TIOd2)}.
3.2 Die Darstellungen der endlichen Automaten
83
Beweis. Zuerst bemerken wir, dass jeder EA die Menge E* in IQI Klassen K l [ p ] - {w E E*lS(qo, w ) - p } -
{w E E*l(qo, w ) ~
(p, A)},
aufteilt, und es ist klar, dass [.Jp~# Kl[p] - E* und Kl[p] 7/Kl[q] - 0 fiir alle p, q E Q, p -r q. In dieser Terminologie gilt
- [_j Kl[p]. pEF
Anders ausgedrfickt ist die Relation definiert durch
eine fi,quivalenzrealtion auf E*, die die endlich vielen Klassen Kl[p] bestimmt (Fig. 3.4). :r
Fig. 3.4 Daher ist ein sicherer Weg, L(M) zu bestimmen, die Bestimmung von Kl[qo], Kl[ql], Kl[q2] lind Kl[q3] l l n s e r e s EA M. Zu dieser Bestimmung stellen wir die folgende Induktionsannahme auf:
Kl[qo] Kl[ql] Kl[q ] Kl[q ]
= = = =
{w E {0, {w E {0, {w ~ {o, {w e {0,
1}* 1}* 1}* 1}*
I IWlo und IWll sind gerade}, I IWlo ist gerade, IWll ist ungerade}, I Iwlo ist ungerade, IWll ist gerade} und I IWlo und IWll sind unger~de}.
3 Endliche Automaten
84
Weil Kl[qo] U Kl[qa] - {w E {0, 1}* I lWlo +
IWll -
0 (rood 2)},
ist die Behauptung yon L e m m a 3.1 eine direkte Folge unserer Induktionsannahme. Um den Beweis von L e m m a 3.1 zu vervollstS~ndigen, reicht es also, die Induktionsannahme zu beweisen. Wir zeigen dies durch Induktion beziiglich der Eingabelgnge. 1. I n d u k t i o n s a n f a n g .
Wir beweisen die Induktionsannahme f/Jr alle W6rter der LS~nge kleiner gleich zwei. 5(qo, )~) -- qo und daher ist A E Kl[qo]. (~(qo, 1) - qx und daher ist 1 E Kl[qx]. 5(qo, 0) - q2 und daher ist 0 E Kl[q2]. (qo, 00) ~ (q~, 0) (qo, A) und daher ist 00 E Kl[qo]. (q3, A) und daher ist 01 E Kl[q3]. (qo, 01) M~--(q2, 1) (q3,),) und daher ist 10 E Kl[q3]. (qo, 10) ~ (ql, 0) (qo, ~)und daher ist 11 E Kl[qo]. (q0,11) M~--(ql,1) Daher gilt die Induktionsannahme fiir die W6rter der Ltinge 0, 1 und 2. 2. I n d u k t i o n s s c h r i t t .
Wir setzen voraus, dass die Induktionsannahme fiir alle x E {0, 1}*, I~1 _ i, gilt. Wir wollen beweisen, dass sie auch fiir W6rter der Lgnge i + 1 gilt. Den Induktionsschritt beweisen wir fiir alle i _> 2, daher gilt die Induktionsannahme ftir alle WSrter aus (Ebool)*. Sei w ein beliebiges Wort a u s (}-]%ool)i+1. Dann ist w -- z a , wobei z E E i und a E E. Wir unterscheiden vier M6glichkeiten beztiglich der ParitS~ten yon Iz o und ]Z]I. (a) Seien beide I~1o und ]Z]l gerade. Weil die Induktionsannahme 3(qo, z) - qo f/Jr z impliziert (daher ist z E Kl[qo]), erhalten wir
~(qo, za) -- (~(~(qo, z), a) -- (~(qo, a) -- ~ ql, •
falls a - -
1,
[ q2, falls a -- 0.
Weil Izllo gerade ist und Izlll ungerade ist, entspricht (~(qo, zl) - ql der Induktionsannahme zl E Kl[ql]. Weil Iz0o ungerade ist und Iz0ll gerade ist, stimmt das Resultat (~(qo, z0) - q2 mit der Induktionsannahme z0 E Kl[q2] iiberein.
3.2 Die Darstellungen der endlichen Automaten
(b)
85
Seien beide I~10 und IZll ungerade. Weil 5(q0, z) - qa (daher ist z E Kl[qa]) beziiglich der I n d u k t i o n s a n n a h m e fiir z, erhalten wir
5(qo, za) -- 5(5(qo, z), a) - 5(q3, a) -- { q2, falls a -- 1, Ind. ,, ql, falls a 0. Dies entspricht der I n d u k t i o n s a n n a h m e , dass z0 E Kl[ql] und z l E Kl[q2]. -
Die FS~lle (c) und (d) sind analog und wir iiberlassen diese dem Leser als Ubung.
Aufgabe 3.1. Vervollst~ndigen Die den Beweis der Induktionsannahme aus Lemma 3.1 (Fttlle (c)und (d)). Aufgabe 3.2. Sei L = {w E (Ebool)* ]]W]o ist ungerade}. Entwerfen Die einen EA M mit L(M) = L und beweisen Die L(M) = L. Aufgabe 3.3. Entwerfen Die endliche Automaten fiir die Sprachen 0, E* und E + fiir ein beliebiges Alphabet E. Geben Die die formale Darstellung der Automaten als Quintupel, sowie die graphische Darstellung an. Wenn ein EA A geniigend anschaulich und s t r u k t u r i e r t dargestellt wird, kann m a n die Sprache L ( A ) auch ohne eine Beweisfiihrung b e s t i m m e n . In den meisten FS~llen verzichtet m a n also auf einen formalen Beweis, wie er in L e m m a 3.1 gef/ihrt wurde. 5 Aus L e m m a 3.1 h a b e n wir aber etwas Wichtiges f/Jr den E n t w u r f eines EA gelernt. Eine gute Entwurfsstrategie ist es, die Menge aller W 6 r t e r aus E* in Teilklassen von W 6 r t e r n mit gewissen Eigenschaften zu zerlegen und ,,UbergS~nge" zwischen diesen Klassen beziiglich der K o n k a t e n a tion eines Symbols aus E zu definieren. B e t r a c h t e n wir diese Strategie fiir den E n t w u r f eines EA fiir die Sprache
U = {W E (}-]bool)* I IWl0 = 3 und (IWll ~ 2 oder IWll = 0)}. U m IWlo = 3 verifizieren zu k6nnen, muss jeder EA t3 mit L ( B ) = U fiir die a n z a h l der bisher gelesenen Nullen die Falle IWlo = 0, Iwl0 = 1, IWlo = 2, I 10 - 3 und I 10 _ 4 unterscheiden k6nnen. Gleichzeitig muss B auch die Anzahl der bisher gelesenen Einsen z~thlen, u m mindestens die F~tlle Iwll = 0, I 11 - 1 und I~11 - 2 unterscheiden zu k6nnen. D a r a u s resultiert die Idee, die Zustandsmenge
Q =
I i e {0,1, 2, 3, 4},j e {0, 1,2}}
5Man bemerke, dass dies der Situation entspricht, in der man gewShnlicherweise des Aufwandes wegen auf den formalen Beweis der Korrektheit eines entworfenen Programms verzichtet.
3 Endliche Automaten
86 zu w~hlen. Die Bedeutung sollte folgende sein" Ftir alle j E {0, 1} und alle i E {0, 1,2, 3} Kl[qi,j]- {w E (}-~%ool)* I I w I 0 - i llild I w l l - j}. F iir alle i E {0, 1, 2, 3} Kl[qi,2]- {w E (Y]bool)* I w I 0 - i lind IWll ~ 2} F i i r j e {0,1} Kl[q4,j]- {w E (Ebool)* I Iw]0 > 4 und I w I 1 - j}. Kl[q4,2]- {w E (Ebool)* I wI0_> 4 u n d
wI1 > 2}.
Es ist Mar, dass q0,o der Anfangszustand ist. Die Ubergangsfunktion von B kann man direkt aus der Bedeutung der Zustgnde qi,j bestimmen, wie in Fig. 3.5 gezeigt. Wir bemerken, dass U - Kl[qa,o] U Kl[qa,2] und setzen daher F - {q3,0, q3,2}. qo,o
0
__
ql,o
0
..a"-h 1
q2,o ~
1
~ 1
q0,1 0 - - --
ql,1 0
1
9
q2,1 0
q1'2 0 1
0
0 1
1 ~
q3,1 0
q4, ~
0
1
220 1
q4,o
_)) 1
1
qO'2 0
q3,o >
0
3,2 0 1
q4,5 0,1
Fig. 3.5 Aufgabe 3.4. (a) Beweisen Sie L ( B ) - U fiir den EA B aus Fig. 3.5. (b) Entwerfen Sie einen EA A mit L ( A ) - U, so dass A weniger Zustgnde als B hat, und geben Sie zu jedem Zustand q dieses Automaten die Klasse Kl[q] an.
3.2 Die Darstellungen der endlichen Automaten
87
Die Methode zum Automatenentwurf, die auf der B e s t i m m u n g der Bedeutung der Zust~nde basiert, ist die grundlegendste Entwurfsstrategie f~r endliche A u t o m a t e n . Deswegen prS~sentieren wir noch zwei anschauliche Anwendungen dieser Methode. B e i s p i e l 3.1. Unsere nS~chste Aufgabe ist einen EA ftir die Sprache L(0010) = { x 0 0 1 0 y l x ,y C {0, 1}*} zu entwerfen. Hier ist der Entwurf ein bischen schwerer als bei einer Sprache, wo alle W b r t e r mit 0010 anfangen miissen. Wir brauchen festzustellen, ob 0010 irgendwo in dem Eingabewort liegt. Die erste Idee ist so zu sagen, dass jeder EA sich vormerken muss, wie langen PrS~fix von 0010 er gerade in den zuletzt gelesenen Buchstaben gefunden hat. Zum Beispiel, wenn das bisher gelesene Wort 011001 war, dann muss er sich merken, dass er schon 001 als K a n d i d a t e n gefunden hat und wenn jetzt das nS~chste Symbol 0 ist, dann muss er akzeptieren. Wenn der EA den PrS~fix 1100 einer Eingabe gelesen hat, muss er sich vormerken, dass die letzten zwei Symbole 00 passend waren 6. Damit ergeben sich 5 mSgliche Zust~nde entsprechend der 5 Pr~fixen von 0010. Wir ziehen jetzt vor, deren Bedeutung anschaulich halb formal statt genau formal zu beschreiben. Kl[p0] Kl[pl]
K][p2] KI[p3] KI[p4]
kein PrS~fix yon 0010 ist ein nicht leeres Suffix yon dem bisher gelesenen Wort x(z.B, x = A oder x endet mit 11). die W 6 r t e r enden mit 0 und enthalten keinen 15ngeren PrS~fix von 0010 als ein Suffix (z.B. sie enden mit 110). die W 6 r t e r enden mit 00 und enthalten keinen 15~ngeren Prefix von 0010 als ihr Suffix. die W 6 r t e r enden mit 001. die W 6 r t e r enden mit 0010 oder beinhalten 0010 als Teilwort.
Dieses Konzept ergibt uns direkt die folgende Teilstruktur (Fig. 3.6) des zu konstruierenden EA. Dass die Folge 0010 gelesen werden muss um den einzigen akzeptierenden Zustand p4 zu erreichen, ist offensichtlich. Wenn m a n P4 erreicht hat, hat der EA 6Im Prizip reicht es die Zahl 2 zu speichern, weil das Wort 0010 bekannt ist undes ist klar, dass 00 der PrS~fix der L~nge 2 ist.
3 Endliche Automaten
88 1
0,1
0
,@
0
,@
1
,@
0
,~
Fig. 3.6 schon 0010 in der Eingabe gefunden und so bleiben wir in dem akzeptierenden Zustand (5(q4, 0) = 5(q4, 1) = q4), egal was noch kommt. Das Lesen einer Eins in q0 5~ndert gar nichts darauf, dass wir noch keinen PrS~fix yon 0010 in den letzten Buchstaben gesehen haben. Um den EA zu vervollstgndigen, fehlen uns drei Pfeile aus den ZustS~nden pl, p2 und Pa fiir das Lesen yon 1 aus Pl und Pa und das Lesen von 0 aus P2. Es gibt nur eine eindeutige M6glichkeit es korrekt zu machen (urn L(0010) zu erkennen) und die ist in Fig. 3.7 gezeichnet. 1
0
0,1
1 Fig. 3.7 Wenn wir 1 in pl lesen, miissen wir unsere Suche nach 0010 neu anfangen, weil 0 der l~tngste Suffix des gelesenen Wortes ist den einen Pr~tfix von 0010 entspricht und somit eine Eins am Ende bedeutet, dass wir keinen Prefix von 0010 aktuell haben. Damit ist ~(pl, 1) =P0. Wenn man aber in p2 eine 0 liest, gndert sich nichts an der Tatsache, dass 00 der Suffix des gerade gelesenen Wortes ist und somit bleiben wir in p2, also 6 (p2, o) = p2.
Wenn in p3 eine 1 kommt, endet das gelesene Wort mit zwei Einsen 11 und somit kann d~s Wort am Ende keinen nichleeren Suffix yon 0010 enthalten.
3.2 Die Darstellungen der endlichen Automaten
89
Der einzige m6gliche Schluss ist (p2, 1) = P0. Damit ist der EA vervollstS~ndigt. D Aufgabe 3.5. Geben Sie eine genaue formale Beschreibung der Klassen der ZustSmde des EA in Fig. 3.7. In dem Beispiel 3.1 haben wir einen EA in Fig. 3.7 entworfen, der genau die W6rter akzeptiert, die das Wort 0010 als Teilwort enthalten. Der anstrengenste Teil des Entwurfes bestand in der Bestimmung der Kanten (Transitionen), wenn die Suche nach 0010 wegen einer Unstimmigkeit unterbrochen wurde. Dann musste man entscheiden, ob man die Suche von neu anfangen soll oder ob der zuletzt gelesene Suffix noch ein kiirzeres PrS~fix yon 0010 enthS~lt und die weitere Suche mtisste dann von entsprechender Stelle fortgesetzt werden. Dass man da wirklich aufpassen muss, zeigt die Schwierigkeit der Klassenbeschreibung in Aufgabe 3.5. Man kann das Risiko in diesem Entwurfsprozess vermeiden, in dem man sich entscheidet, einfach mehr Informationen fiber das gelesene Wort zu speichern. Eine Idee wS~re, durch den Namen eines Zustandes die komplete Suffixe der LS~nge 4 zu speichern. Zum Beispiel, ein Zustand q0110 sollte alle W6rter enthalten, die mit 0110 enden. In dem Augenblick ist alles iibersichtlich und die Beschreibung der Zustandsklassen einfach, aber wir bezahlen diese Transparenz mit der Automatengr6i3e. Wit haben 2 4 = 16 ZustSmde um alle Suffixe der LS~nge 4 fiber {0, 1} zu speichern. Das ist noch nicht alles. Es gibt auch k/irzere W6rter, die nattirlich keinen PrS~fix der LS~nge 4 enthalten. Alle W6rter kiirzer als 4 brauchen dann eigene Zustgnde, was ergibt 23 + 22 +
21
-~- 1 = 15
weitere Zust/~nde. Weil einem EA mit 16 + 15 = 31 Zust/~nden zu zeichnen zu viel Arbeit ergibt, stellen wir eine Anwendung dieser Idee fiir die Suche nach einem kiirzeren Teilwort vor. B e i s p i e l 3.2. Betrachten wir die Sprache L = { z 1 1 0 y l z , y E {0, 1}*}. Wie oben angedeutet, fiihren wir die Zust/fnde p~b~ ein, wobei in Pabc die W6rter landen, die mit dem Suffix abc fiir a, b, c E {0, 1} enden. Dies ist noch nicht ganz
3 Endliche Automaten
90
genau, weil f/Jr abc ~ 110 nehmen wir ein Wort mit Suffix abc in Klasse[p~b~] nur dann, wenn das Wort das Teilwort 110 nicht enthglt (in einem solchen Fall m~sste aber die Akzeptanz eines solchen Wortes lgngst entschieden werden). Wir beschreiben jetzt genau die Bedeutung aller Zust/~nde:
Kl[pllO] = L KI[Pooo] = Kl[Pool] = Kl[Polo] =
Kl[PlOO] = Kl[Po11] = Kl[PlOl] = Kl[p111] =
enth~ilt das Teilwort 110}, ={zE{0,1}*Iz {z000 z C { 0 , 1 } * und z000 enthtilt das Teilwort 1 10 nicht }, {x001 x e {0, 1}* und z001 enthtilt das Teilwort 1 10 nicht }, {z010 z ~ {0, 1}* und z010 enth~lt das Teilwort 1 10 nicht }, {xl00 x e {0, 1}* und zl00 enthtilt das Teilwort 1 10 nicht }, { z o l l z ~ {o, 1}* und z011 enth~lt das Teilwort 1 10 nicht }, { z l o l z ~ {o, 1}* und z 101 enth~lt das Teilwort 1 10 nicht }, {z111 z E {0, 1}* und z 111 enth/~lt das Teilwort 1 11 nicht }.
Dann brauchen wir die ZustS~nde P~, P0, P l , P00, P01, P l 0
und
Pll
fiir kiirzere W6rter, daher Kl[pa] = {At, Kl[po] = {0}, Kl[pl] = {1}, Kl[Poo] = {00}, Kl[Pol] = {01}, Kl[plo] = {10} und Kl[p11] = {11}. Der Startzustand ist offensichtlich der Zustand p~ und p11o ist der einzige akzeptierende Zustand. Der resultierende EA ist in Fig. 3.8 gezeichnet. Die Verzweigungsstruktur (Baumstruktur in der Informatik genannt) oben gibt jedem Wort der L/~nge k/irzer gleich 3 einen anderen Zustand. Alle anderen Kanten (Transitionen) fiihren zu den untersten Zust/~nden p~b~. Zum Beispiel, wenn ein Wort z001 um eine Null zum z0010 verlS~ngert wird, dann muss man aus pool in polo iibergehen (d.h. 6(pool, 0) = poxo).
3.2 Die Darstellungen der endlichen Automaten
O/
0/~1
OI
91
\1
O/
0/~1
(Poook---z---~Pool)-- z-------~Polo)
10/~1
(POll)
(Ploo)
\1
0/~1
(PlOl)
((Pllo)~P111)
)1
1,0
Fig. 3.8
Deswegen sind die Kanten immer so gelegt, dass durch das Lesen eines weiteren Symbols immer der dem neuen Suffix der Lgnge 3 entsprechende Zustand erreicht wird. Die einzige Ausnahme ist der Zustand p110. Da bleiben wir, unabhgngig davon, welche Symbole noch gelesen werden, weil wir schon das Teilwort 110 in der Eingabe festgestellt haben und alle solche Eingaben akzeptiert werden mtissen. Der Entwurf des EA in Fig. 3.8 riecht auch nach viel Arbeit, aber die k6nnte lohnenswert sein, wenn man auf eine tibersichtliche Weise einen EA f/Jr eine Sprache wie
L
__
{z E {0, 1 } * l z enthglt mindestens eines der W6rter 000, 001 oder 110 als Teilw6rter}.
3 Endliche Automaten
92
entwerfen m6chte. D a reicht es, den E A aus Fig. 3.8 zu n e h m e n , die aus Pooo u n d P011 a u s g e h e n d e K a n t e n d u r c h (~(pooo, 0) = (~(pooo, 1) = pooo u n d (~(P011, 0)
=
(~(P011, 1) = P011
zu ersetzen u n d F = {Pooo, Po11, P11o} zu w~thlen. D A u f g a b e 3.6. Modifiziere den Automaten aus Fig. 3.8, um folgende Sprachen zu akzeptieren: (a) {xyz C {0, 1}* l y c {OOl, OlO, lOO}, x, z c {o, 1}*}, (b)* {xyz 6 {o, 1}* l y 6 {Ol, lOO, l l l } , x , z 6 {o, 1}*}, (c) {x011 I x c {0, 1}*}, (d) {xz c {0,1}* I x c {0, 1}*,z c {001,010,100}}. A u f g a b e 3.7. Entwerfe EA fiir folgende Sprachen:
(~) (b) (~) (d) (+) (f)
(g) (h)*
(i) (J) (k) (1)
y C {0, 1,2}*}, {zll0110y I z,y E {0,1,2}*}, {x010101y I x, y C {0, 1}*}, {xOy l x, y C {0, 1}*}, {z0ylz I x,y,~ 9 {0, 1}*}, {zE{O, 1}* l lzlo _> 3}, { x c {0,1}'13 _< Ixl~ _ 5}, {zOOlylOlz I z, y , z E {0,1}*}, {xOOlll x c {0,1}*}, {zlO011 1z c {0,1}*}, {lzllO01l z c {0,1}*}, {xllOOlyO I x, y ~ {0,1}*}. {zllllylz,
A u f g a b e 3.8. Wende die Entwurfsstrategie aus Fig. 3.8 an, um einen EA fiir folgende Sprachen zu entwerfen: (a) {x c {0, 1}*Ix enthSJt 11 als Teilwort oder endet mit dem Suffix 10}, (b) {A,0, ll,z000 I z C {0, 1}*}, (c) {z C {0, 1}*Ix enthalt 00 oder 11 als Teilw6rter}. Bestimme die entsprechenden Zustandsklassen ftir alle entworfenen Automaten. A u f g a b e 3.9. Entwerfen Sie fiir jede der folgenden Sprachen einen EA: (a) {w c {0, 1,2}*lw = 002122x, x c (Ebool)*}, (b) {w E {a, b, c}* I w = yabcabc, y E {a, b, c}*},
3.3 Simulationen (c) (d) (e) (f) (g) (h)
93
{w C {a,b,c}* l w : xaabby, x,y c {a,b,c}*, {w E {0,1}* I Iwl0 - 1 (rood3) und w=x111yfflr x,y E {0,1}*}, {abbxb3y ] x,y 9 {a,b}*}, {w 9 {a,b}*]w : abbz fiir ein z 9 {a,b}* und w : ub3v mit u,v 9 {a,b}*}. {xy 9 {0, 1}* I YY 9 {000,010,100,101}}, und {xyz 9 {0, 1}* l YY 9 {001,010,101,110}}.
Die graphische Darstellung der Automaten ist zur L6sung der Aufgabe ausreichend. Geben Sie dazu zu jedem Zustand q dieser Automaten die Klasse Kl[q] an.
3.3
Simulationen
Die Simulation ist einer der meist benutzten Begriffe der Informatik. Trotzdem wurde dieser Begriff nie durch eine formale Definition festgelegt. Der Grund dafiir ist, dass m a n in unterschiedlichen Bereichen den Begriff der Simulation unterschiedlich auslegt. Die engste Interpretation dieses Begriffes fordert, dass jeder elementare Schritt der simulierten Berechnung durch einen Schritt der simulierenden Berechnung nachgemacht wird. Eine etwas schwS~chere Forderung ist, dass man einen Schritt der simulierten Berechnung durch mehrere Schritte simulieren daft. Eine noch schwgchere Form verzichtet auf die Simulation einzelner Schritte und fordert nur, dass m a n gewisse wichtige Teile der Berechnung nachahmt. Die allgemeinste Definition fordert nur das gleiche Eingabe-Ausgabe-Verhalten und verzichtet vollstSmdig auf die Simulation der Wege, die von den Eingaben zur entsprechenden Ausgabe fiihren. In diesem Teilkapitel zeigen wir eine Simulation im engen Sinne. Wir zeigen, wie m a n die Berechnung von zwei endlichen A u t o m a t e n mit einem EA simultan Schritt fiir Schritt nachahmen kann. L e m m a 3.2. Sei E ein Alphabet und seien M~ = (Q~ E, 6~ qo~ F~) und M2 = (Q2, E, 62, qo2, F2) zwei EA. Fiir jede Mengenoperation <9 E {U, A , - } existiert ein EA M , so dass =
Beweis. Die Idee des Beweises ist, den EA M so zu konstruieren, dass M gleichzeitig die Arbeit von beiden A u t o m a t e n M, und M2 simulieren kann. r Die Idee der Simulation ist einfach. Die Zustgnde von M werden Paare (q, p), 7Im Prinzip hat M auch keine andere M6glichkeit, weil die M6glichkeit, zuerst M1 und dann M2 zu simulieren, nicht besteht (die Eingabe steht nur einmal zum Lesen zur Verfiigung).
3 Endliche Automaten
94
~1 ixllx21
ix~l
~
ixlx21
t ~
ixllx21
x~l
t Ix~l
I
t
(q,p) Fig. 3.9 wobei q ein Zustand yon 3/1 und p ein Zustand yon 3/2 ist. Das erste Element yon (q,p) soll q sein genau dann, wenn sich M1 auch gerade im Zustand q befindet. Analog soll das zweite Element des Zustandes yon M p sein genau dann, wenn M2 sich im Zustand p befindet (Fig. 3.9).
Den formalen Beweis fiihren wir in zwei Schritten durch. Zuerst geben wir eine formale Konstruktion des EA M und beweisen dann, dass M beide EA M1 und M2 simuliert. Die Konstruktion yon M.
Sei M = (Q, E, ~, qo, FG), wobei
(i)
(~ = (~1 X 02~
(ii) qo = (qol, qo2), (iii) (iv) f a l l s G = U , d a n n i s t F = F l • xF2 {Mindestens einer yon M1 und M2 endet in einem akzeptierenden Zustand.}, falls Q = D, dann ist F = F1 • F2 {Beide M1 und M2 miissen akzeptieren.}, und falls (D = - , dann ist F = F1 • ( Q 2 - F2) {M1 muss akzeptieren und M2 darf nicht akzeptieren.}. Beweis der Behauptung L ( M ) - L(MI) Q L(M2).
Um die Behauptung flit jedes Q E {U, D, - } zu beweisen, reicht es, die folgende
3.3 Simulationen
95
Gleichheit zu zeigen:
~((qol,qo2),x)- (~l(qol,x),~2(qo2, X)) fiir alle x E E*.
(a~)
Wir beweisen (3.1) durch Induktion beziiglich Ixl.
1. Induktionsanfang. Falls x = A, ist (3.1) offenbar erfiillt.
2. Induktionsschritt. Wir beweisen fiir jedes i E IN, dass, wenn (3.1) erfiillt ist fiir jedes x E E* mit Ixl _< i, dann ist (3.1) erfiillt ftir jedes w E E ~+1. Sei w ein beliebiges Wort aus E i+1. Dann ist w = za ftir irgendwelche z E E i und a E E. Aus der Definition der Funktion ~ erhalten wir
3((qol, qo~), ~) (3.1) Def.5
3((qo,, qo~), ~a) a(3((qo,, vow),~), a) (5(((~1(qol, z), (~2(qo2, z)), a) (~1 (a,(q0,, ~), a), a~(3~(q0~, ~), a))
((~1(q101, za), (~2(q202, za)) ((~1(q101, w), ~2(q202, w)). A u f g a b e 3.10. Sei L C_ E* eine regulgre Sprache. Beweisen Sie, dass auch L C - E* - L
eine regulgre Sprache ist. Die vorgestellte Simulation bietet uns eine modulare Technik zum Entwurf von endlichen A u t o m a t e n . Dieser strukturierte Ansatz ist besonders fiir grSftere und komplexere A u t o m a t e n geeignet, weil er nicht nur den Entwurfsprozess veranschaulicht, sondern auch die Verifikation des entworfenen A u t o m a t e n veteinfacht. Die Idee der modularen Entwurfsstrategie ist, zuerst einfache Autom a t e n fiir einfache Sprachen zu bauen und dann aus diesen ,,Bausteinen" den gesuchten EA zusammenbauen. Wir illustrieren diese Entwurfsmethode durch das folgende Beispiel. B e i s p i e l 3.3. Seien L1 {0, 1}* I IXll -- 0 oder Xll M1 und M2 mit L(M1) Abbildung 3.11 dargestellt
{x E {0, 1}*I xlo ist gerade}, und L2 - {x E ~ 3}. Wir bauen zuerst zwei endliche A u t o m a t e n L1 und L(M2) - L2, die in Abbildung 3.10 und sind.
3 Endliche Automaten
96
1
Fig. 3.10 -/1//1
0
0
0
0,1
Fig. 3.11 M2 Wie unsere Idee besagt, hat M die Zustandsmenge
{(q0,P0), (q0,Pl), (q0,P2), (q0,P3), (ql,P0), (ql,Pl), (ql,P2), (ql,P3)}" Um M iibersichtlich zu zeichnen, legen wir die Zustgnde von M matrixartig auf ein Blatt Papier (Abbildung 3.12). Die erste Zeile beinhaltet Zustgnde mit der ersten Komponente qo und die zweite Zeile Zustgnde mit q~ als erste Komponente. Die i-te SpaRe fiir i = 0, 1, 2, 3 beinhaltet die Zustgnde mit der zweiten Komponente p~. Jetzt muss man anhand von M1 und M2 die Kanten ({Jberg/~nge) bestimmen. Zum Beispiel geht M1 aus q0 bei 0 in ql fiber und M2 bleibt beim Lesen von 0 in P0. Deswegen geht M aus (q0, P0) beim Lesen yon 0 in (ql, P0) fiber. Nachdem auf diese Weise alle Kanten bezeichnet worden sind, beobachten wir in Abbildung 3.12, dass wir in den Spalten die Anzahl der Nullen modulo 2 rechnen und in den Zeilen die Anzahl Einsen von 0 bis 3 z~hlen. Also bedeutet der Zustand (q~,pj) fiir i E {0, 1},j E {0, 1,2,3}, dass der bisher gelesene PrS~fix z genau j Einsen beinhaltet (wenn j = 3 mindestens 3 Einsen) und IZlo rood 2 = i. Damit sind alle fiir uns wichtigen Merkmale der gelesenen W6rter in M beobachtet (gespeichert).
3.3 Simulationen
97
) 70,po
o/
1 0
~1,
~ ) " ]o, pl 0(
1
o(
0
1 "( 11,
1
"
o
)rl~
1
Fig. 3.12 M Welche sind die akzeptierenden Zust/tnde? Das h~ngt davon ab, was fiir eine Sprache wir akzeptieren wollen. Wenn wir zum Beispiel die Sprache
L1 K/L2 = L(M1) N L(M2) akzeptieren wollen, dann mfissen wir genau dann akzeptieren wenn beide M1 und 3/2 akzeptieren. Das bedeutet: die akzeptierenden Zustgnde von M sind genau die Zustgnde, wo beide Komponenten akzeptierende ZustS~nde von M1 und M2 sind. Weil q0 der einzige akzeptierende Zustand von M1 ist und die akzeptierenden ZustS~nde von 3/2 die ZustS~nde P0 und P3 sind, sind die akzeptierenden ZustS~nde von M die ZustS~nde (qo,po)
und (qo,Pa).
Wenn M die Sprache
L1 U L2 = L(M1)U L(M2) akzeptieren sollte, dann akzeptiert M genau dann, wenn mindestens einer der endlichen Automaten M1 und M2 akzeptiert.
3 Endliche Automaten
98
Das bedeutet: die akzeptierenden ZustSonde yon M sind genau die ZustS~nde wo mindestens eine K o m p o n e n t e einem akzeptierenden Zustand von/1/1 oder M2 entspricht. Somit sind die akzeptierenden ZustS~nde fiir L1 U L2 die folgenden ZustS~nde:
(q0, P0), (q0, Pl), (q0, P2), (q0, P3), (ql, P0), (q0, P3)" D A u f g a b e 3.11. Betrachten Sie M aus Beispiel 3.3. Bestimmen Sie die Menge der akzeptierenden Zust~nde wenn M die folgenden Sprachen akzeptieren soll.
I!} L(M1)-L(M2)-{xC{O'I}* u n d x ~ L ( M 2 ) } L ( M 2 ) - L ( M 1 )xCL(M1) {0, 1}* - (L(M1) N L(M2 l~} {O'I}*-(L(MI UL(M21 ({0, 1]* - L(M1 ) U L ( M ({0, 1}* - L(M2 ) n L(M . A u f g a b e 3.12. Nutzen Sie die Methode des modularen Entwurfs um folgende endlichen Automaten fiir folgende Sprachen zu bauen: xC
~ i} 0,
x c 0, (d)
x c
*
0, I}!
mod2=lund
mod
1_< x 1_<3}
l0 mod 3 c {0, 1} und @xll + x 9) mod 2 = 0}
ist gerade und x enthalt ([as TeiIwort 0101} x 0 mod3-2} x c 0, a,b}* x enth~tlt das Teilwort l l l o d e r . x enthgolt das Teilwort aba} (g) {x c {0, 1}*Ix beginnt mit dem Prafix 011 und x enth~tlt 100 als Teilwort} (h) {x c {0,1}* Ix enthalt entweder 0101 als Teilwort oder endet mit dem Suffix 111} x E } 0 : ~,~21" j x o i s t g e r a d e A x 1 istungerade A X l l + x 2_>2} /J/ } x E x enth~tlt mindestens eins der folgenden Teilw6rter: 0011,110}
}efl x E O,
x - yOOzllv fiir y, z, v E {O, 1}* und
A u f g a b e 3.13. Betrachten Sie die folgenden Sprachen:
L1 L2
= =
L3 =
{x E {0, 1, 2}* {x c {0, 1,2}*
I IXlo ist I Ixll ist
gerade}, ungerade},
{x E {0, 1, 2}* I Ixl2 ist gerade}.
Bauen Sie drei endliche Automaten M1, M2 und M3, so dass L(M1) = L1, L(M2) = L2 und L(M3) = L3. K6nnen Sie jetzt mit der modularen Entwurfstechnik einen EA M konstruieren, so dass
L(M)
= (L1 n L2)U L3 ?
3.4 Beweise der Nichtexistenz
3.4
99
Beweise der Nichtexistenz
Um zu zeigen, dass eine Sprache L nicht regular ist (L ~ 12(EA)), geniigt es zu beweisen, dass es keinen EA gibt, der die Sprache akzeptiert. Im Allgemeihen zu zeigen, dass yon einer gewissen Klasse yon Programmen (Algorithmen) eine konkrete Aufgabe nicht 15sbar ist (kein Programm aus der Klasse 15st die Aufgabe), gehSrt zu den schwersten Problemstellungen in der Informatik. Beweise solcher Aussagen nennen wir Beweise der Nichtexistenz. Im Unterschied zu konstruktiven Beweisen, bei denen man die Existenz eines Objektes mit gewissen Eigenschaften direkt durch eine Konstruktion eines solchen Objektes beweist (z.B. wir konstruieren einen EA M mit vier Zustgnden, der eine gegebene Sprache akzeptiert), kann man bei den Beweisen der Nichtexistenz mit einer unendlichen Menge yon Kandidaten (z.B. allen endlichen Automaten) nicht so vorgehen, dass man alle Kandidaten einen nach dem anderen betrachtet und iiberpriift, dass keiner die gewiinschten Eigenschaften hat. Um die Nichtexistenz eines Objektes mit gegebenen Eigenschaften in einer unendlichen Klasse von Kandidaten zu beweisen, muss man f~r gewShnlich eine tiefgreifende Kenntnis fiber diese Klasse haben, die im Widerspruch zu den
gewiinschten Eigenschaften steht. Weil die Klasse der endlichen Automaten eine Klasse yon sehr stark eingeschrS~nkten Programmen ist, sind die Beweise der Nichtexistenz der Art ,,es gibt keinen EA, der die gegebene Sprache L akzeptiert" relativ leicht. Wir nutzen dies hier, um eine einfache Einfiihrung in die Methodik der Herstellung yon Beweisen der Nichtexistenz zu geben. Wir wissen, dass endliche Automaten keine andere Speicherm6glichkeit als den aktuellen Zustand (Nummer der aufgerufenen Programmzeile) besitzen. Das bedeutet ftir einen EA A, der nach dem Lesen zweier unterschiedlicher WSrter x und y im gleichen Zustand endet (also (~(q0, x) - (~(q0, y)), dass A in Zukunft nicht mehr zwischen x und y unterscheiden kann. Mit anderen Worten bedeutet dies, dass fiir alle z E E* gilt, dass
Formulieren wir diese wichtige Eigenschaft im folgenden Lemma. L e m m a 3.3. Sei A = (Q, E, 5A, qo, F) ein EA. Seien x, y E E* , x r dass
(qo,
@ (p, A)
(qo, y)
(p, A)
so
3 Endliche Automaten
100
fiir ein p E Q (also ~A(qo, x) -- ~A(qO, Y) - - P (x, y E Kl[p])). Dann existiert fiir jedes z E E* ein r E Q, so dass x z und yz E Kl[r], also x z E L ( A ) ~ yz E L(A). Beweis.
Aus der Existenz der Berechnungen
yon A folgt die Existenz folgender Berechnung auf x z und yz
(qo, y~) ~ (p, ~) fiir alle z E E*. Wenn r - ~A(P, z) (also wenn (p, z ) ~ (r, A) die Berechnung yon A auf z ausgehend vom Zustand p) ist, dann ist die Berechnung yon A auf xz
(q0, ~) ~ (p, ~) ~ (<, A) und die Berechnung yon A auf y z
(q0, y~)@ (p, ~ ) ~ (~, a). Wenn r E F, dann sind beide WSrter z z und yz in L(A). Falls r r F, dann ist xz, yz ~ L ( A ) . D Lemma 3.3 ist ein Spezialfall einer Eigenschaft, die ftir jedes (deterministische) Rechnermodell gilt. Wenn man einmal in den Berechnungen auf zwei unterschiedlichen Eingaben die gleiche Konfiguration s erreicht, dann ist der weitere Verlauf beider Berechnungen identisch. Im Fall eines Entscheidungsproblems bedeutet dies, dass entweder beide Eingaben akzeptiert werden oder beide verworfen werden. Lemma 3.3 kann man leicht anwenden, um die NichtregularitS~t mehrerer Sprachen zu zeigen. Sei L = {0~1 ~ I n E IN}. Intuitiv sollte L fiir jeden EA deswegen schwer sein, weil man die Anzahl der vorkommenden Nullen speichern sollte, um diese dann mit der Anzahl nachfolgender Einsen vergleichen zu kSnnen. Aber die Anzahl yon Nullen im PrS~fix 0~ kann beliebig grog sein und jeder EA hat eine feste Gr6t3e (Anzahl der Zust~nde). Also kann kein EA die vorkommenden Nullen in jedem Eingabewort zS~hlen und wir SDies gilt nur, wenn man eine Konfiguration als vollst~indige Beschreibung des allgemeinen Zustandes des Rechnermodells (einschliefilich des noch erreichbaren Teils der Eingabe) betrachtet.
3.4 Beweise der Nichtexistenz
101
brauchen nur formal auszudriicken, dass dieses ZS~hlen erforderlich ist, u m L zu akzeptieren. Wir zeigen indirekt, dass L ~ Z;(EA). Sei A = (Q, Ebool, 6A, q0, F ) ein EA mit L ( A ) = L. Man betrachte die W 6 r t e r 01 0 2 0 3 ~
~
9
.
.
~
0 Q +1
Weil die Anzahl dieser W 6 r t e r IQI + 1 ist, existieren i, j E {1, 2 , . . . , IQI + 1}, i < j, so d ass 0
-
Nach L e m m a 3.3 gilt Oiz C L4:=~OJz c L
fiir alle z E (Ebool)*. Dies gilt aber nicht, weil fiir z = 1i das Wort 0il i E L und das Wort 0j i i r L. Aufgabe 3.14. Beweisen Sie mit HiKe von Lemma 3.3, dass die folgenden Sprachen nicht in s sind: (a) (b) (c) (d)
{w C {a,b}*llWla = IWlb}, {a~b~c~ l n , m E IN},
{w E {0, 1,~}*lw = xCpx fiir ein x E {0, 1}*}, { x l y E {0,1}*llx I = lYl}.
Um die Beweise der NichtregularitS~t von konkreten Sprachen anschaulich und einfach zu machen, sucht m a n nach leicht tiberpr/ifbaren Eigenschaften, die jede regulS~re Sprache erfiillen muss. Wenn eine Sprache L eine solche Eigenschaft nicht besitzt, weifi m a n direkt, dass L nicht regulS~r ist. Im Folgenden zeigen wir zwei solcher Methoden zum Beweis yon Aussagen der Form L r s Die erste Methode nennt m a n Pumping. Sie basiert auf folgender Idee. Wenn, ftir ein Wort x und einen Zustand p eines EA A,
dann gilt auch
102
3 Endliche A u t o m a t e n
fiir alle i E IN (Fig. 3.13). Also kann A nicht unterscheiden, wie viele x gelesen worden sind. Daher ist, wenn 5A(qo, Y) -- P f/Jr ein y E E* und 5A (P, z) -- r f/Jr ein z E E* (Fig. 3.13),
(qo, y ~ ) ~-(p, ~ ) @ (p, ~) ~ (a, ~) die Berechnung von A auf yz~z fiir alle i c IN (also {yz~z I i c IN} c_ Kl[r] fiir ein r E Q). Dies bedeutet, dass A entweder alle W S r t e r yz~z fiir i E IN (falls r E F ) akzeptiert, oder dass A kein Wort aus {yz~zli E N} akzeptiert.
qo
P y
t
qo
P x
t p
x
p
p
t
p
r
Fig. 3.13
L e m m a 3.4. Das P u m p i n g - L e m m a ffir regul~ire Sprachen Sei L regular. Dann existiert eine Konstante no E IN, so dass sich jedes Wort w E E* mit ]w] >_ no in drei Teile y, x und z zerlegen liisst, d.h. w - y x z , wobei
(ii)
]yxl < no, Ix[ _> 1, und entweder { y x k z I k E IN} C_ L oder { y x k z I k E IN} A L - O.
Beweis. Sei L C_ E* regulgr. D a n n existiert ein EA A - (Q, E, 5A, qo, F ) , so dass L ( A ) - L. Wir setzen no - IQI. s~i w ~ ~* mit Iwl ___ ~o. D a n n ist w - W l W 2 . . . W ~ o U , wobei w~ E E fiir i - 1 , . . . , no und u E E*. B e t r a c h t e n wir die Berechnung
(qo, ~ ~ ~
~o) @ (q~,~ ~
(q~,~ ~o)~
~o)
~ (q~o ~,~o)~ (q~o,a)
(3.2)
yon A auf W l W 2 . . . Who. In den no + 1 Konfigurationen dieser Berechnung k o m m e n no + 1 Zust~nde qo, ql, q2,...,q~o vor. Weil IQI - no, existieren
3.4 Beweise der Nichtexistenz
103
i, j E {0, 1 , . . . , no}, i < j, so dass qi = qj. Daher l~tsst sich (3.2) als
(qo, ~ . . . ~o) G- (q~,~+~... ~o) G- (q~,~J+~... ~o) G- (q~o,a)
(3.3)
darstellen. Wir setzen jetzt y ~ Wl...
Wi~ X ~ W i + l . . .
Wj u n d z
=
Wj+l...
WnoU.
Es ist klar, dass w = yxz. Wir iiberpriifen die Eigenschaften (i), (ii) und (iii). (i) y x = W l . . . W i W i + l . . . Wj und daher lyxl = j G no. (ii) W e i l i < j u n d Ixl = j - i , i s t x - C A (Ixl_> 1). (iii) Wenn man die Notation y und x statt W l . . . wi und Wi+l... wj in (3.3) verwendet, sieht die Berechnung von A auf yx wie folgt aus:
(qo, y~)G-(q~, ~)G-(q~, ~).
(3.4)
Die Berechnung (3.3) impliziert
(q~,~) G- (q~,~) fiir alle k E IN. Dann ist ftir alle k E IN
die Berechnung yon A auf yx~z. Wir sehen, dass fiir alle k E IN, die Berechnungen im gleichen Zustand 5a(q~, z) enden. Falls also 5A(q~, z) E F, dann akzeptiert A alle W6rter aus {yx~z ] k E IN}. Falls 5A(q~, z) ~ F, dann akzeptiert A kein Wort aus { y x k z l k E IN}.
Wie wendet man Lemma 3.4 an, um zu zeigen, dass eine Sprache nicht regulSx ist? Fiihren wir dies wieder am Beispiel der Sprache L = {0~1~ I n E IN} vor. Wir fiihren den Beweis indirekt. Sei L regul~tr. Dann existiert eine Konstante no mit den in Lemma 3.4 beschrieben Eigenschaften, also muss jedes Wort mit einer LSmge von mindestens no eine Zerlegung besitzen, die die Eigenschaften (i), (ii) und (iii) erfiillt. Um zu zeigen, dass L r s reicht es ein hinreichend langes Wort zu finden, f/Jr das keine seiner Zerlegungen die Eigenschaften (i), (ii) und (iii)erfiillt. Wir wahlen jetzt w = 0 ~~1~~
104
3 Endliche Automaten
Es ist Mar, dass Iwl - 2no _> no. Es muss eine Zerlegung w - y x z yon w mit den Eigenschaften (i), (ii) und (iii) geben. Weil nach ( i ) l y x l <_ no gilt, ist y - 01 und x - 0 "~ ftir irgendwelche l, m E IN. Nach (ii) ist m ~ 0. Weil w - 0~~ ~~ E L, ist { y x k z I k E IN} - {0~~ ~~ I k E IN} C_ L. Das ist aber ein Widerspruch, weil y x ~ - y z - 0~~ ~~ r L (es ist sogar so, dass 0~~ ~~ das einzige Wort aus { y x ~ z I k E IN} ist, das in L liegt). Bei der A n w e n d u n g des P u m p i n g - L e m m a s ist es wichtig, dass wir das Wort w frei w~hlen kSnnen, weil das L e m m a fiir alle ausreichend langen WSrter gilt. Die Wahl des Wortes w ist insbesondere wichtig aus folgenden zwei Griinden. Erstens kann m a n fiir w eine ,,schlechte" Wahl treffen in dem Sinne, dass m a n mit diesem Wort und der P u m p i n g Methode die Tatsache L r s nicht beweisen kann. Fiir die Sprache L - {0~1 ~ I n E IN} ist ein Beispiel einer schlechten Wahl das Wort w-O~O
gt L.
Es besteht die M6glichkeit, das Wort w wie folgt zu zerlegen: w - yxz
mit y - 0, x - 0, z - 0 ~~
Klar, dass das P u m p i n g L e m m a fiir dieses w gilt, weil keines der WSrter in {yxkz
I k E I N } - {0~~
I k E IN}
zu L geh6rt und so die Eigenschaften (i), (ii) und (iii) erfiillt sind. Zweitens kann m a n WSrter w/~hlen, die den Beweis yon L ~ s zwar erm6glichen, aber nicht als giinstig anzusehen sind, weil eine Menge von Arbeit notwendig ist, u m zu beweisen, dass keine Zerlegung des gewghlten Wortes alle drei Eigenschaften (i), (ii) und (iii) erfiillt, a l s Beispiel b e t r a c h t e n wir die Wahl des Wortes w -- 0 [~o1211 [~o121 ftir die Sprache L - {0~1 ~ I n e IN}. Dieses Wort k6nnen wir benutzen u m L ~ s zu zeigen, aber wir mtissen dabei mindestens die folgenden drei F/tlle von m6glichen Zerlegungen b e t r a c h t e n 9. 9Fiir das Wort 0~~ ~~ garantiert die Eigenschaft (i) des Pumping Lemmas, dass x nur aus Nullen besteht. Fiir das Wort 0 [~~ 1[~~ kann x ein beliebiges nichtleeres Teilwort von w sein.
3.4 Beweise der Nichtexistenz (i)
(ii)
(iii)
105
y = 0 i, x = 0 "~, z = 0[~~176 ffir ein i E IN u n d ein m E I N - {0}, d.h. x b e s t e h t nur aus Nullen. {In diesem Fall k a n n m a n das gleiche A r g u m e n t wie f~r das W o r t w = 0 ~~ 1~~ nutzen, u m zu zeigen, dass die Eigenschaft (iii) des P u m p i n g Lemm a s nicht gilt.} y -X -- Oral j, Z -- l[n~ ffir positive ganze Zahlen m u n d j, d a h e r enthSJt x m i n d e s t e n s eine Null u n d m i n d e s t e n s eine 1. {In diesem Fall ist (iii) nicht erftillt, weil x = y x z E L u n d y x 2 z ~ L ( y x 2 z - orn~ [n~ h a t nicht die F o r m a'b*).} y = 0F~o/21 1i, x = 1"~, z = 1 [~~ fiir ein i E IN u n d ein m E I N - {0}. {In diesem Fall k a n n m a n die A n z a h l der Einsen e r h 6 h e n ohne die A n z a h l der Nullen zu 5mdern u n d so y x ' z ~ L fiir alle 1 E IN - { 1}.}
Also sehen wir, dass die W a h l des W o r t e s 0[~~ [~~ fiir den Beweis yon L ~ s zu viel m e h r A r b e i t fiihrt als die W a h l des W o r t e s 0~~ ~~ Aufgabe 3.15. Beweisen Sie durch Anwendung des Pumping-Lemmas, dass die folgenden Sprachen nicht regulgr sind: (i) (ii) (iii) (iv) (v) (vi) (vii)
{ww I w c {0,1}*}, {anbncn i n c IN},
{wE{0,1},iiwio=iwi1}, {an2 I n E IN}, {a 2n c {w C {0,1}* I Iwlo - 21wll}, und { x l y i x, y c {O, 1}*,l x ]=]y]}.
Aufgabe 3.16. Beweisen Sie folgende Version des Pumping-Lemmas: Sei L c_ E* regulgr. Dann existiert eine Konstante no E IN, so dass sich jedes Wort w E E* mit IwI _> no in drei Teile w - yxz zerlegen l~isst, wobei
(i) (ii) x _>lund (iii) entweder {yxkz I k c IN} C_ L oder {yxkz I k c IN} N L -
O.
Aufgabe 3.17.* Formulieren und beweisen Sie eine allgemeinere Form des Pumping-Lemmas, die Lemma 3.4 und das Lemma aus der Aufgabe 3.16 als Spezialfiille beinhaltet. Im Folgenden stellen wir eine M e t h o d e z u m Beweis der N i c h t r e g u l a r i t ~ t vor, die auf der K o l m o g o r o v - K o m p l e x i t ~ t b e r u h t . Sie zeigt auf eine andere Weise, dass endliche A u t o m a t e n nicht beliebig lange zghlen k 6 n n e n (oder nicht so viele I n f o r m a t i o n e n fiber das bisher gelesene W o r t speichern k6nnen). Diese
3 Endliche Automaten
106
Methode basiert auf dem n~tchsten Satz, der zeigt, dass nicht nur alle WSrter einer regul~tren Sprache eine kleine Kolmogorov-Komplexit~tt haben, sondern auch alle Suffixe von W6rtern einer regul~ren Sprache. So ist Satz 3.1 eine Verfeinerung des Satzes 2.2 fiir regul~tre Sprachen. S a t z 3.1.* Sei L C (Y]bool)* eine Feg~tlaFe Sprache. Sei Lx - {y E E* l xy E L} fiir jedes x E E*. Dann existiert eine Konstante const, so dass fiir alle x , y E E*
K(y) <_ [log2(n + 1)] + const falls y das n-te Wort in der Sprache Lx ist. Beweis. Weil L regulgr ist, existiert ein EA M mit L ( M ) = L. Die Idee des Beweises ist 5~hnlich dem Beweis von Satz 2.2, aber nicht gleich. Wenn wir den Beweis des Satzes 2.2 genau verfolgen wtirden, wtirden wir in kanonischer Reihenfolge alle WSrter z aus E* nacheinander generieren und fiir jedes Wort x z durch die Simulation von M auf x z bestimmen, ob x z E L = L ( M ) . Das n-te akzeptierte Wort der Form x z bestimmt, dass z das n-te Wort in Lx ist. Die SchwS~che dieses Ansatzes liegt darin, dass man dem P r o g r a m m zur Generierung von y nicht nur n und M geben muss, sondern auch x. Das Wort x kann aber eine beliebig groi3e Komplexit~t K ( x ) im Vergleich zu K ( y ) haben. Die Kernidee hier ist, dass wir einem P r o g r a m m zur Generierung von y das Wort x gar nicht geben miissen. Es geniigt, ihm den Zustand 5(q0, x) zu geben und dann die Simulation auf den generierten WSrtern z immer aus ~(q0, x) zu starten. Sei y das n-te Wort in Lx fiir ein x E E*. Das P r o g r a m m Ax,y zur Generierung von y arbeitet wie folgt: Ax,y:
begin z:--A; i:--O; while @ < n do begin Simuliere die Arbeit von M aus dem Zustand ~(q0, x) auf z; i f ~(~(q0, x), z ) E F t h e n begini:=i+l; y:=z; end; z := kanonischer Nachfolger yon z. end; write(y); end.
3.4 Beweise der Nichtexistenz
107
Ftir alle x,y ist Ax,y gleich bis auf n und den Zustand 5(qo, x). Aber den Zustand 5(qo, x) k6nnen wir in die Beschreibung yon M mit einem speziellen Zeiger auf 5(q0, x) einbetten. Weil es nur IQI MSglichkeiten fiir den Zeiger gibt, existiert eine Konstante constM, die die Ls der vollstgndigen Beschreibung von M mit dem Zeiger auf einen der Zustgnde (egal welchen) beinhaltet. Die LS~nge der Beschreibung yon Ax,y auger den Parametern n, M und 5(q0, x) ist eine Konstante d beziiglich x und y. Die Zahl n kann man in [log 2(n + 1)] Bits darstellen. Also gilt
K(y) <_ [log2(n + 1)] + constM + cl. D Wir wenden den Satz 3.1 an, ura noch einmal L = {0~1~ I n E IN} ~ s indirekt zu beweisen. Sei L regular. F/Jr jedes m E IN ist 1"~ das erste Wort in der Sprache Lo-~ - {y I 0"~y E L} -
{OJl"~+Jlj E IN}.
Satz 3.1 folgend, existiert eine Konstante c unabhgngig von m (ngmlich von dem Wort 1"~), so dass K(1 "~) _< K(1) + c. Weil K(1) auch eine Konstante ist, gilt fiir eine Konstante d K(1 "~) _< d
K(1) + c (3.5)
fiir alle m E I N - {0}. Dies ist aber nicht mSglich, weil (i) die Anzahl aller Programme, deren Lgnge kleiner oder gleich d sind, endlich ist (hSchstens 2 a) und (ii) die Menge {1"~ I m E IN} unendlich ist. Eine andere Argumentation als zu sagen, dass endlich viele unterschiedliche Programme nicht unendlich viele unterschiedliche W6rter generieren k6nnen, ist, die Behauptung aus Aufgabe 2.29 anzuwenden. Diese Behauptung sichert die Existenz yon unendlich vielen Zahlen m m i t K ( m ) _> [log2(m + 1)] - 1. Weil es ein b E IN gibt, so dass IK(1 "~) - K(m)l _< b fiir alle m E IN, steht K ( m ) _> [log2(m+ 1)] - 1 fiir unendlich viele m E IN im Widerspruch zu (3.5). Aufgabe 3.18. Wenden Sie den Satz 3.1 an, um die Nichtregularit~t folgender Sprachen zu beweisen: (i) {0 n2 nEIN},
3 Endliche Automaten
108
(ii) {02~"lncIN}, (iii) {wE{0,1}*llwlo=2.1Wll}und (iv) {w E {0, 1}*lw = x x fiir ein x E {0, 1}*}.
3.5
Nichtdeterminismus
Die standardm/~f3igen Programme sowie die bisher betrachteten endlichen Automaten sind Modelle von deterministischen Berechnungen. Determinismus bedeutet in diesem Kontext, dass in jeder Konfiguration eindeutig festgelegt ist (determiniert ist), was im n~chsten Schritt passieren wird. Daher bestimmen ein Programm (oder ein EA) A und seine Eingabe x vollstgndig und eindeutig die Berechnung von A auf x. Nichtdeterminismus erlaubt in gewissen Konfigurationen eine Auswahl yon mehreren Aktionen (M6glichkeiten, die Arbeit fortzusetzen). Dabei reicht es, wenn mindestens eine der M6glichkeiten zu dem richtigen Resultat fiJhrt. Dies entspricht einem auf den ersten Blick kiJnstlichen Spiel, so, als ob ein nichtdeterministisches Programm immer die richtige M6glichkeit wS~hlt. Diese Wahl einer von mehreren M6glichkeiten nennen wir n i c h t d e t e r m i n i s t i s c h e E n t s c h e i d u n g . F/Jr ein Entscheidungsproblem (E, L) bedeutet dies, dass ein nichtdeterministisches Programm (nichtdeterministischer EA) A eine Sprache L akzeptiert, falls fiJr jedes x E L mindestens eine akzeptierende Berechnung von A auf x existiert und f/Jr jedes y E E* - L alle Berechnungen nicht akzeptierend sind. Obwohl ein nichtdeterministisches Programm nicht zum praktischen Einsatz geeignet scheint (und wir kein Orakel haben, das uns helfen wiirde, die richtige nichtdeterministische Entscheidung zu treffen), hat das Studium yon nichtdeterministischen Berechnungen einen wesentlichen Beitrag zum VerstS~ndnis von deterministischen Berechnungen und zur Untersuchung der Grenze der M6glichkeiten, Probleme algorithmisch zu 16sen, geliefert. Die Zielsetzung dieses Teilkapitels ist es, Nichtdeterminismus auf dem Modell der endlichen Automaten einzufiJhren und zu untersuchen. Dabei interessieren uns die fiJr allgemeine Berechnungsmodelle zentralen Fragen, ob man nichtdeterministische Berechnungen deterministisch simulieren kann und falls ja, mit welchem Berechnungsaufwand. Fiir Programme k6nnte man Nichtdeterminismus z.B. mit einem Befehl ,,choose goto i or goto j" einfiJhren. Bei endlichen Automaten fiihren wir Nichtdeterminismus so ein, dass wir einfach aus einem Zustand mehrere Uberg5nge fiir das gleiche Eingabesymbol erlauben (Fig. 3.14).
3.5 Nichtdeterminismus
109
Fig. 3.14 D e f i n i t i o n 3.3. Ein n i c h t d e t e r m i n i s t i s c h e r e n d l i c h e r A u t o m a t ist ein Quintupel M = (Q, E~ 5~ qo, F). Dabei ist
~) ~)
Q eine endliche Menge, Z u s t a n d s m e n g e genannt, E ein Alphabet, E i n g a b e a l p h a b e t genannt, qo E Q der A n f a n g s z u s t a n d , F c_ Q die Menge der a k z e p t i e r e n d e n Z u s t ~ i n d e und 5 eine Funktion 1~ yon Q • E nach 79(Q), U b e r g a n g s f u n k t i o n
(NEA)
genannt.
{ Wit beobachten, dass Q, E, qo und F die gleiche Bedeutung wie bei einem EA haben. Ein NEA harm abet zu einem Zustand q und einem gelesenen Zeichen a mehrere Nachfolgezustiinde oder gar keinen haben.} Eine K o n f i g u r a t i o n von M ist ein Element aus Q • E*. Die Konfiguration (qo, x) ist die S t a r t k o n f i g u r a t i o n ffir d a s W o r t x. Ein S c h r i t t y o n M dutch
ist eine Relation ~ -
(q, ~ ) - ~ - ( p , ~) ~ , ~ - a~ f ~
C_ (Q x E*) • (Q x E*), definiert
~i~ a e r ~ d ; c 5(q, a).
Eine B e r e c h n u n g v o n M i s t eine endliche Reihenfolge D1, D 2 , . . . , D~ von Konfigurationcn, wobei Di - ~ Di+l fiir i - 1 , . . . , k 1. Eine B e r e c h n u n g v o n M a u f x ist eine Berechnung Co, C 1 , . . . , C,~ yon M , wobei Co = (qo, x) ~d ~t~d~ C~ ~ O • { ~ } o d ~ O~ = (q, a~) f ~ ~i~ ~ ~ ~ ~ d ~i~ q ~ O, ~o dass 5(q, a) = O. Co, C 1 , . . . , C,~ ist eine a k z e p t i e r e n d e Berechnung yon M von M auf x existiert, sagen wir auch, dass M d a s W o r t x a k z e p t i e r t . Die Relation - ~
ist die reflexive und transitive Hiille 11 von [M 9
l~ kann man 5 als eine Relation auf (Q • E) • Q definieren. l lGenau wie bei einem EA.
110
3 Endliche A u t o m a t e n
Die Sprache
L(M)
-
{w
E
~* I (q0, w) ~
(p, A) f ~ ~i~ p ~ F}
ist die v o n M a k z e p t i e r t e S p r a c h e . ..
^
Zu der Ubergangsfunktion ~ definieren wit die Funktion ~ von Q • E* in 79(Q) wie folgt:
(//)
(~(q, A) -- {q} fiir jedes q E Q, ~(q, wa) - {p l ~ existiert ein r E ~(q, w), so dass p E ~(r, a) } -
U~3(~,~)~(~, a)
fiir alle q E Q,a E E , w E E*. Wir sehen, dass ein Wort x in L ( M ) ist, wenn M mindestens eine akzeptierende Berechnung auf x hat. Bei einer akzeptierenden Berechnung auf x wird wie bei einem EA gefordert, dass das ganze Wort x gelesen wird und nach dem Lesen des letzten Buchstabens M in einem akzeptierenden Zustand ist. Im Unterschied zu endlichen Automaten kann eine nicht akzeptierende Berechnung enden, auch wenn die Eingabe nicht vollstgndig gelesen wurde. Dies passiert, wenn der NEA in einem Zustand q das Symbol a liest und 5(p, a) = 0, d.h. es existiert keine M6glichkeit, die Berechnung fortzusetzen. Der Definition von ~ folgend sehen wir, dass ~(q0, w) die Menge aller Zustgnde aus Q ist, die aus q0 durch das vollstS~ndige Lesen des Wortes w erreichbar sind. Daher ist
L ( ~ ) - {w c ~* I 3(Go, w ) n F # 0} eine alternative Definition der von M akzeptierten Sprache. Betrachten wir folgendes Beispiel eines NEA. Sei M = (Q, E, ~, qo, F), wobei Q = {qo, ql, q~}, ~ = {o, 1}, F = {q~} ~ d
~(qo, o) = {qo}, ~(qo, 1) = {qo, ql}, ~(ql, o) = 0, ~(ql, 1) = {q~}, 6(q2, 0 ) = {q2}, 6(q2, 1 ) = {q2}. Auf die gleiche Weise wie bei endlichen Automaten stellen wir eine graphische Darstellung yon M (Fig. 3.15) vor. Das Wort 10110 ist in L ( M ) , weil
(qo, 10110) ~ (qo,0110) ~ (qo, 110) ~ (ql, 10) ~ (q2,O) ~ (q2,~)
3.5 Nichtdeterminismus
111 0,1
Fig. 3.15
eine akzeptierende Berechnung von M auf x ist. Um entscheiden zu kSnnen, ob ein NEA M ein Wort x akzeptiert, muss man alle Berechnungen von M auf x verfolgen. Eine anschauliche Darstellung aller Berechnungen von M auf x ist durch den sogenannten B e r e c h n u n g s b a u m BM(X) v o n M a u f x gegeben. Die Knoten des Baumes sind Konfigurationen von M. Die Wurzel yon BM(x) ist die Anfangskonfiguration von M auf x. Die S6hne eines Knotens (q, c~) sind alle Konfigurationen, die man yon (q, ct) in einem Schritt erreichen kann (d.h. alle (p, ~), so dass (q, c t ) ~ (p, r Ein Blatt von Bm(x) ist entweder eine Konfiguration (r, A) oder eine Konfiguration (s, a~) mit a E E, wobei ~(s, a) = 0 (daher sind die Blatter Konfigurationen, aus denen kein weiterer Berechnungschritt mSglich ist). Bei dieser Darstellung entspricht jeder Weg yon der Wurzel zu einem Blatt einer Berechnung yon M auf x. Daher gleicht die Anzahl der B15~tter yon BM(x) genau der Anzahl unterschiedlicher Berechnungen yon M auf x.
Aufgabe 3.19. Entwerfen Sie einen NEA, der fiir jede Eingabe x E (~bool)* genau 2lxl unterschiedliche Berechnungen hat. Ein Berechnungsbaum BM(x) yon M aus Fig. 3.15 auf dem Wort x = 10110 ist in Fig. 3.16 dargestellt. Der Berechnungsbaum BM(10110) hat vier B15~tter. Zwei Bl~ttter (ql, 0110) und (ql, 0) entsprechen den Berechnungen, in denen es M nicht gelungen ist, das Eingabewort vollstS~ndig zu lesen, weil (~(ql, 0) = 0. Somit sind diese Berechnungen nicht akzeptierend. Das Blatt (q0, A) und das Blatt (q2, A) entsprechen zwei Berechnungen, in denen das Eingabewort 10110 vollstS~ndig gelesen wurde. Weil q2 E F, ist die Berechnung, die in (q2, A) endet, eine akzeptierende Berechnung. Die Schlussfolgerung ist, dass 10110 E L(M). Weil q2 der einzige Endzustand yon M i s t , und die einzige M6glichkeit, von q0 zu q2 zu gelangen, darin besteht, zwei Einsen hintereinander zu lesen, liegt die Vermutung nahe, dass L(M) alle WSrter der Form x l l y , x, y C (Ebool)*, enthglt. Das folgende Lemma best5tigt unsere Vermutung.
112
3 Endliche Automaten
{q0}
(qo, 10110) (qi, 0110)
(qo, 0110)
{q0, qi}
(q0,110)
{q0}
(qo, lO)
(qi, 10)
{q0, ql}
IM (ql, O)
(qo, O)
(q~, 0)
{q0, qi, q~}
IM
(qo, ;~)
](q~, A) ]
{q0, q~}
Fig. 3.16 L e m m a 3.5. Sei M der NEA aus Fig. 3.15. D a n n ist L(M) = {xlly
l x , y E (}--]%ool)*}.
Beweis. Wir beweisen diese Gleichheit zweier Mengen durch zwei Inklusionen.
(i) Zuerst beweisen wir { x l l y l x , y E (}--]%ool)*}~ L(]~). Sei w E { x l l y I x,y E (Ebool)*}, d.h., w = x l l y fiir irgendwelche x,y E (2bool)*. Es reicht, die Existenz einer akzeptierenden Berechung yon M auf w zu beweisen. Da qo E 5(qo, O) N 5(qo, 1), existiert fiir jedes x E (Ebool)* die folgende Berechnung yon M auf x:
(q0, ~) ~- (q0, A).
(3.6)
Da q2 E 5(q2, O) N 5(q2, 1), existiert fiir jedes y E (Y]bool)* die folgende Berechnung von M:
(q~, y) ~ (q~, a).
(3.7)
Daher ist die folgende Berechnung eine akzeptierende Berechnung von M auf x11y:
(qo, ~11y) 5- (qo, 11y)~ (ql, ly) ~ (q~,y) 5- (q~, ~)-
3.5 Nichtdeterminismus
113
(ii) Wir beweisen L(M) C { x l l y [ x, y E (}-]bool)*}. Sei w E L(M). Daher existiert eine akzeptierende Berechnung von M auf w. Weil die Berechnung auf w in q0 anfangen und in q2 enden muss 12, und der einzige Weg yon q0 zu q2 fiber ql fiihrt, sieht eine akzeptierende Berechnung yon M auf w wie folgt aus:
(3.8) Jede Berechnung von M kann h6chstens eine Konfiguration mit dem Zustand
ql beinhalten, weil ql ~ (~(ql, a) fiir alle a E Ebool. Wenn man einmal ql verlS~sst, kann man nicht wieder zu ql zuriickkehren. Daher kann die Berechnung (3.8) genauer wie folgt dargestellt werden:
(qo, W)~M (qo,az) ~M (ql, Z) M~-(q2, U)~-(q2, ~),
(3.9)
wobei z = bu fiir ein b E ~bool. Die einzige M6glichkeit, in Zustand ql Ztl gelangen, ist die Anwendung der Transition ql E ~(q0, 1), d.h. durch Lesen einer Eins im Zustand q0, daher ist a = 1 in (3.9). Weil ~(ql, 0) = 0 und ~(ql, 1) = {q2}, ist die einzige M6glichkeit, einen Berechnungschritt aus ql zu realisieren, eine Eins zu lesen, d.h. b = 1. Folglich entspricht (3.9): (q0, w) ~ - (q0, 11u) M~- (ql, lu) M~- (q2, u) ~
(q2, A).
Daher muss w das Teilwort 11 beinhalten und somit gilt w E { x l l y [ x, y E (Y]bool)*}.
Aufgabe 3.20. Entwerfen Sie fttr jede der folgenden Sprachen einen NEA: (a) (b) (c) (d)
{1011xOOyl x, y c (Eboo~)*}, {01,101}*, {x C (Ebool)* ] x enthalt als Teilw6rter 01011 und 01100}, {x c (Elo)*[Nummerlo(x) ist teilbar durch 3}.
Bemiihen Sie sich, den NEA so einfach wie m6glich zu gestalten, d.h. minimieren Sie die Anzahl der Zustande (Knoten) und Transitionen (Kanten). S e i / 2 ( N E A ) = { L ( M ) I M ist ein NEA}. Die zentrale Frage dieses Teilkapitels ist, ob s = s genauer, ob endliche a u t o m a t e n die a r b e i t von nichtdeterministischen endlichen Automaten simulieren k6nnen. Diese Frage ist auch zentral fiir allgemeinere Berechnungsmodelle. Bisherige Erfahrungen zeigen, dass die Simulation yon Nichtdeterminismus durch Determinismus nur dann realisierbar ist, wenn die M6glichkeit besteht, alle nichtdeterministischen
12q2 ist der einzige akzeptierende
Zustand von M.
114
3 Endliche Automaten
Berechnungen eines Modells M auf einer Eingabe z durch eine deterministische Berechnung nachzuahmen. Dies gilt auch fiir endliche Automaten. Die Idee der Simulation eines NEA M durch einen EA A basiert auf dem Prinzip der Breitensuche in den Berechnungsbgumen yon M. Die erste wichtige Voraussetzung fiir eine derartige Simulation ist, dass alle Konfigurationen eines Berechungsbaumes in einer Entfernung i yon der Wurzel das gleiche zweite Element haben (weil sie alle nach dem Lesen von genau den ersten i Symbolen des Eingabewortes erreicht worden sind). Daher unterscheiden sich die Konfigurationen in der gleichen Entfernung yon der Wurzel nur in den Zustgnden. Obwohl die Anzahl der Konfigurationen in einer festen Entfernung i yon der Wurzel exponentiell in i sein kann, bedeutet dies nicht, dass wir exponentiell viele Berechnungen simulieren miissen. Es gibt nur endlich viele Zustgnde des NEA und daher gibt es nur endlich viele unterschiedliche Konfigurationen in der Entfernung i. Wenn zwei unterschiedliche Knoten u und v des Berechnungsbaumes mit der gleichen Konfiguration 6' markiert sind, sind die Teilbgume mit der Wurzel u und v identisch, und es reicht daher aus, nur in einem der beiden Teilbgume nach einer akzeptierenden Berechnung zu suchen (Fig. 3.17). Mit anderen Worten reicht es fiir eine Simulation aus, fiir jede Entfernung i von der Wurzel des Berechnungsbaumes Bv(z) die Menge der dort auftretenden ZustS~nde zu bestimmen. Diese Menge ist aber nichts anderes als J(qo, z), wobei z das Prgfix des Eingabewortes mit [z[ = iist. Am rechten Rand yon Fig. 3.16 sind die Zustandsmengen ~(q0, A ) - {q0}, ~(q0, 1 ) - {qo, ql}, (~(qo, 1 0 ) - {qo}, (~(q0,101) - {q0, q,}, 3(q0, 1011) -- {q0, ql, q2} und (~(q0, 10110) - {q0, q2} angegeben, die den erreichbaren Mengen von Zustgnden nach dem Lesen des Prgfixes einer Lgnge i fiir i = 0, 1 , . . . , 5 entsprechen.
Fig. 3.17
3.5 Nichtdeterminismus
115
Diese Beobachtung f/ihrt dazu, dass m a n als ZustS~nde des simulierenden (deterministischen) EA A beliebige Teilmengen der Zustandsmenge des NEA M(Q, E, (~, q0, F ) verwendet. Dies fiihrt dazu, dass m a n die folgende Konstruktion des endlichen A u t o m a t e n A als P o t e n z m e n g e n k o n s t r u k t i o n in der A u t o m a t e n t h e o r i e bezeichnet. Ein Zustand (P} yon A ffir P C_ Q wird die Bedeutung haben, dass nach der gegebenen Anzahl yon Berechnungsschritten genau die Zustgnde aus P in den Berechnungen von M auf gegebener Eingabe erreichbar sind ~a (P - ~(qo, z)). Ein Berechnungsschritt A aus einem Zustand /P} fiir ein gelesenes Symbol a bedeutet die B e s t i m m u n g der Menge [-JpeP ~(P, a) - aller Zustande, die aus irgendeinem Zustand p E P beim Lesen von a erreichbar sind. Eine Formalisierung dieser Idee liefert der n~chste Satz. S a t z 3.2. Zu jedem NEA M existiert ein EA A, so dass
L(M) - L(A). Beweis. Sei M - (Q, E, ~M, q0, F ) ein NEA. Wir konstruieren einen EA A (QA, EA, (~A,qOA, FA) wie folgt" (i) QA : { I P c Q}, (ii) ~A = ~, (iii) q0A = ({q0}>, (iv) FA = {(P) I P c 0 und P F / F -r 0}, (v) ~A ist eine Funktion aus QA x EA nach QA, die wie folgt definiert ist. Ftir jedes (P} E QA und jedes a E EA,
p6P
Es ist klar, dass A ein EA ist. Fig. 3.18 zeigt den EA A, der sich nach dieser Potenzmengenkonstruktion aus dem NEA A aus Fig. 3.15 ergibt. 14 13Wir benutzen die Bezeichnung (P} statt P, um immer deutlich zu machen, ob wir einen Zustand von A, der einer Menge von Zust~nden von M entspricht, oder eine Menge von Zust~nden von M betrachten. 14Man bemerke, dass die Zust~inde (0}, ({ql}}, ({q2}} und ({ql,q2}} in A nicht aus ({q0}} erreichbar sind, d.h., es gibt kein Wort, dessen Bearbeitung in einem dieser Zust~nde endet. Wenn wir also diese Zust~inde aus A herausnehmen, wird das keinen Einfluss auf die yon A akzeptierte Sprache haben.
116
Um
3 Endliche A u t o m a t e n
L(M) - L(A)
zu zeigen, reicht es, folgende Aquivalenz zu beweisen: (3.10)
Wir beweisen (3.10) mittels Induktion bez/iglich Ixl. (i) Sei I x l - 0, d.h. x - A. Weil ~M(qo, )~)- {q0} und qoA- {{qo}}, gilt (3.10) fiir x - A. (ii) Sei (3.10) giiltig fiir alle z E E* mit _ m, m ~ . Wir beweisen, dass (3.10) auch f/Jr alle W6rter aus E "~+1 gilt. Sei y ein beliebiges Wort aus E "~+1. Dann ist y - xa ftir ein x E E "~ und ein a E E. Nach der Definition der Funktion (~A gilt
~A(qOA,xa) -- (~A(~A(qOA,X), a).
(3.11)
Wenn wir die Induktionsannahme (3.10) ftir x anwenden, erhalten wir
daher gilt
~A(qoA, Z ) - <~M(qO,Z)}. Nach Definition (v) yon
(3.12)
6A gilt
(~A((R} , a) --
(3.13)
fiir alle R C_ Q und alle a E E. Zusammenfassend ist
~A(qOA,xa)
(3.11)
5A(~A(qOA,X), a)
(3.12)
{
U pESM(qO,X)
}
Im Folgenden sagen wir, dass zwei Automaten A und B / i q u i v a l e n t sind, falls
L ( A ) - L(B).
3.5 Nichtdeterminismus
117
0,1 ( 0 1 1
=
0,1
0,1 Fig. 3.18 Aufgabe 3.21. Wenden Sie die Konstruktion aus Satz 3.2 an, um einen gquivalenten EA zu dem NEA aus Fig. 3.19 zu erzeugen. Aufgabe 3.22. Konstruieren Sie mittels Potenzmengenkonstruktion endliche Automaten zu den nichtdeterministischen endlichen Automaten, die Sie in der Bearbeitung der Aufgabe 3.20 (b) und (d)e~tworf~n haben. Die Folge yon Satz 3.2 ist, dass/2(EA) = Z:(NEA), d.h., die (deterministischen) endlichen A u t o m a t e n sind bez~glich der Sprachakzeptierung genauso stark wie die nichtdeterministischen endlichen A u t o m a t e n . W i t bemerken abet, dass die dutch Potenzmengenkonstruktion erzeugten endlichen A u t o m a t e n wesentlich (exponentiell) grSt3er sind, als die gegebenen nichtdeterministischen endlichen A u t o m a t e n . Die ngchste Frage ist also, ob es Sprachen gibt, bei denen m a n die Simulation von Nichtdeterminismus dutch Determinismus unausweichlich mit einem exponentiellen W a c h s t u m der Automatengr6i3e bezahlen muss, oder ob eine andere Konstruktion existiert, die die Erzeugung kleinerer gquivalenter deterministischer A u t o m a t e n sicherstellt. Wir zeigen jetzt, dass m a n die Potenzmengenkonstruktion nicht verbessern kann. Betrachten wit die folgende regulgre Sprache Lk -- { x l y
l x E (Ebool)*,Y E (Ebool) k-l}
118
3 Endliche Automaten
fiir jedes k E IN - {0}. Der NEA A~ in Fig. 3.19 akzeptiert Lk auf die Weise, dass er fiJr jedes Symbol 1 der Eingabe nichtdeterministisch im Zustand q0 rgt, ob dieses Symbol das k-te Symbol vor dem Ende der Eingabe ist. Ak verifiziert dann deterministisch, ob diese Entscheidung korrekt war. 0,1
__..~@
1
1
1
.,~~~-'~~@~_~"" 0
1
" 0
~ 0
Fig. 3.19
Aufgabe 3.23. Geben Sie eine formale Beschreibung des NEA Ak aus Fig. 3.19 und beweisen Sie, dass Ak die Sprache Lk akzeptiert. Konstruieren Sie fiJr jedes k c IN- {0} einen EA Bk mit Lk -- L(Bk). Der NEA Ak hat k t 1 ZustS~nde. Wir beweisen jetzt, dass jeder EA, der Lk akzeptiert, exponentiell viele Zust~nde beztiglich der GrOtJe von Ak haben 1TIUSS. L e m m a 3.6. Fiir alle k E I N - {0} muss jeder EA, der L~ akzeptiert, mindestens 2 k Zustiinde haben. Beweis. Sei/~k - (Qk, Y]~bool, (~k, qOk, f k ) ein EA mit L(Bk) - Lk. Um zu zeigen, dass Bk mindestens 2 k viele Zustgnde haben muss, verwenden wir die gleiche grundlegende Idee, die wir in Abschnitt 3.4 f/Jr die Beweise der Nichtexistenz ~5 benutzt haben. Wenn 3~(q0k, x) - 5k(qok, Y) f/Jr irgendwelche WSrter x und y fiber Ebool, dann gilt fiir alle z E (Ebool)* xz E L(Bk) ~
y z E L(B~).
(3.14)
Die Idee des Beweises ist es, eine Menge Sk von WSrtern zu finden, so dass fiir keine zwei unterschiedlichen WSrter z, y E St, die Gleichung 5t(qok, Z) (~k(qok, Y) gelten darf. Dann miisste Bk mindestens ISkl viele Zustande haben. 16 15Dies sollte nicht iiberraschend sein, da wir im Prinzip auch einen Nichtexistenzbeweis fiihren. Wit beweisen, dass kein EA mit weniger als 2k Zust~nden fiJr Lk existiert. 16Wenn Sk unendlich w~re, dann wiirde dies die Nichtexistenz eines EA fiir die gegebene Sprache bedeuten.
3.5 Nichtdeterminismus
119
Wir wS~hlen Sk - (Y]bool)k und zeigen, dass 5k(q0~, u) paarweise unterschiedliche Zustgnde fiir alle W6rter u aus S~ sind. Beweisen wir es indirekt. Seien x
=
XlX2...
und y = y l y 2 . . , yk, xi, yi E Eboo~ ffir i = 1 , . . . , k,
X k
zwei unterschiedliche W6rter aus S k -
(Y]bool) k. Setzen wir
voraus. Weil x -r y, existiert ein j E { 1 , . . . , k}, so dass xj r yj. Ohne BeschrS~nkung der Allgemeinheit setzen wir xj = 1 und yj = 0 voraus. Betrachten wir jetzt z = 0j-1. Dann ist XZ
--
X 1 . ..
Xj_
1
lXj+l...
XkO j-1
und y z
-
Yl 9 . .
Yj-lOyj+l
9 ..
ykO j - 1
und daher x z E L~ und yz ~ Lk. Dies ist gber ein Widerspruch zu (3.14). Daher hat Bk mindestens IS Iviele Zust~nde. D In dem Beweis des obigen Lemmgs hgben wir eine einfache Beweismethode eingeffihrt, mit der man untere Schrgnken ffir die Gr6ge yon endlichen Automaten zur Akzeptierung konkreter regulgrer Sprachen zeigen kann. Um diese Methode noch an einem einfachen Beispiel zu vergnschgulichen, zeigen wir ihre Anwendung ffir die regulgre Sprache L = { x l l y l x ,y E {0, 1}*}, die wir schon bei der Illustrierung der Potenzmengenkonstruktion in Fig. 3.13 betr&chtet h&ben. Um zu zeigen, d&ss jeder endliche Automat fiir L mindestens drei Zustgnde hat, suchen wir uns die folgenden drei W6rter aus: A, 1, 11. Jetzt sollen wir fiir jedes Paar (x, y) aus unterschiedlichen W6rtern x, y aus S = {A, 1, 11} zeigen, dass ein Wort z existiert, so dass genau eines der W6rter x z und y z in L ist (d.h., x und y erffillen die Aquivalenz (3.14) nicht). Ffir x = A und y = 1 w5hlen wir z = 1. Dann xz=
l ~ L und y z =
ll EL.
Daher (~(q0, A) -~ 5(q0, 1) ffir jeden endlichen Automaten, der L akzeptiert.
120
3 Endliche Automaten
F/Jr x = A u n d y = 11 w ~ h l e n w i r z = 0. D a n n
x z = 0 ~ L u n d y z = 110 E L u n d d e s h a l b m i i s s e n ~(qo, A) u n d (~(qo, 11) a u c h u n t e r s c h i e d l i c h sein. Fiir x = 1 u n d y = 11 w ~ h l e n w i r z = A. D a n n
x z = 1 ~ L u n d y z = 11 E L u n d d e s h a l b m i i s s e n ~(qo, 1) u n d ~(qo, 11) e b e n f a l l s u n t e r s c h i e d l i c h sein. Zusammengefasst
miissen
(~(qo, A), ~(qo, 1) u n d ~(qo, 11) paarweise unterschiedlich akzeptiert.
sein fiir j e d e n E A A =
(Q,
}-]bool, (~, qo, F ) ,
der L
A u f g a b e 3.24. Betrachte die Sprache L = { x l l y I x,y C {0, 1}*} und die drei W6rter A, 1, 11. Bestimme fiir alle Paare x, y von unterschiedlichen WSrtern aus S = {A, 1, 11} die Menge Z(x, y) C_ (Ebool)*, so dass fiir jedes z 9 Z(x, y)
(xz ~ L und yz E L) oder (xz E L und yz ~ L). A u f g a b e 3 . 2 5 . Betrachte L = { x l l y l x , y c {0, 1}*}. WS~hle S' disjunkt zu S = {A, 1, 11} und wende S t an, um zu zeigen, dass jeder EA fiir L mindestens drei Zust~inde hat. A u f g a b e 3.26. S e i L = { x 0 1 1 y l x
,yC{O,1}*}.
(i) Konstruieren Sie einen NEA M mit vier Zust~nden fiir L und beweisen Sie L = L(M). (ii) Wenden Sie auf M die Potenzmengenkonstruktion an, um so einen (deterministischen) EA zu erhalten. A u f g a b e 3.27.* Ein EA A heit3t m i n i m a l fiir die regulate Sprache L(A), wenn kein kleinerer (beziiglich der KardinalitS~t der Zustandsmenge) EA B m i t L(A) = L(B) existiert. Konstruieren Sie minimale EA fiir die Sprachen aus Aufgabe 3.9 und beweisen Sie ihre Minimalit~t. A u f g a b e 3.28. Entwerfen Sie einen NEA M mit hSchstens sechs Zust~nden, so dass L(M) = {0x Ix c {0, 1}* und x enthSJt die WSrter 11 oder 100 als Teilw6rter }.
3.6
3.6
Zusammenfassung
121
Zusammenfassung
In diesem Kapitel haben wir die endlichen Automaten als ein Modell von sehr einfachen Berechnungen, die keine Variablen und damit keinen Speicher benutzen, vorgestellt. Die Zielsetzung war aber nicht, die Automaten zu studieren, sondern an einem einfachen Beispiel das Definieren eines Berechungsmodells zu zeigen. Die Definition beginnt mit der Beschreibung der Komponenten und mit der Festlegung der grundlegenden Operationen (Aktionen) des Modells. Danach definiert man den Begriff der Konfiguration, die eine vollstS~ndige Beschreibung des allgemeinen Zustands des betrachteten Berechnungsmodells zu einem gegebenen Zeitpunkt ist. Die Durchfiihrung eines Berechnungsschrittes entspricht der Anwendung einer elementaren Operation des Modells auf die aktuelle Konfiguration. So definiert man einen Schritt als einen Ubergang aus einer Konfiguration C zu einer anderen Konfiguration D. Der Unterschied zwischen C und D ist durch eine elementare Operation erzeugbar. Eine Berechnung beschreibt man als eine Folge von Konfigurationen mit der Eigenschaft, dass man aus jeder Konfiguration zu ihrer Nachfolgekonfiguration in einem Berechnungsschritt iibergehen kann. Eine Berechnung auf einer Eingabe x startet in einer initialen Konfiguration, in der x als Eingabe zur Verfiigung steht. Die letzte Konfiguration der Berechnung bestimmt das Resultat. Bei endlichen Automaten handelt es sich um einfache Algorithmen zur Spracherkennung (zur L6sung yon Entscheidungsproblemen), die sich zwischen (inneren) ZustS~nden aus einer endlichen Zustandsmenge beim Lesen yon Eingabesymbolen bewegen. Ein endlicher Automat akzeptiert ein Eingabewort, wenn er sich nach den Lesen des letzten Buchstabens des Eingabewortes in einem akzeptierenden Zustand befindet. Zu zeigen, dass ein Problem durch Algorithmen aus einer bestimmten Algorithmenklasse nicht 16sbar ist, bedeutet, einen Nichtexistenzbeweis zu fiihren. Dies fordert meistens ein tieferes Verstgndnis der Natur der betrachteten AIgorithmenklasse. Im Fall der endlichen Automaten basieren die Beweise von L ~ s auf der Tatsache, dass die Vielfgltigkeit der W6rter in L so grog ist, dass man sie durch die Zerlegung von E* in endlich viele Klassen nicht charakterisieren kann. Mit anderen Worten reichen endlich viele Zustgnde als Speicher nicht aus, um alle wichtigen Eigenschaften (Charakteristika) der bisher gelesenen Prgfixe yon Eingabew6rtern zu speichern. Diese Art der Argumentation kann man auch benutzen, um fiir eine gegebene Sprache U E s eine untere Schranke fiir die Gr6fie eines jeden EA A mit L ( A ) = U zu beweisen. Nichtdeterministische Algorithmenmodelle (Rechnermodelle) erlauben im Un-
3 Endliche Automaten
122
terschied zu deterministischen eine Auswahl von mehreren (endlich vielen) Aktionen in jedem Berechnungsschritt. Dadurch kann ein nichtdeterministischer Algorithmus exponentiell viele (beziiglich der EingabelS~nge) unterschiedliche Berechnungen auf einer Eingabe haben. Die Interpretation der Arbeit eines nichtdeterministischen Algorithmus A ist o p t i m i s t i s c h - wir setzen voraus, dass A in jeder nichtdeterministischen Wahl eine richtige Entscheidung trifft, falls eine solche existiert. Dies bedeutet, dass ein nichtdeterministischer AIgorithmus erfolgreich bei der L6sung eines Problems ist, wenn ftir jede Eingabeinstanz z mindestens eine der Berechnungen von A auf z das richtige Resultat liefert. Bei einem Entscheidungsproblem (E, L) bedeutet dies, dass A fiir alle z E L mindestens eine akzeptierende Berechnung 17 auf z hat und alle Berechnungen von A auf y fiir jedes y r L nichtakzeptierend is sind. Im Allgemeinen kennen wir keine etiizientere Art, nichtdeterministische Algorithmen A durch deterministische Algorithmen B zu simulieren, als alle m6glichen Berechnungen von A durch B zu simulieren. Dies ist auch der Fall bei endlichen Automaten, wo die Simulation einer Breitensuche im Berechnungsbaum von A auf gegebener Eingabe entspricht. Weil B dabei nach dem Lesen eines Prefixes z des Eingabewortes alle Zustgnde speichert, die A beim Lesen von z erreichen kann, nennt man die Konstruktion des EA B aus dem NEA A die Potenzmengenkonstruktion. Dieses Kapitel ist nur einigen elementaren Aspekten der Automatentheorie gewidmet und erhebt deswegen keinen weiteren Anspruch, als eine Einfiihrung in dieses Gebiet zu sein. Was die Kenntnisse der Klasse regul~irer Sprachen anbelangt, liefert diese Kapitel einen noch unwesentlicheren Beitrag. RegulS~re Sprachen k6nnen nicht nur durch andere Automatenmodelle charakterisiert werden, sondern auch durch weitere wichtige Mechanismen, die nicht auf Maschinenmodellen (Berechnungsmodellen) basieren. Die wichtigsten Beispiele solcher Formalisierungen sind die regul~iren Grammatiken als Generierungsmechanismen und die algebraische Darstellung durch regulS~re Ausdriicke. Fiir die Erweiterung des Kenntnisse fiber die Klasse der regulS~ren Sprachen empfehlen wir w~irmstens HopcroR, Motwani und Ullman [HMU 01].
Kontrollaufgaben 1. Wie kann man das Modell des endlichen Automaten mit der Hilfe von Programmen erklS~ren? Warum benutzen wit einen endlichen Automat nicht zur Modellierung von Rechnern, obwohl die Rechner (wie auch alles andere was wit kennen) endlich sind? 2. Definieren Sie einen EA formal als ein Quintupel und erkl~iren Sie die Bedeutung der 17Eine Berechnung mit der Aussage ,,x c L". lSMit dem Resultat ,,y ~ L" enden.
3.6 Zusammenfassung
123
Grundbegriffe der Theorie der Berechnungen, wie Konfiguration, Berechnungssschritt und Berechnung. 3. Erkl~tren Sie, wie die Zust~tnde eines endlichen Automaten A die Menge aller Eingaben fiber E* in endlich viele Klassen zerlegen. Wie kann dies beim Entwurf und der Verifikation eines endlichen Automaten helfen? Zeigen Sie ein paar Beispiele. 4. Entwerfen Sie basierend auf der Bedeutung der Zust~nde endliche Automaten fiir folgende Sprachen.
(i) { z l l l l p I z,y E {0, 1,2,3}*}, (ii) (iii) (iv) (v) (vi) (vii) (viii)
{ x l l O l l O Y l x, y C {O, 1,2}*}, {x010101y[ x,y E {0, 1}*}, {xOY l x ,y 6 {O,1}*}, {z0ylz I x,y, z 6 {0, 1}*}, {z E {0,1}* l lxl0 _> 3}, {x 6 {0,1}*13 _< Ixl0 _< 5}, {z001yl01zlz, p, zE{0,1}*},
(ix) {x0011lx c {0,1}*}, (x) {xl00111x c {0,1}*}, (xi) { l x l l 0 0 1 l x ~ {0,1}*}, (xii) {xll001y0 I x, y c {0, 1}*}. W~hlen Sie sich drei dieser Sprachen aus und beweisen Sie mit Induktion die Korrektheit der von Ihnen entworfenen Automaten. 5. Entwerfen Sie Automaten fiir die folgenden Sprachen. (i) {x c {0, 1}*Ix enthalt 11 als Teilwort oder endet mit dem Suffix 10},
(ii) {A,0,11, x00Ix ~ {0,1}*}, (iii) {z C {0, 1}*ix enthalt 00 oder 11 als Teilwort }. 6. Erkl~ren Sie, wie ein EA simultan mehrere endliche Automaten simulieren kann. Wenden Sie diese Simulationstechnik an, um den modularen Entwurf von endlichen Automaten fiir folgende Sprachen zu realisieren. (i) {x E {0, 1}* I Ixll ist gerade und x enthalt das Teilwort 001}, (ii) {x E {0, 1}*ix e n t h a l t das Teilwort 000 u n d x e n t h a l t das Teilwort 111}, (iii) {x C {0, 1, 2}*Ix enthalt die Teilworte 021 und 2110}, (iv) {x c {0,1}* I IXll (rood 3)= 1 und x endet mit dem Suffix 0011}. 7. Erkl~ren Sie die drei Methoden zum Beweisen, dass eine Sprache keine regul~re Sprache ist. 8. Beweisen Sie, dass folgende Sprachen nichtregul~tr sind. Wenden Sie dabei jede der drei gelernten Methoden mindestens einmal an.
(i) {o~ I~ ~ ~}, (ii) {0~12~0~ I n c IN}, (iii) { z y C {0, 1}*ix ist ein prafix yon y}, (iv) { x 2 y l x , y E {0, 1}*, Ixll lYlo}, =
(v) {o~ I~ c ~}. 9. Erkl~tren Sie das Konzept von nichtdeterministischen endlichen Automaten. Geben Sie ein Beispiel eines NEA an, der auf jeder Eingabe der L~nge n exponentiell viele unterschiedliche Berechnungen hat.
3 Endliche Automaten
124
10. Erkl~tren Sie, warum deterministische endliche Automaten nichtdeterministische endliche Automaten (trotz der M6glichkeit vieler Berechnungen auf einer Aufgabe) simulieren k6nnen. 11. Fiir welche Sprachen ist es wesentlich einfacher einen NEA als einen EA zu entwerfen? 12. Entwerfen Sie nichtdeterministische endliche Automaten fiir folgende Sprachen: (i) {zl010yl z , y c {0,1}*} O {z010l z c {0, 1}*}, (ii) {z c {0, 1 } * I x enthalt 001 oder 110 als ein Teilwort}, (iii) {z E {0, 1}* I lzl~ (rood 3) = 0 oder z = yl01z fiir y,z E {0,1}*},
(iv) {z ~ {0,1, 2}*lz enthalt eines der W6rter 012, 00, 22, 111 als Teilwort}. Wenden Sie die Potenzmengenkonstruktion fiir mindestens einen der entworfenen NEAs an, um einen/~quivalenten EA zu bauen. 13. Beweisen Sie, dass jeder EA fiir eine der folgenden Sprachen mindestens 4 Zust/~nde hat. (i) {z E {0, 1 } * l l z I ( m o d 4 ) = 2},
(ii) {z0011y I z, y C {0, 1}*}, (iii) {01zl0 I z C {0, 1}}, (iv) {z C {0, 1, 2}* I IZlo ist gerade und IXll ist teilbar durch 3}. KOnnen Sie fiir einige dieser Sprachen sogar eine h6here untere Schranke fiir die Anzahl der Zustgnde beweisen?
Die Menschen, die die Geduld haben, auch einfache Sachen vollkommen zu machen, gewinnen die F~thigkeit, auch schwere Sachen einfach zu meistern. F. Schiller
4
Turingmaschinen
4.1
Zielsetzung
Wenn man ursprtinglich in der Mathematik einen Ansatz zur L6sung gewisser Probleme vermitteln wollte, hat man ihn als eine mathematische Methode formal genau beschrieben. Eine sorgfSJtige Beschreibung einer Methode hatte die Eigenschaft, dass ein Anwender gar nicht verstehen brauchte, warum die Methode funktioniert, und trotzdem die Methode erfolgreich zur L6sung seiner Probleminstanz verwenden konnte. Die einzige Voraussetzung fiir eine erfolgreiche Anwendung war das Verst~ndnis des mathematischen Formalismus, in dem die Methode dargestellt wurde. Die Entwicklung des Rechners fiihrte dazu, dass man Methoden zur L6sung von Problemen dutch Programme beschreibt. Der mathematische Formalismus ist hier durch die benutzte Programmiersprache gegeben. Das wichtigste Merkmal aber bleibt. Der Rechner, der keinen Intellekt besitzt und daher kein Verst~ndnis fiir das Problem sowie fiir die Methode zu seiner L6sung besitzt, kann das Programm ausfiihren und dadurch das Problem 16sen. Deswegen k6nnen wit fiber automatische oder algorithmische L6sbarkeit von Problemen sprechen. Um zu zeigen, dass ein Problem automatisch 16sbar ist, reicht es aus, eine Methode zu seiner L6sung zu finden und diese in Form eines Programms (Algorithmus) darzustellen. Deswegen kommen positive Aussagen fiber algorithmische (automatische) Probleml6sbarkeit gut ohne eine Festlegung auf eine Formalisierung des Begriffs Algorithmus aus. Es reicht oft, eine Methode halb informell und grob zu beschreiben, und jedem wird klar, dass sich die Methode in die Form eines Programms umsetzen l~tsst. Daher ist es nicht verwunderlich, dass die Mathematik schon lange vor der Existenz von Rechnern die L6sbarkeit mathematischer Probleme mit der Existenz allgemeiner L6sungsmethoden I im Sinne von ,,automatischer L6sbarkeit" verkniipft hat. 1Heute wiirden wir Algorithmen sagen.
126
4 Turingmaschinen
Die Notwendigkeit der Formalisierung des Begriffs Algorithmus (L6sungsmethode) kam erst mit dem Gedanken, mathematisch die automatische Unl6sbarkeit von konkreten Problemen zu beweisen. Zu diesem Zweck hat man mehrere Formalismen entwickelt, die sich alle als gquivalent beziiglich des Begriffs ,,automatische (algorithmische) L6sbarkeit" erwiesen haben. Auch jede verntinftige Programmiersprache ist eine zul/~ssige Formalisierung der automatischen L6sbarkeit. Aber solche Formalisierungen sind nicht so gut geeignet ffir Beweise der Nichtexistenz von Algorithmen fiir konkrete Probleme, weil sie wegen der Anwendungsfreundlichkeit eine Menge komplexer Operationen (Befehle) enthalten. Daher braucht man sehr einfache Modelle, die nur ein paar elementare Operationen erlauben und trotzdem die volle Berechnungsstgrke von Programmen beliebiger Programmiersprachen besitzen. Ein solches Modell, das sich in der Theorie zum Standard entwickelt hat, ist die Turingmaschine. Die Zielsetzung dieses Kapitels ist, dieses Modell vorzustellen und so die Basis fiir die Theorie der Berechenbarkeit (der algorithmischen L6sbarkeit) und f~r die KomplexitS~tstheorie im ngchsten Kapitel zu legen. Der Stoff dieses Kapitels ist in vier Abschnitte unterteilt. Abschnitt 4.2 stellt das grundlegende Modell der Turingmaschine vor und iibt den Umgang mit Turingmaschinen. Abschnitt 4.3 prgsentiert die Mehrband-Varianten von Turingmaschinen, die das grundlegende Modell der abstrakten KomplexitS~tstheorie sind. In diesem Abschnitt wird auch die Aquivalenz zwischen Programmen in einer beliebigen Programmiersprache und Turingmaschinen diskutiert. Abschnitt 4.4 fiihrt die nichtdeterministische Turingmaschine ein und untersucht die M6glichkeiten der Simulation von nichtdeterministischen Turingmaschinen durch (deterministische) Turingmaschinen. Abschnitt 4.5 prgsentiert eine m6gliche Kodierung von Turingmaschinen als W6rter fiber dem Alphabet
~bool"
4.2
Das Modell der Turingmaschine
Eine Turingmaschine kann als eine Verallgemeinerung eines EA gesehen werden. Informell besteht sie (Fig. 4.1) aus (i) einer endlichen Kontrolle, die das Programm enthglt, (ii) einem unendlichem Band, das als Eingabeband, abet auch als Speicher (Arbeitsband) zur Verftigung steht, und
127
4.2 Das Modell der Turingmaschine
(iii) einem Lese-/Schreibkopf, der sich in beiden Richtungen auf dem Band bewegen kann. Die Ahnlichkeit zu einem EA besteht in der Kontrolle fiber einer endlichen Zustandsmenge und dem Band, das am Anfang das Eingabewort enthglt. Der Hauptunterschied zwischen Turingmaschinen und endlichen Automaten besteht darin, dass eine Turingmaschine das Band auch als Speicher benutzen kann und dass dieses Band unendlich lang ist. Das erreicht man dadurch, dass der Lesekopf des EA mit einem Lese-/Schreibkopf vertauscht wird und dass man diesem Kopf auch die Bewegung nach links erlaubt. Eine elementare Operation von Turingmaschinen kann also als folgende Aktion beschrieben werden. Die Argumente sind (i) der Zustand, in dem sich die Maschine befindet, und (ii) das Symbol auf dem Feld des Bandes, auf dem sich gerade der Lese/Schreibkopf befindet. Abhgngig yon diesen Argumenten macht die Turingmaschine folgendes. Sie (i) gndert den Zustand, (ii) schreibt ein Symbol auf das Feld des Bandes, yon dem gerade gelesen wurde 2 (dieses kann man also als ein Ersetzen des gelesenen Symbols durch ein neues Symbol sehen), und (iii) bewegt den Lese-/Schreibkopf ein Feld nach links oder rechts oder sie bewegt ihn gar nicht.
0 1 2 3 I r I Xl I X2 I X3 I unendliches Band
i-1
"~
i
i+1
I Lese-/Schreibkopf
endliche Kontrolle (Programm) Fig. 4.1
2Wo sich der Lese-/Schreibkopf gerade befindet.
n
n+l
n+2
128
4 Turingmaschinen
Wichtig dabei ist, dass I. das Band auf der linken Seite das Randsymbol r enth~it, fiber das die Turingmaschine nach links nicht weiter gehen und welches nie durch ein anderes Symbol ersetzt werden darf (Die Einfiihrung eines linken Randes ermSglicht die Nummerierung der Felder des Bandes von links nach rechts, wobei wir dem Bandfeld mit Symbol r die Nummer 0 zuordnen.), und 2. das Band nach rechts unendlich ist3, wobei die nicht beschrifteten Felder die Symbole u enthalten. Jetzt geben wir die formale Beschreibung einer Turingmaschine in der Weise an, wie wit es bei der Definition yon endlichen Automaten gelernt haben. Zuerst beschreiben wir die Komponenten und die elementaren Operationen. Dann w/~hlen wir eine Darstellung yon Konfigurationen und definieren den Berechnungsschritt als eine Relation auf Konfigurationen. Danach folgen die Definitionen yon Berechnung und der vonder Turingmaschine akzeptierten Sprache. Definition
4 . 1 . Eine
Turingmaschine
(kurz,
TM)
ist
ein
7- Tupel
M - (Q, E, F, 6, q0, qaccept~ qreject). D abei ist
(i) Q eine endliche Menge, die Z u s t a n d s m e n g e v o n M genannt wird, (~) E das E i n g a b e a l p h a b e t , wobei r und das Blanksymbol u nicht in E sind {E dient genau wie bei EA zur Darstellung der Eingabe.}, E F, (iii) F ein Alphabet, A r b e i t s a l p h a b e t genannt, wobei E c_ F, r
rnQ-0 {F enthiilt alle Symbole, die in Feldern des Bandes auftreten diirfen, d.h. die Symbole, die M als Speicherinhalte (variable Werte) benutzt.}, 5" (Q - {qaccept~ qreject}) X F --+ Q x P x {L~ R~ N} r162 Abbild~Ttg, Wberg a n g s f u n k t i o n v o n M genannt, mit der Eigenschaft
5(q,r
Q •
{r • {R, N}
fiir alle q E Q {6 beschreibt die elementave Operation von M. M kann eine Aktion (q. x . z ) e Q • r • {L. R. N} ~ ~ . ~ ~ k t ~ l l ~ Z ~ t ~ d p b~.~ L ~ ~ 3Man bemerke, dass man in endlicher Zeit h6chstens endlich viele Felder des Bandes beschriften kann und damit die aktuelle SpeichergrSfie (die Anzahl der Nicht-u-Felder) immer endlich ist. Der Sinn der Forderung eines unbeschr/inkten Speichers ist nur, dass man nach Bedarf einen beliebig grofien endlichen Speicher zur Verfiigung hat.
4.2 Das Modell der Turingmaschine
129
. .
( ii)
tet den Ubergang von p nach q, das Ersetzen von Y dutch X und die Bewegung des Kopfes entsprechend Z. Z = L bedeutet die Bewegung des Kopfes nach links, Z = R nach rechts und Z = N bedeutet keine Bewegung. Die Eigenschaft 5(q, r E Q • {r • {R, N} verbietet das Ersetzen des Symbols r dutch ein anderes Symbol und die Bewegung des Kopfes nach links iiber die Randbezeichnung r qo C Q der A n f a n g s z u s t a n d , qaccept E Q der a k z e p t i e r e n d e Zustand { M hat genau einen akzeptierenden Zustand. Wenn M den Zustand qaccept erreicht, akzeptiert M die Eingabe, egal wo sich dabei der Kopf auf dem Band befindet. Aus qaccept ist keine Aktion von M mehr mSglich.}, qreject E Q -- {qaccept} der v e r w e r f e n d e Zustand { Wenn M den Zustand qreject erreicht, dann endet damit die Berechnung und M verwirft die Eingabe. Das heiflt insbesondere auch, dass M nicht die komplette Eingabe lesen muss, urn sie zu akzeptiern bzw. zu
Eine K o n f i g u r a t i o n
C von M i s t ein Element aus
Konf(M) = (r
F*. Q. F + U Q. { r
F*.
{Eine Konfiguration wlqaw2, wl C {r w2 E F*, a C F, q E Q (Fig. ~.2), ist eine vollstiindige Beschreibung folgender Situation. M ist im Zustand q, der Inhalt des Bandes ist r und der Kopf steht auf dem ([Wl[ + 1)ten Feld des Bandes und liest das Symbol a. Eine Konfiguration pr p E Q, w E F*, beschreibt die Situation, in der der Inhalt des Bandes r ist und der Kopf auf dem O-ten Feld des Bandes steht und das Randsymbol r liest. 4} W1
a
w2
uu 9 9 9
t
q
Fig. 4.2 4Man bemerke, dass man fiir die Darstellung der Konfigurationen zwischen mehreren guten M6glichkeiten wghlen kann. Z.B. k6nnte man die Darstellung (q, w, i) c Q x F* x IN verwenden, um die Situation zu beschreiben, in der M im Zustand q ist, Wuuu... auf dem Band steht und der Kopf auf dem/-ten Feld des Bandes steht.
130
Eine Ein
(--K-
4 Turingmaschinen
Startkonfiguration Schritt
von
fiir
M
C Konf(M)
ist
eine
Eingabewort
Relation
• Konf(M))
xlx2
ein
---j--
definiert
9 .. xi-lqxixi+l
x
auf
der
ist
qor
Menge
der
Konfigurationen
durch
9 .. Xn
--if- X l X 2
9 .. Xi-lpyxi+l
9 .. Xn~
f~ll~ ~(q~ ~ ) : (;~ y~ N) (Fig. ~.J(~))~ XlX2 9 9 9 X i - l q x i x i + l
9 9 9Xn
--M--
XlX2 9 9 9 X i - 2 p X i - l Y X i + l
9 9 9Xnv
f~ll~ 5(q, ~ ) = (p, y, L) (rig. 4.J(b)), xlx2
. . . xi-lqxixi+l
xlx2
...
x~_lqx~
9 9 9Xn
--K- x l x 2
~
XlX2
...
x~-lypu
9 9 9Xi-lypxi+l
9 9 9 Xn~
f~ll~ 5(q~ ~ ) = (p~ y~ R) (Fig ~ J(d))
Xl
x2
...
xi-1
xi
xi-}-i
...
Xn
...
xl
x2
9 9 9
xi--1
y
xi§
9 9 9
Xn
9 9 9
Xl
x2
9 9 9
xi-1
y
Xi§
9 9 9
Xn
9 9 9
Xi§
9 9 9
Xn
9 9 9
(a) xl
x2
...
xi-1
xi
xi-J-1
...
xn
...
-~
(b)
Xl
x2
...
xi-1
xi
xi-}-i
...
xn
...
Xl
X2
9 9 9
Xi--1
y
) f
Xl
Fig. 4.3
X2
9 9 9
Xn--1
Xn
9 9 9
Xl
X2
...
Xn--1
y
U
"'"
4.2 Das Modell der Turingmaschine
131
Eine Berechnung yon M ist eine (potentiell unendliche) Folge von Konfigurationen Co, C1, C2,..., so dass Ci ~ Ci+l fiir alle i - O, 1, 2, .... Wenn Co ~ C1 ~ ... ~ Ci fiir ein i E IN, dann Co - ~ Ci. Die Berechnung yon M auf einer Eingabe x ist eine Berechnung, die mit der Startkonfiguration Co - qor beginnt und entweder unendlich ist oder in einer Konfiguration w l q w 2 endet, wobei q E {qaccept, qreject}Die Berechnung von M auf x heiflt akzeptierend, falls sie in einer akzeptierenden Konfiguration wlqacceptW2 endet. Die Berechnung yon M auf x heiflt verwerfend, wenn sie in einer verwerfenden Konfiguration WlqrejectW2 endet. Eine nicht-akzeptierende Berechnung von M auf x ist entweder eine vetwerfende oder eine unendliche Berechnung von M auf x. Die v o n d e r T u r i n g m a s c h i n e L(M)
M akzeptierte Sprache ist
- {w E E* I qor
-~-yqaccept Z, fiir iFgeTtdwelche y , z E P*}.
Wit sagen, dass M eine Funktion F " E* --+ F* berechnet, falls f{<
9 qor
9
Eine Sprache heiflt r e k u r s i v aufz~ihlbar, falls eine T M M existiert, so dass L- L(M). s
{ L ( M ) I M ist eine TM}
ist die Menge aller rekursiv aufz~ihlbaren Sprachen. 5 Eine Sprache L c_ E* heiflt r e k u r s i v ( e n t s c h e i d b a r 6 ) , falls L eine TM M , fiir die fiir alle x E E* gilt:
(i)
qor qor
L ( M ) fiir
-~-YqacceptZ, Y, Z E F*, falls x E L und ~ UqrejectV, U, V E r*, falls x ~ L.
{Dies bedeutet, dass M keine unendlichen Berechnungen besitzt.} Wenn (i) und (ii) gelten, sagen wir, dass M auf jeder Eingabe h~ilt oder dass M i m m e r h~ilt. 5Die Bezeichnung s kommt aus dem Englischen ,,recursively enumerable". aGenauer miisste man sagen, dass das Entscheidungsproblem (E, L) entscheidbar ist.
132
4 Turingmaschinen
{Eine TM, die immer hiilt, ist ein formales Modell des Begriffs Algorithmus.} s
{L(M) I M ist eine TM, die immer hiilt}
ist die M e n g e d e r r e k u r s i v e n ( a l g o r i t h m i s c h e r k e n n b a r e n )
Sprachen.
Eine Funktion F" E~ ~ E~ fiir zwei Alphabete E,, E2 heiflt t o t a l b e r e c h e n b a r , falls eine TM M existiert, die F berechnet, r Die Turingmaschinen, die immer halten, reprgsentieren die Algorithmen, die immer terminieren und die richtige Ausgabe liefern. So sind gerade die rekursiren Sprachen (entscheidbaren Entscheidungsprobleme) die Sprachen (Entscheidungsprobleme), die algorithmisch erkennbar (15sbar) sind. Aufgabe 4.1. Andern Sie die Definition einer TM, indem Sie als Konfiguration die Tripel (q, Cw, i) C Q • {r • IN nehmen. Ein Tripel (q, Cw, i) beschreibt die Situation, wenn die TM im Zustand q ist, der Bandinhalt Cwuuu... ist und der Kopf auf das i-te Feld des Bandes zeigt. Geben Sie dann eine Definition des Schrittes und der Berechnung, die mit dieser Darstellung yon Konfigurationen arbeitet. Im Folgenden zeigen wir ein paar konkrete Turingmaschinen und ghnlich wie bei endlichen A u t o m a t e n entwickeln wir eine anschauliche graphische Darstellung von Turingmaschinen. Sei LMitt~ = {w 6 (P,boo,)*lW- xly, wobei I x [ - [y[}. So enthglt LMitte alle W 6 r t e r ungerader Lgnge, die in der Mitte eine 1 haben. Aufgabe 4.2. Beweisen Sie, dass LMitte ~ Z:(EA). Wir beschreiben eine TM M, so dass L(M) = LMitte. Die Idee ist, zuerst zu /iberpriifen, ob die Eingabelgnge ungerade ist und dann das mittlere Symbol zu bestimmen. Sei M = (Q, E, F, 5, q0, qaccept, qreject), wobei Q = {q0, qeven, qodd~ qaccept, qreject, qA, qB, ql, qleft ~qright, qmiddle}, r=
{0, 1},
r = E u {r
u (E • { A , B } ) und
a(q0, r 5(q0, a) (~(qeven, b)
---
(qeven, r Dr), (qreject, a, N) fi/lr &lle a E {0, 1, ,,}, (qodd, b, R) f ~ ~1~ b e {0, 1},
rBeachten Sie, dass die TM M immer hglt.
4.2 Das Modell der Turingmaschine
133
(~(qeven, II) = (~(qodd, b) =
(qreject, II, g), (qeven, b, l:{) fiir alle b E {0, 1},
(~(qodd, .,) =
(qB, u,
L).
Wir beobachten, dass nach dem Lesen eines PrSofixes gerader (ungerader) LS~nge M i m Zustand qeven (qodd) ist. Wenn also M das Symbol u im Zustand qeven liest, ist das Eingabewort gerader L~nge und muss verworfen werden. Wenn M das Symbol u im Zustand qodd liest, geht M in den Zustand qB fiber, in dem die zweite Phase der Berechnung anfgngt. In dieser Phase bestimmt M die Mitte des Eingabewortes, indem M abwechselnd das am weitesten rechts stehende Symbol a E {0, 1} in (;) umwandelt und das am weitesten links stehende Symbol b E {0, 1} durch (Ab) ersetzt. Dieses kann man mit folgenden Transitionen (0berg~ngen) realisieren:
~(q,,a)
-
-
(ql, (B)' L) ftir alle a E {0, 1},
5(ql, a) (~(ql, c)
:
(qleft, a, L) fiir alle 8 C {0, 1},
--
(qmiddle, C, _~) ftir alle c E {r (A), (A)},
(~(qmiddle, (O))
=
(qreject, O, N),
= ~(q~oft, ~) = ~(q~of~, ~) ---
(~(qmiddle, ( ; ) )
(~(qright, b) (~(qright, d)
= -
(qaccept ~ 1~ N)~ (qleft,a, L) ftir alle a E {0, 1}, (qA, c, R) fiir alle c E { ( o ) , (A), r (qright, (b), R) ftir alle b E {0, 1}, (qright, b, l:{) ftir alle b E {0, 1}, (q,, d, L) f/Jr alled E {(o), (;)}.
Die fehlenden Argumentenpaare wie z.B. (qright, ~) k6nnen nicht auftreten und deswegen kann man die Definitionen von ~ so vervollstSmdigen, dass man ftir alle fehlenden Argumente den Ubergang nach qreject hinzunimmt. Wenn man einen Befehl (~(q,a) = ( p , b , X ) f/Jr q,p E ~, a,b E E und X E {L, R, N} graphisch wie in der Fig. 4.4 darstellt, dann kann man die konstruierte TM M wie in Fig. 4.5 darstellen. Diese graphische Darstellung ist 5~hnlich zu der bei endlichen Automaten. Der Unterschied liegt nur in der Kantenbeschriftung, bei der zusS~tzlich zu dem gelesenen Symbol a noch das neue Symbol b und die Bewegungsrichtung X notiert wird.
134
4 Turingmaschinen
a~b,X
Fig. 4.4
(g) + o , N 1 ---~ 1, N 0-+ O,N
u --, u , N
U~u~N
O~O,R
@
0 --+ O,R
u --+ u,L -~ 1, R R ~
Jo--+ 1--+
1
(~ (~),L
(o)--+ (o), L (1) + (1), L
0~0, L I~I,L r162
o+o,I~
i,
)
(~)
_.._+
(~), R
0 + d),R
1+ (~),
r -~r (~) + (~),R
0~0, R i-+ I,R
(~)-~ (~), R
1 Fig. 4.5
Betrachten wir jetzt die Arbeit von M auf dem Eingabewort z - 1001101. Die erste Phase der Berechnung von M auf x l~uft wie folgt"
q0r
Cqevenl001101 ~ r r M~--r r ~ r
M~ r M~ r ~ r
135
4.2 Das Modell der Turingmaschine
Das Erreichen des Zustandes qB bedeutet, dass z eine ungerade L/~nge hat. Jetzt wird 2F/abwechselnd die Symbole a am rechten Rand durch (]3) und am linken Rand d urch (A) ersetzen.
r
r r
~ r M~-r
r
~ r
q~ftr
M~-r
r
M~ r
0qright0110(1)
r (A) 00110qright(1) ~ r (A) 0011qB0(1) r (~ (B) M~-r (~ (B) Cql~ft(~)O011(~ (;) M~-r (~ (B) r
(O)qright011 (O)(;)
r (~) (~) 011qright (O) (;) r (O) 01qB1 (O)(1)
r (~)Oqli(;)(o)(;) r (A) qleft(O) 01 (1) (O) (1)
(o)q 01 (1)(o)(1) r
(A) (A) qright1(1) (O)(1)
r (~) (o) (o) lqright(1) (O) (1) r(A) (A) (a) qB1(~)(O)(~)
r
(A)ql(A)(;)(i)(BO)(i)
r
(O)(O)qmiddle(1)(1)(O)(1)
1(1)(o)(1) Aufgabe 4.3. Schreiben Sie die Berechnung 010011 und I01 auf.
von der TM
M
aus Fig. 4.5 auf den W6rtern
Aufgabe 4.4. Die TM M aus Fig. 4.5 arbeitet so, dass sie die ganze Zeit die Information fiber die urspriingliche Eingabe beh/ilt. Nutzen Sie diese Eigenschaft aus, um M zu einer
TM M ~zu erweitern, so dass L(M ~) = {w c {0, 1}*lw = xlx fiir ein x c {0, 1}*}.
Betrachten wir jetzt die Sprache L~ - {02" I n C IN- {0}}. Eine TM, die L~ akzeptiert, kann folgende Strategie verfolgen:
4 Turingmaschinen
136 a --~ a,R
a --~ a,R
%v
r162
O~O,L a --+ a , L
a ---~ a , L
O~O,L Fig. 4.6 1. Laufe fiber das B a n d yon r bis z u m ersten u (yon links nach rechts) u n d ,,16sche" jede zweite 0, d.h. ersetze sie durch a. Falls die Anzahl von Nullen auf d e m B a n d ungerade ist, h a r e im Z u s t a n d qreject- Sonst, fahre fort mit Schritt 2. 2. Laufe fiber das B a n d von dem a m weitesten links stehenden u his z u m r u n d iiberprtife, ob auf d e m B a n d genau eine Null oder mehrere Nullen stehen. 9 Falls auf d e m B a n d genau eine Null steht, akzeptiere. 9 Falls auf d e m B a n d mindestens zwei Nullen stehen, wiederhole Schritt 1. Die Idee dieser Strategie ist, dass m a n eine Zahl 2 i mit i _> 1 solange ohne Rest durch 2 teilen kann, his m a n eine 1 erhglt. Eine m6gliche Realisierung dieser Strategie in F o r m einer T M ist A - ({q0, qeven~ qodd~ ql~ q2~ q3~ qaccept ~qreject }~ {0}~ {0, a, r u}, ~A, q0, qaccept, qreject) mit der graphischen Darstellung in Fig. 4.6. Aufgabe 4.5. Eine andere Strategie die Sprache L p zu erkennen ist, die Eingabe 0~ im ersten Lauf durch das Band in 0J l J umzuwandeln, falls i - 2j gerade ist. Im n/~chsten Lauf iiberpriift man, ob j gerade ist, indem man im positiven Fall 0Jl j dutch 0~ 1~ lJ ersetzt. Akzeptiert wird nur wenn durch diese Art des Halbierens auf dem Band das Wort 01 i-1
4.3 Mehrband-Turingmaschinen und Church'sche These
137
erzeugt wurde. Dieses Halbieren kSnnte man mit der Strategie zur Suche der Mitte einer Eingabe realisieren. Konstruieren Sie eine TM, die als eine Implementierung des beschriebenen Verfahrens gesehen werden kann. A u f g a b e 4.6. Entwerfen Sie Turingmaschinen ftir folgende Sprachen: (i) {anb n I n E IN}, (ii) {x:/=/:y l x, y E {0, 1}*, N u m m e r ( x ) = N u m m e r ( y ) + 1} (iii) {w://:w I w E {0, 1}*}, (iv)* {0 n~ ] n C IN}. A u f g a b e 4.7. Entwerfen Sie Turingmaschinen, die fiir jedes Wort x c (Ebool)* im Zustand qaccept mit folgendem Bandinhalt halten: (i) (ii) (iii) (iv)
4.3
y c (Ebool)*, so dass N u m m e r ( y ) = N u m m e r ( x ) + 1, x:/Cx, z E (Ebool)*, so dass N u m m e r ( z ) = 2. N u m m e r ( x ) , ###x.
Mehrband-Turingmaschinen und Church'sche These
Die Turingmaschinen sind das Standardmodell der Theorie der Berechenbarkeit, wenn es um die Klassifizierung der Entscheidungsprobleme in rekursive (rekursiv aufzS~hlbare) und nicht rekursive (nicht rekursiv aufzS~hlbare) geht. Dieses Modell ist aber nicht so gut ftir die KomplexitS~tstheorie geeignet. Der Hauptpunkt der Kritik ist, dass dieses Modell nicht dem des allgemein akzeptierten Modells des Von-Neumann-Rechners entspricht. Dieses fordert, dass alle Komponenten des R e c h n e r s - Speicher fiir Programm, Speicher fiir Daten, CPU und das E i n g a b e m e d i u m - physikalisch unabhS~ngige Teile der Rechners sind. In dem Modell der Turingmaschine sind das Eingabemedium und der Speicher eins - das Band. Der zweite Kritikpunkt ist die zu starke Vereinfachung in Bezug auf die benutzten Operationen und die LinearitS~t des Speichers. Wenn man nS~mlich zwei Felderinhalte, die weit voneinander entfernt liegen, vergleichen m6chte, braucht man mindestens so viele Operationen (Berechnungsschritte) wie die zwei Felder voneinander entfernt liegen. Das folgende Modell der Mehrband-Turingmaschine ist das grundlegende Modell der KomplexitS~tstheorie. F/Jr jede positive ganze Zahl k hat eine k-BandTuringmaschine folgende Komponenten (Fig. 4.7): 9 eine endliche Kontrolle (Programm),
4 Turingmaschinen
138 9 ein endliches Band mit einem Lesekopf, 9 k Arbeitsb~nder, jedes mit eigenem Lese/Schreibkopf.
w
I$1
Eingabeband
A Lesekopf [ Progamm [ Lese- / S chreibk6p fe 1. Arbeitsband
2. Arbeitsband
u
...
k-tes Arbeitsband
Fig. 4.7 Am Anfang jeder Berechnung auf einem Wort w ist die k-Band-Turingmaschine in folgender Situation. 9 Das Eingabeband enthglt r wobei r und $ die linke bzw. die rechte SeRe der Eingabe markieren. 9 Der Lesekopf des Eingabebandes zeigt auf r 9 Der Inhalt aller ArbeitsbS~nder ist Cuuu... und deren Lese-/Schreibk6pfe zeigen auf r 9 Die endliche Kontrolle ist im Anfangszustand q0. WS~hrend der Berechnung diirfen sich alle k + 1 K6pfe in beide Richtungen links und rechts bewegen, nur darf sich kein Kopf fiber das Randsymbol r nach links bewegen und der Lesekopf des Eingabebandes darf sich nicht fiber das rechte Randsymbol $ nach rechts bewegen. Der Lesekopf darf nicht schreiben, und deswegen bleibt der Inhalt r des Eingabebandes wghrend der ganzen
4.3 Mehrband-Turingmaschinen und Church'sche These
139
Berechnung gleich. Ftir die Feldinhalte der ArbeitsbS~nder betrachtet man wie bei einer TM ein Arbeitsalphabet F. Die Felder aller k + 1 Bgnder kann man von links nach rechts nummerieren, beginnend mit 0 bei r So kann man eine Konfiguration einer k-Band-TM M wie folgt darstellen. Eine Konfiguration (q, w, i, Ul, il, U2, i 2 , . . . , u~, ik) ist ein Element aus Q x E* x IN x (F x IN) ~
mit folgender Bedeutung: 9 M ist im Zustand q, 9 der Inhalt des Eingabebandes ist r und der Lesekopf des Eingabebandes zeigt auf das i-te Feld des Eingabebandes (d.h. falls w = ala2.., an dann liest der Lesekopf das Symbol ai), 9 ftir j E {1, 2, . . . . . . ist der Inhalt des j-ten Bandes Cujuuu..., und ij <_ lujl ist die Position des Feldes, auf das der Kopf des j-ten Bandes zeigt. Die Berechnungsschritte von M kSnnen mit einer Transitionsfunktion
• (r u {r $ } ) • r
# • {L,R,N} • (r • {L, R, N})
beschrieben werden. Die Argumente (q, a, b l , . . . , bk) E Q x (}-]u{r $ } ) x r k sind der aktuelle Zustand q, das gelesene Symbol a E E U {r $} auf dem Eingabeband und die k Symbole b l , . . . , bk E F, auf denen die KSpfe der Arbeitsbgnder stehen. Diese k Symbole werden yon den K6pfen der k ArbeitsbS~nder durch andere Symbole ersetzt, und die Position aller k + 1 K6pfe wird um maximal 1 geS~ndert. Die Eingabe w wird yon M akzeptiert, falls M in der Berechnung auf w den Sonderzustand qaccept erreicht. Die Eingabe w wird nicht akzeptiert, falls M die Eingabe w i m Zustand qreject verwirft oder die Berechnung von M auf w nicht terminiert (unendlich ist). Wir verzichten auf die formale Definition der k-Band-Turingmaschine. Der oben gegebenen Beschreibung folgend ist die Herstellung einer solchen Definition eine Routinearbeit und wir iiberlassen dies dem Leser zum Training. Aufgabe 4.8. Geben Sie eine exakte formale Definition einer k-Band-Turingmaschine. Folgen Sie dabei allen Schritten der Definition von Turingmaschinen.
140
4 Turingmaschinen
F/Jr jedes k E I N - {0} nennen wir eine k-Band-Turingmaschine (k-BandTM) auch M e h r b a n d - T u r i n g m a s c h i n e ( M T M ) . Weil die Operationen einer MTM ein bisschen komplexer als die elementaren Operationen einer TM sind, kann man erwarten, dass Mehrband-Turingmaschinen gewisse Probleme einfacher oder schneller als Turingmaschinen 15sen kSnnen. Betrachten wir die Sprache Lgleich : {W--~W I W E (~bool)*}. Eine TM, die das erste w mit dem zweiten w vergleicht, muss mit dem Kopf fiber das Band viele Male fiber lange Entfernungen hin und her laufen.
I el...
9 I'...
Fig. 4.8 Eine 1-Band-TM A kann Lgleich mit folgender Strategie einfach erkennen: 1. A iiberpriift, ob die Eingabe die Form x # y mit x, y E (~bool)* hat. s Falls nicht, verwirft A die Eingabe. 2. Fiir die Eingabe x # y kopiert A das Wort x auf das Arbeitsband (d.h. nach diesem Schritt entha~t das Arbeitsband Cx (Fig. 4.8)). 3. A positioniert den Kopf des Arbeitsbandes auf r Dann bewegt A simultan beide KSpfe nach rechts und vergleicht x und y. Falls x r y, liest A in einem der Schritte zwei unterschiedliche Symbole. In diesem Fall verwirft A die Eingabe. Falls alle Paare yon Symbolen gleich sind und beide K6pfe gleichzeitig u erreichen, akzeptiert A die Eingabe. Eine Transition 5(p, a, b) = (q, X, d, Y) einer 1-Band-TM kann man graphisch wie in Fig 4.9 darstellen. Der Ubergang yon p zu q findet beim Lesen von a auf dem Eingabeband und gleichzeitigem Lesen yon b auf dem Arbeitsband SDies bedeutet, dass A wie ein EA einfach verifizieren kann, ob die Eingabe genau ein r hat.
4.3 Mehrband-Turingmaschinen und Church'sche These
@
141
a , b ~ X,d,Y @
Fig. 4.9 statt. Das Symbol b wird durch d ersetzt, X E {L, R, N} determiniert die Bewegung des Lesekopfes auf dem Eingabeband und Y E {L, R, N} determiniert die Bewegung des Kopfes auf dem Arbeitsband. Entsprechend dieser graphischen Darstellung (Fig. 4.9) gibt Fig. 4.10 die Beschreibung einer 1-Band-TM M, die eine Implementierung der oben beschriebenen Strategie zur Erkennung y o n Lgleic h ist. Die ZustS~nde q0, ql, q2 und qreject benutzt man zur Realisierung des ersten Schrittes der Strategie. Falls die Eingabe genau ein r enthS~lt, erreicht M den Zustand q2 mit dem Lesekopf auf dem letzten Symbol der Eingabe. Sonst endet M in qreject. Der Zustand q2 wird benutzt, um den Lesekopf zuriick auf das linke Randsymbol r zu bringen. Im Zustand qcopy kopiert M das PrS~fix der Eingabe bis zum r auf das Arbeitsband (Fig. 4.8) und im Zustand qadjust kehrt der Kopf des Arbeitsbandes zurtick auf r Der Vergleich yon x und y des Eingabewortes x--ICy findet im Zustand qcompare statt. Falls x - y, endet M im Zustand qaccept. Falls x und y sich im Inhalt auf irgendeiner Position unterscheiden oder unterschiedliche LS~ngen haben, endet M i m Zustand qrejectAufgabe 4.9. Beschreiben Sie informell und auch in der Form eines Diagramms 1-BandTuringmaschinen, die folgende Sprachen akzeptieren: (i) L = {anbn i n E IN}, (ii) L = { w E (Ebool)*iiwi0=iwI1}, (iii) L = {anbncn i n c IN}, (iv) L = {www I w C (Ebool)*}, (v) L = {an21 n C IN}. Wir haben jetzt zwei unterschiedliche M o d e l l e - die TM und die MTM. Um beide gleichzeitig benutzen zu dfirfen, mfissen wir deren Aquivalenz beziiglich der Menge der akzeptierten Sprachen beweisen. Seien A und B zwei Maschinen (TM, MTM), die mit dem gleichen Eingabealphabet E arbeiten. Im Folgenden sagen wir, dass eine M a s c h i n e A fiquivalent zu e i n e r M a s c h i n e B ist, falls f/Jr jede Eingabe x E (2bool)*: (i) A akzeptiert x e=~ B akzeptiert x, (ii) A verwirft x e=~ 13 verwirft x, (iii) A arbeitet unendlich lange auf x e=~ B arbeitet unendlich lange auf x.
4 Turingmaschinen
142 .
S
1,r ~ R , r 0,r ~ R , r r162~ R , r
1,r ~ R , r 0,r ~ R , r
$,r ~ N , r
:/#, r ~ N, r N
.
1, 0 0, 1 $, 0 $, 1 0, u 1, u
1,r ~ L,r
r r ---, R, r R
Ir
~ N, 0, N ~ N, 1, N ---, N, 0, N ~ N, 1, N ~ N,u,N ~ N,u,N
~r
1, u ~ R, 1, R 0, u ~ R, 0, R
I
#,u~N,u,L
@,0 ~ N, 0, L @, 1 ~ N, 1, L
R,r
$,u ~ N , u , N ~
0,0 ~ R, 0, R 1, 1 ~ R, 1, R
Fig. 4.10 Es ist klar, dass L(A) : L(B), wenn A und B 5~quivalent sind. Die Tatsache L(A) = L ( B ) ist aber keine Garantie dafiir, dass A und B 5~quivalent sind. L e m m a 4.1. Zu jeder TM A existiert eine zu A iiquivalente 1-Band-TM B.
Beweis. Wir beschreiben die Simulation yon A durch t3, ohne die formale Konstruktion von B aus A anzugeben. B arbeitet in zwei Phasen:
4.3 Mehrband-Turingmaschinen und Church'sche These
143
1. B kopiert die ganze Eingabe w auf das Arbeitsband. 2. B simuliert Schritt fiir Schritt die Arbeit von A auf dem Arbeitsband (dies bedeutet, dass B auf dem unendlichen Arbeitsband genau das Gleiche tut was A auf seinem unendlichen Eingabeband gemacht hS~tte). Es ist klar, dass A und B gquivalent sind. Aufgabe 4.10. Geben Sie eine formale Konstruktion einer 1-Band-TM B, die gquivalent zu TM A = (Q, E, F, 5, q0, qaccept,qreject) ist. Im Folgenden werden wir meistens auf formale Konstruktionen von Turingmaschinen und formale Beweise der Aquivalenzen (oder von L(A) - L ( B ) ) verzichten. Der Grund ist ghnlich wie bei der Beschreibung von Algorithmen oder bei formalen Beweisen der Korrektheit von Programmen. Wir ersparen uns viel Kleinarbeit, wenn uns intuitiv klar ist, dass ein P r o g r a m m (eine TM) die gewiinschte Tgtigkeit realisiert, und wir auf einen formalen Beweis verzichten. L e m m a 4.2. Fiir jede Mehrband-TM A existiert eine zu A iiquivalente TM B.
Beweis. Sei A eine k-Band-Turingmaschine fiir ein k E I N - {0}. Wir zeigen, wie sich eine TM B konstruieren lgsst, die Schritt fiir Schritt A simulieren kann. Eine gute Strategie, um so eine Simulation zu erklgren, ist, zuerst die Darstellung yon Konfigurationen der zu simulierenden Maschine A festzulegen, und dann erst die Simulation der einzelnen Schritte zu erklgren. Die Idee der Darstellung der aktuellen Konfiguration von A und B ist in Fig. 4.11 anschaulich beschrieben. B speichert die Inhalte aller k + 1 Bgnder von A auf seinem einzigen Band. Anschaulich gesehen zerlegt B sein Band in 2(k + 1) Spuren. Dies kann man wie folgt erreichen. Falls F A das Arbeitsalphabet von A ist, so ist
-
u {r $, ,,}) • {,,, 1"} x
x {,,, 1-}) u
u {r
das Arbeitsalphabet yon B. F/Jr ein Symbol ct = (ao, a l , a 2 , . . . ,a2k+l) E FB sagen wir, dass ai auf d e r / - t e n Spur liegt. Daher bestimmen d i e / - t e n Elemente der Symbole auf dem Band yon B den Inhalt d e r / - t e n Spur. Eine Konfiguration (q, w, i, Xl, il, x2, i 2 , . . . , xk, ik) von A ist dann in B wie folgt gespeichert. Der Zustand q ist in der endlichen Kontrolle von B gespeichert. Die 0-te Spur des Bandes yon B enthglt r d.h. den Inhalt des Eingabebandes yon A. F/Jr alle i E {1,..., k} enthalt die (2i)-te Spur des Bandes von B das Wort Cx~, d.h.
144
4 Turingmaschinen
A
I
is1
W
I* I,,...
B: U
U
U
U
U
U
T
U
U
r U
Xl
U
U
T
U
U
U
U
U
U
T
U
zl
r U
T
z2
X2
r
1
;
xk
Fig. 4.11
den Inhalt des/-ten Arbeitsbandes von A. Fiir alle i E { 1 , . . . , k}, bestimmt die (2i + 1)-te Spur mit dem Symbol T die Position des Kopfes auf d e m / - t e n Arbeitsband yon A. Ein Schritt von A kann jetzt durch folgende Prozedur von B simuliert werden: 1. B liest einmal den ganzen Inhalt seines Bandes von links nach rechts und speichert dabei in seinem Zustand die k + 1 Symbole 9, die bei den k + 1 K6pfen von A gelesen worden sind (das sind genau die Symbole der geraden Spuren, auf die die Symbole T auf den ungeraden Spuren zeigen). 2. Nach der ersten Phase kennt B das ganze Argument (der Zustand yon A ist auch in dem Zustand yon B gespeichert) der Transitionsfunktion yon A und kann also genau die entsprechenden Aktionen (K6pfe bewegen, Ersetzen von Symbolen) von A bestimmen. Diese Anderungen fiihrt B in einem Lauf fiber sein Band yon rechts nach links durch.
A u f g a b e 4.11. Geben Sie eine formale Konstruktion einer TM an, die die Phase 1 der Simulation eines Schrittes von A aus Lemma 4.2 realisiert. 9Dies bedeutet, dass die Zustandsmenge von t3 die Menge Q • (EU{0, $}) • F k enth~lt, was kein Problem ist, da diese Menge endlich ist.
4.3 Mehrband-Turingmaschinen und Church'sche These
145
D e f i n i t i o n 4.2. Zwei Maschinenmodelle (Maschinenklassen) A und B fiir Entscheidungsprobleme sind ~iquivalent, falls
(i) fiir jede Maschine A E A eine zu A ~iquivalente Maschine B E B existiert, und (ii) fiir jede Maschine C E B eine zu C iiquivalente Maschine D E A existiert. Aufgabe 4.12. Geben Sie eine formale Definition der Aquivalenz von zwei Maschinen an, die Funktionen von E* nach F* berechnen. Formulieren Sie dazu die Definition der Aquivalenz von zwei Maschinenklassen zur Berechnung von Funktionen. Aus den L e m m a t a 4.1 und 4.2 erhalten wir direkt das folgende Resultat. S a t z 4.1. Die
Maschinenmodelle Turingmaschinen sind iiquivalent.
von
Turingmaschinen
und
Mehrband-
Die Kenntnis, dass diese beiden Maschinenmodelle als gleichberechtigt zur A1gorithmenmodellierung betrachtet werden diirfen, erleichtert unsere Arbeit. Wenn wit beweisen wollen, dass eine Sprache rekursiv oder rekursiv aufz~hlbar ist, reicht es, eine Mehrband-TM fiir diese Sprache zu konstruieren (was meistens einfacher ist, als eine TM zu konstruieren). Wenn wir aber zeigen wollen, dass eine Sprache nicht rekursiv oder nicht rekursiv aufz~hlbar ist, werden wir mit der Nichtexistenz einer entsprechenden TM argumentieren. Die Situation ist vergleichbar damit, dass man eine h6here Programmiersprache zum Beweis algorithmischer L6sbarkeit eines gegebenen Problems benutzt, und Assembler oder Maschinencode zum Beweis algorithmischer Unl6sbarkeit benutzt. Dies ist genau das, was im n~tchsten Kapitel behandelt wird. Deswegen k6nnte es fiir uns auch hilfreich sein, die Aquivalenz zwischen Turingmaschinen und einer h6heren Programmiersprache zu beweisen. Ein formaler Beweis erfordert eine grofie Menge an technischer Kleinarbeit, die sehr zeitaufwendig ist. Deshalb erkl~ren wir nur die Idee, wie man eine solche Aquivalenz zeigt. Dass man fiir jede TM ein ~tquivalentes P r o g r a m m schreiben kann, glaubt hoffentlich jeder in der Programmierung ein bisschen erfahrene Leser. Man kann sogar noch etwas B e s s e r e s - einen Interpreter fiir Turingmaschinen schreiben. Ein Interpreter CTM fiir Turingmaschinen bekommt eine Beschreibung einer TM M in einem festgelegten Formalismus und ein Eingabewort fiber dem Eingabealphabet yon M. Danach simuliert CTM die Arbeit yon M auf w.
146
4 Turingmaschinen
Wie kann m a n jetzt zu einem P r o g r a m m einer komplexeren P r o g r a m m i e r sprache eine T M bauen? Dazu sollte sich m a n den Weg der Entwicklung der P r o g r a m m i e r s p r a c h e n anschauen. A m Anfang hat m a n nur in Assembler oder sogar noch in Maschinencode p r o g r a m m i e r t . Die einzigen e r l a u b t e n Operationen waren Vergleiche von zwei Zahlen und die a r i t h m e t i s c h e n O p e r a t i o n e n . Alle anderen Befehle w u r d e n als kleine P r o g r a m m e aus diesem G r u n d r e p e r toire z u s a m m e n g e s e t z t , u m dem P r o g r a m m i e r e r die Arbeit zu vereinfachen. Deswegen werden wir keine Zweifel an der Aquivalenz von Assembler u n d beliebigen P r o g r a m m i e r s p r a c h e n haben; insbesondere weil wir wissen, dass die Compiler P r o g r a m m e in h6heren P r o g r a m m i e r s p r a c h e n in Assembler oder Maschinencode iibersetzen. Daher reicht es, die Aquivalenz zwischen Assembler u n d T u r i n g m a s c h i n e n zu beweisen. Den Assembler kann m a n durch sogenannte R e g i s t e r m a s c h i n e n modellieren u n d d a n n diese durch T u r i n g m a s c h i n e n simulieren lassen. Diesen Weg werden wir jetzt aber nicht gehen. W i r k6nnen unsere Aufgabe noch vereinfachen. W i r kSnnen Multiplikation u n d Division yon zwei Zahlen a u n d b durch P r o g r a m m e , die nur mit den G r u n d o p e r a t i o n e n A d d i t i o n u n d S u b t r a k t i o n arbeiten, realisieren. Aufgabe 4.13. Schreiben Sie ein Programm, dass fiir zwei gegebene Zahlen a und b das Produkt a. b berechnet. Dabei darf das Programm nur die Addition, die Subtraktion und Vergleich von zwei Zahlen in Verbindung mit i f ... t h e n . . , else benutzen. D a n a c h kann m a n einen Vergleich yon zwei Zahlen durch P r o g r a m m e durchfiihren, die nur die O p e r a t i o n + 1 (I " - I + 1), - 1 (I " - I - 1) u n d den Test auf 0 ( i f I - 0 t h e n . . . e l s e . . . ) benutzen. Aufgabe 4.14. Schreiben Sie ein Programm, dass den Befehl i f I _> J t h e n g o t o 1 e l s e goto 2 nur mit Hilfe von Operationen +1, - 1 und dem Test auf 0 realisiert. A m Ende kSnnen wir auch noch auf A d d i t i o n u n d S u b t r a k t i o n verzichten. Aufgabe 4.15. Schreiben Sie Programme, die fiir zwei gegebene Zahlen a, b E IN die Addition a + b und die Subtraktion a - b nur mit Hilfe der Operationen + 1, - 1 und dem Test auf 0 berechnen. Die Aufgabe, die P r o g r a m m e mit O p e r a t i o n e n + 1 , - 1 u n d if I = 0 t h e n . . . e l s e . . . auf M e h r b a n d - T u r i n g m a s c h i n e n zu simulieren, ist nicht mehr so schwer. Die Variablen werden auf den A r b e i t s b ~ n d e r n in der F o r m xC~y gespeichert, wobei x die bin~re K o d i e r u n g des N a m e n s der Variablen Ix u n d y die bin~re K o d i e r u n g des Wertes yon Ix ist. Die O p e r a t i o n e n + 1 , - 1 u n d den Test y = 0 kann eine M T M einfach realisieren. Der einzige grSf3ere Aufwand entsteht, wenn ein B a n d z.B. CxC~YC~C~zC~ur162 enth~lt u n d der Platz zur
4.3 Mehrband-Turingmaschinen und Church'sche These
147
Speicherung des Wertes yon Ix in y nicht mehr reicht (mehr Felder fiir y werden gebraucht). In einem solchen Fall muss die M e h r b a n d - T M den Inhalt ~z~u~... rechts yon y nach rechts verschieben, u m mehr Platz fiir die Speicherung von y zu gewinnen. In der Theoretischen Informatik hat man Hunderte von formellen Modellen (nicht nur in Form von Maschinenmodellen) zur Spezifikation der algorithmischen LSsbarkeit entwickelt. Alle verntinftigen Modelle sind ~quivalent zu Turingmaschinen. Dies fiihrte zu der Formulierung der sogenannten Church'schen These:
Church'sche These
Die Turingmaschinen sind die Formalisierung des Begriffes ,,Algorithmus", d.h. die Klasse der rekursiven Sprachen (der entscheidbaren Entscheidungsprobleme) stimmt mit der Klasse der algorithmisch (automatisch) erkennbaren Sprachen iiberein. Die Church'sche These ist nicht beweisbar, weil sie einer Formalisierung des intuitiven Begriffes Algorithmus entspricht. Es ist nicht m6glich zu beweisen, dass keine andere formale Modellierung des intuitiven Begriffes Algorithmus existiert, die (i) unserer Intuition fiber diesen Begriff entspricht, und (ii) die algorithmische LSsung von Entscheidungsproblemen ermSglicht, die m a n mit der Hilfe von Turingmaschinen nicht entscheiden kann. Das einzige, was passieren k6nnte, ist, dass jemand ein solches stS~rkeres Modell findet. In diesem Fall wS~ren die Grundlagen der Theoretischen Informatik zu revidieren. Die Suche nach einem solchen Modell war aber bisher vergeblich, und wir wissen heute, dass sogar das physikalische Modell des Quantenrechhers ~~ zu Turingmaschinen 5~quivalent ist. Die Situation ist also 5~hnlich wie in der M a t h e m a t i k und Physik. Wir akzeptieren die Church'sche These, weil sie unserer Erfahrung entspricht, und postulieren sie als ein Axiom. Wie wir schon bemerkt haben,