THEORETISCHE INFORMATIK // ■ Für das Bachelor-Studium geeignet Prof. Dr. Dirk W. HOFFMANN ist Dozent an der Fakultät für Informatik und Wirtschaftsinformatik der Hochschule Karlsruhe – Technik und Wirtschaft. ■ Zahlreiche Übungsaufgaben und Beispiele AUS DEM INHALT // ■ Grundlagen der theoretischen ■ Das Buch behandelt die Themengebiete: Logik und Deduktion, Automatentheorie, formale Sprachen, Entscheidbarkeitstheorie, Berechenbarkeitstheorie und Komplexitätstheorie. Die Lehrinhalte aller Kapitel werden durch zahlreiche Übungsaufgaben komplettiert, so dass sich die Lektüre neben der Verwendung als studienbegleitendes Lehrbuch auch bestens zum Selbststudium eignet. ■ ■ ■ ■ ■ UNSER BUCHTIPP FÜR SIE // Hoffmann, Grundlagen der technischen Informatik 2014. 448 Seiten. FlexCover. € 39,99. ISBN 978-3-446-44251-1 Das Buch führt umfassend in das Gebiet der theoretischen Informatik ein und behandelt den Stoffumfang, der für das Bachelor-Studium an Universitäten und Hochschulen in den Fächern Informatik und Informationstechnik benötigt wird. Die Darstellung und das didaktische Konzept verfolgen das Ziel, einen durchweg praxisnahen Zugang zu den mitunter sehr theoretisch geprägten Themen zu schaffen. Theoretische Informatik muss nicht trocken sein. Sie kann Spaß machen und genau dies versucht das Buch zu vermitteln. Die verschiedenen Methoden und Verfahren werden anhand konkreter Beispiele eingeführt und durch zahlreiche Querverbindungen wird gezeigt, wie die fundamentalen Ergebnisse der theoretischen Informatik die moderne Informationstechnologie prägen. Informatik Mathematische Grundlagen Logik und Deduktion Formale Sprachen Endliche Automaten Berechenbarkeitstheorie Komplexitätstheorie In der 3. Auflage wurden Fehler behoben, alle Kapitel aktualisiert und teilweise ergänzt. € 39,99 [D] | € 41,20 [A] ISBN 978-3-446-44446-1 THEORETISCHE INFORMATIK wichtigsten Teilgebiete ■ Grundlegende Konzepte, Methoden und Ergebnisse HOFFMANN ■ Umfassende verständliche Einführung in die dirk w. HOFFMANN THEORETISCHE INFORMATIK 3., aktualisierte Auflage Im Internet: Lösungen zu den Übungsaufgaben www.hanser-fachbuch.de/computer 44446_Hoffmann_194x244_RZ.indd 1 03.08.15 10:44 Hoffmann Theoretische Informatik Bleiben Sie auf dem Laufenden! Unser Computerbuch-Newsletter informiert Sie monatlich über neue Bücher und Termine. Profitieren Sie auch von Gewinnspielen und exklusiven Leseproben. Gleich anmelden unter www.hanser-fachbuch.de/newsletter Hanser Update ist der IT-Blog des Hanser Verlags mit Beiträgen und Praxistipps von unseren Autoren rund um die Themen Online Marketing, Webentwicklung, Programmierung, Softwareentwicklung sowie IT- und Projektmanagement. Lesen Sie mit und abonnieren Sie unsere News unter Dirk W. Hoffmann Theoretische Informatik 3., aktualisierte Auflage Mit 295 Bildern, 26 Tabellen und 109 Aufgaben Der Autor: Prof. Dr. Dirk W. Hoffmann, Hochschule Karlsruhe, Fakultät für Informatik und Wirtschaftsinformatik Alle in diesem Buch enthaltenen Programme, Verfahren und elektronischen Schaltungen wurden nach bestem Wissen erstellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund ist das im vorliegen-den Buch enthaltene Programm-Material mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung über-nehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. 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. Bibliografische Information Der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren), auch nicht für Zwecke der Unterrichtsgestaltung – mit Ausnahme der in den §§ 53, 54 URG genannten Sonderfälle –, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Lektorat: Franziska Jacob, M.A. Herstellung: Der Buchmacher, Arthur Lenner, München Satz: Dirk W. Hoffmann, Karlsruhe Covergestaltung: Stephan Rönigk Datenbelichtung, Druck und Bindung: Kösel, Krugzell Ausstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702 Printed in Germany ISBN: 978-3-446-44446-1 E-Book-ISBN: 978-3-446-44530-7 www.hanser-fachbuch.de Vorwort Für die meisten Menschen ist die Informatik fest mit der Entstehungsgeschichte des Computers verbunden; einer Technik, die von außen betrachtet keinen Grenzen zu unterliegen scheint. Wir erleben seit Jahren eine schier ungebremste Entwicklung und sind längst daran gewöhnt, dass der Computer von heute schon morgen überholt ist. Dass sich hinter der Computertechnik eine tiefgründige Wissenschaft verbirgt, die all die großen Erfolge erst möglich macht, bleibt vielen Menschen verborgen. Die Rede ist von der theoretischen Informatik. In der Grundlagenausbildung hat die theoretische Informatik ihren festen Platz eingenommen. Viele Studierende begegnen ihr mit gemischten Gefühlen und von manchen wird sie gar als bedrohlich empfunden. Mitverantwortlich für diese Misere sind die historischen Wurzeln der theoretischen Informatik. Entstanden aus der Mathematik, wird sie häufig in einer Präzision dargestellt, die in der Informatik ihresgleichen sucht. Manch ein Leser verirrt sich schnell in einem Gewirr aus Definitionen, Sätzen und Beweisen, das die Sicht auf die eigentlichen Konzepte und Methoden unfreiwillig verdeckt. Dass die theoretische Informatik weder schwer noch trocken sein muss, versuche ich mit diesem Buch zu beweisen. Die folgenden Kapitel werden von zwei Leitmotiven getragen. Zum einen möchte ich die grundlegenden Konzepte, Methoden und Ergebnisse der theoretischen Informatik vermitteln, ohne diese durch einen zu hohen Abstraktionsgrad zu vernebeln. Hierzu werden die Problemstellungen durchweg anhand von Beispielen motiviert und die Grundideen der komplizierteren Beweise an konkreten Probleminstanzen nachvollzogen. Zum anderen habe ich versucht, den Lehrstoff in vielerlei Hinsicht mit Leben zu füllen. An zahlreichen Stellen werden Sie Anmerkungen und Querbezüge vorfinden, die sich mit der historischen Entwicklung dieser einzigartigen Wissenschaftsdisziplin beschäftigen. Bei allen Versuchen, einen verständlichen Zugang zu der nicht immer einfachen Materie zu schaffen, war es mir ein Anliegen, keinen Verlust an Tiefe zu erleiden. Das Buch ist für den Bachelor-Studiengang konzipiert und deckt die typischen Lehrinhalte ab, die im Grundstudium an den hiesigen Hochschulen und Universitäten unterrichtet werden. Vorwort zur dritten Auflage Mittlerweile ist die Theoretische Informatik in der dritten Auflage erschienen. Wie schon zur ersten Auflage habe ich auch zur zweiten Auflage von zahlreichen Lesern Zuschriften 6 Vorwort erhalten, für die ich mich an dieser Stelle herzlich bedanke. Namentlich erwähnen möchte ich Dr. Klaus Fiedler, Dr. Bernd Grave, Herbert Röße, Prof. Dr. Stephan Schulz und Prof. Dr. Rudolf Winkel, die mir mit zahlreichen Hinweisen geholfen haben, das Manuskript weiter zu verbessern. Karlsruhe, im Juli 2015 Dirk W. Hoffmann Symbolwegweiser Definition --- Leichte Übungsaufgabe Satz, Lemma, Korollar --- Mittelschwere Übungsaufgabe --- Schwere Übungsaufgabe Lösungen zu den Übungsaufgaben In wenigen Schritten erhalten Sie die Lösungen zu den Übungsaufgaben: 1. Gehen Sie auf die Seite www.dirkwhoffmann.de/TH 2. Geben Sie den neben der Aufgabe abgedruckten Webcode ein 3. Die Musterlösung wird als PDF-Dokument angezeigt Inhaltsverzeichnis 1 Einführung 1.1 Was ist theoretische Informatik? . . . . . . . 1.2 Zurück zu den Anfängen . . . . . . . . . . . 1.2.1 Die Mathematik in der Krise . . . . 1.2.2 Metamathematik . . . . . . . . . . . 1.2.3 Die ersten Rechenmaschinen . . . . 1.2.4 Der Computer wird erwachsen . . . 1.2.5 Berechenbarkeit versus Komplexität 1.3 Theoretische Informatik heute . . . . . . . . . 1.4 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 14 14 18 22 24 26 32 34 2 Mathematische Grundlagen 2.1 Grundlagen der Mengenlehre . . . . . . . . . . 2.1.1 Der Mengenbegriff . . . . . . . . . . 2.1.2 Mengenoperationen . . . . . . . . . . 2.2 Relationen und Funktionen . . . . . . . . . . . 2.3 Die Welt der Zahlen . . . . . . . . . . . . . . . 2.3.1 Natürliche, rationale und reelle Zahlen 2.3.2 Von großen Zahlen . . . . . . . . . . . 2.3.3 Die Unendlichkeit begreifen . . . . . . 2.4 Rekursion und induktive Beweise . . . . . . . . 2.4.1 Vollständige Induktion . . . . . . . . . 2.4.2 Strukturelle Induktion . . . . . . . . . 2.5 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 38 41 44 52 52 55 57 65 66 68 70 . . . . . . . . 81 82 82 91 96 98 104 109 112 3 Logik und Deduktion 3.1 Aussagenlogik . . . . . . . . . . . . . . . 3.1.1 Syntax und Semantik . . . . . . 3.1.2 Normalformen . . . . . . . . . . 3.1.3 Beweistheorie . . . . . . . . . . 3.1.3.1 Hilbert-Kalkül . . . . 3.1.3.2 Resolutionskalkül . . 3.1.3.3 Tableaukalkül . . . . 3.1.4 Anwendung: Hardware-Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 118 122 124 130 135 138 145 146 147 149 150 4 Formale Sprachen 4.1 Sprache und Grammatik . . . . . . . . . . . . . . . . 4.2 Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . 4.3 Reguläre Sprachen . . . . . . . . . . . . . . . . . . . 4.3.1 Definition und Eigenschaften . . . . . . . . 4.3.2 Pumping-Lemma für reguläre Sprachen . . . 4.3.3 Satz von Myhill-Nerode . . . . . . . . . . . 4.3.4 Reguläre Ausdrücke . . . . . . . . . . . . . 4.4 Kontextfreie Sprachen . . . . . . . . . . . . . . . . . 4.4.1 Definition und Eigenschaften . . . . . . . . 4.4.2 Normalformen . . . . . . . . . . . . . . . . 4.4.2.1 Chomsky-Normalform . . . . . . 4.4.2.2 Backus-Naur-Form . . . . . . . 4.4.3 Pumping-Lemma für kontextfreie Sprachen . 4.4.4 Entscheidungsprobleme . . . . . . . . . . . 4.4.5 Abschlusseigenschaften . . . . . . . . . . . 4.5 Kontextsensitive Sprachen . . . . . . . . . . . . . . . 4.5.1 Definition und Eigenschaften . . . . . . . . 4.5.2 Entscheidungsprobleme . . . . . . . . . . . 4.5.3 Abschlusseigenschaften . . . . . . . . . . . 4.6 Phrasenstruktursprachen . . . . . . . . . . . . . . . . 4.7 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 162 168 170 170 172 174 176 179 179 179 179 181 182 186 188 191 191 192 193 193 195 5 Endliche Automaten 5.1 Begriffsbestimmung . . . . . . . . . . 5.2 Deterministische Automaten . . . . . 5.2.1 Definition und Eigenschaften 5.2.2 Automatenminimierung . . . 5.3 Nichtdeterministische Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 202 204 204 206 208 3.3 3.4 Prädikatenlogik . . . . . . . . . . . . . . . . . . 3.2.1 Syntax und Semantik . . . . . . . . . . 3.2.2 Normalformen . . . . . . . . . . . . . . 3.2.3 Beweistheorie . . . . . . . . . . . . . . 3.2.3.1 Resolutionskalkül . . . . . . 3.2.3.2 Tableaukalkül . . . . . . . . 3.2.4 Anwendung: Logische Programmierung Logikerweiterungen . . . . . . . . . . . . . . . . 3.3.1 Prädikatenlogik mit Gleichheit . . . . . 3.3.2 Logiken höherer Stufe . . . . . . . . . . 3.3.3 Typentheorie . . . . . . . . . . . . . . . Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 210 212 216 217 218 220 221 223 223 226 228 230 230 231 233 234 238 243 246 6 Berechenbarkeitstheorie 6.1 Berechnungsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Loop-Programme . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 While-Programme . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3 Goto-Programme . . . . . . . . . . . . . . . . . . . . . . . . 6.1.4 Primitiv-rekursive Funktionen . . . . . . . . . . . . . . . . . . 6.1.5 Turing-Maschinen . . . . . . . . . . . . . . . . . . . . . . . . 6.1.5.1 Einband-Turing-Maschinen . . . . . . . . . . . . . 6.1.5.2 Einseitig und linear beschränkte Turing-Maschinen 6.1.5.3 Mehrspur-Turing-Maschinen . . . . . . . . . . . . 6.1.5.4 Mehrband-Turing-Maschinen . . . . . . . . . . . . 6.1.5.5 Maschinenkomposition . . . . . . . . . . . . . . . 6.1.5.6 Universelle Turing-Maschinen . . . . . . . . . . . 6.1.5.7 Zelluläre Turing-Maschinen . . . . . . . . . . . . . 6.1.6 Alternative Berechnungsmodelle . . . . . . . . . . . . . . . . 6.1.6.1 Registermaschinen . . . . . . . . . . . . . . . . . . 6.1.6.2 Lambda-Kalkül . . . . . . . . . . . . . . . . . . . 6.2 Church’sche These . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Entscheidbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Akzeptierende Turing-Maschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 254 254 260 264 269 277 277 285 286 286 288 289 293 295 296 300 302 309 312 5.4 5.5 5.6 5.7 5.8 5.9 5.3.1 Definition und Eigenschaften . . . . . . . . 5.3.2 Satz von Rabin, Scott . . . . . . . . . . . . 5.3.3 Epsilon-Übergänge . . . . . . . . . . . . . Automaten und reguläre Sprachen . . . . . . . . . . 5.4.1 Automaten und reguläre Ausdrücke . . . . . 5.4.2 Abschlusseigenschaften . . . . . . . . . . . 5.4.3 Entscheidungsprobleme . . . . . . . . . . . 5.4.4 Automaten und der Satz von Myhill-Nerode Kellerautomaten . . . . . . . . . . . . . . . . . . . . 5.5.1 Definition und Eigenschaften . . . . . . . . 5.5.2 Kellerautomaten und kontextfreie Sprachen . 5.5.3 Deterministische Kellerautomaten . . . . . . Transduktoren . . . . . . . . . . . . . . . . . . . . . 5.6.1 Definition und Eigenschaften . . . . . . . . 5.6.2 Automatenminimierung . . . . . . . . . . . 5.6.3 Automatensynthese . . . . . . . . . . . . . 5.6.4 Mealy- und Moore-Automaten . . . . . . . Petri-Netze . . . . . . . . . . . . . . . . . . . . . . . Zelluläre Automaten . . . . . . . . . . . . . . . . . . Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.5 6.6 Inhaltsverzeichnis Unentscheidbare Probleme . . . . . . . . . . . 6.5.1 Halteproblem . . . . . . . . . . . . . 6.5.2 Satz von Rice . . . . . . . . . . . . . 6.5.3 Reduktionsbeweise . . . . . . . . . . 6.5.4 Das Post’sche Korrespondenzproblem 6.5.5 Weitere unentscheidbare Probleme . . Übungsaufgaben . . . . . . . . . . . . . . . . . 7 Komplexitätstheorie 7.1 Algorithmische Komplexität . . . . . . . . . 7.1.1 O-Kalkül . . . . . . . . . . . . . . . 7.1.2 Rechnen im O-Kalkül . . . . . . . . 7.2 Komplexitätsklassen . . . . . . . . . . . . . . 7.2.1 P und NP . . . . . . . . . . . . . . . 7.2.2 PSPACE und NPSPACE . . . . . . . 7.2.3 EXP und NEXP . . . . . . . . . . . 7.2.4 Komplementäre Komplexitätsklassen 7.3 NP-Vollständigkeit . . . . . . . . . . . . . . . 7.3.1 Polynomielle Reduktion . . . . . . . 7.3.2 P-NP-Problem . . . . . . . . . . . . 7.3.3 Satz von Cook . . . . . . . . . . . . 7.3.4 Reduktionsbeweise . . . . . . . . . 7.4 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 319 322 325 326 330 333 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 342 349 352 356 359 365 367 369 371 371 372 373 380 386 A Notationsverzeichnis 397 B Abkürzungsverzeichnis 401 C Glossar 403 Literaturverzeichnis 419 Namensverzeichnis 423 Sachwortverzeichnis 425 1 Einführung „Wir müssen wissen. Wir werden wissen.“ David Hilbert 1.1 Was ist theoretische Informatik? Kaum eine andere Technologie hat unsere Welt so rasant und nachhaltig verändert wie der Computer. Unzählige Bereiche des täglichen Lebens werden inzwischen von Bits und Bytes dominiert – selbst solche, die noch vor einigen Jahren als elektronikfreie Zone galten. Die Auswirkungen dieser Entwicklung sind bis in unser gesellschaftliches und kulturelles Leben zu spüren und machen selbst vor der deutschen Sprache keinen Halt. Vielleicht haben auch Sie heute schon gemailt, gesimst oder gegoogelt (Abbildung 1.1). Die Digitalisierung unserer Welt ist in vollem Gange und eine Abschwächung der eingeschlagenen Entwicklung zumindest mittelfristig nicht abzusehen. Die in der Retrospektive einzigartige Evolution der Computertechnik ist eng mit der Entwicklung der Informatik verbunden. Als naturwissenschaftliche Fundierung der Computertechnik untersucht sie die Methoden und Techniken, die eine digitale Welt wie die unsere erst möglich machen. In der gleichen Geschwindigkeit, in der Computer die Welt eroberten, konnte sich die Informatik von einer Nischendisziplin der Mathematik und Elektrotechnik zu einer eigenständigen Grundlagenwissenschaft entwickeln. War sie zu Anfang auf wenige Kernbereiche beschränkt, so präsentiert sich die Informatik mittlerweile als eine breit gefächerte Wissenschaftsdisziplin. Heute existieren Schnittstellen in die verschiedensten Bereiche wie die Biologie, die Medizin und sogar die bildenden Künste. In Abbildung 1.2 sind die vier Säulen dargestellt, von denen die Informatik gegenwärtig getragen wird. Eine davon ist die theoretische Informatik. Sie beschäftigt sich mit den abstrakten Konzepten und Methoden, die sich hinter den Fassaden moderner Computersysteme verbergen. Die theoretische Informatik ist vor der technischen Informatik die älteste Kernsäule und hat ihren direkten Ursprung in der Mathematik. down|loa|den <engl.> (EDV - Daten von einem Co mputer, aus de m Internet herunterladen) ; ich habe dow ngeloadet rnet im Inte Google it (m ; ln goo|ge ich goog[e]le ); n e h c su mai|len <engl.> (als E-Mail senden); gemailt n) sende S ver M S eine s. für n (ug e |s m si Abbildung 1.1: Die zunehmende Technisierung des Alltagslebens macht auch vor der deutschen Sprache keinen Halt. Im Jahr 2004 schaffte es das neudeutsche Verb googeln in den Duden [106]. Dort finden sich auch die Worte mailen, simsen und downloaden wieder. 12 1 Einführung I N F O R MAT I K Hardware-Entwurf Komplexität Computerperipherie Entscheidbarkeit Rechnerarchitekturen Berechenbarkeit Mikroprozessoren Formale Sprachen Schaltwerke Schaltnetze Logikgatter Technische Informatik Ausführlich behandelt Endliche Automaten Deduktion Logik Theoretische Informatik Kommunikation Assistenzsysteme Software-Engineering Signalverarbeitung Betriebssysteme Bio-Informatik Compilerbau Programmierung Algorithmen Datenstrukturen Praktische Informatik Multimedia Simulation Künstliche Intelligenz Computergrafik Angewandte Informatik Einführend behandelt Abbildung 1.2: Die vier Säulen der Informatik Trotz ihres relativen Alters hat dieser Zweig der Informatik nichts von seiner ursprünglichen Bedeutung verloren. Er bildet das konzeptionelle Fundament, auf dem die anderen Bereiche der Informatik solide ruhen und aus dessen Wissensfundus sie schöpfen. Betrachten wir die inhaltlichen Themen der modernen theoretischen Informatik genauer, so lassen sich diese in die folgenden Teilgebiete untergliedern (vgl. Abbildung 1.3): n Logik und Deduktion (Kapitel 3) Die Logik beschäftigt sich mit grundlegenden Fragestellungen mathematischer Theorien. Im Mittelpunkt steht die Untersuchung formaler Systeme (Kalküle), in denen Aussagen aus einer kleinen Menge vorgegebener Axiome durch die Anwendung fest definierter Schlussregeln abgeleitet werden. Die Logik spielt nicht nur in der theoretischen Informatik, sondern auch in der technischen Informatik und der Software-Entwicklung eine Rolle. Mit der Aussagenlogik gibt sie uns ein Instrumentarium an die Hand, mit dem wir jede erdenkliche Hardware-Schaltung formal beschreiben und analysieren können. Ferner lässt sich mit der Prädikatenlogik und den Logiken höherer Stufe das Verhalten komplexer Hardware- und SoftwareSysteme exakt spezifizieren und in Teilen verifizieren. 13 1.1 Was ist theoretische Informatik? n Formale Sprachen (Kapitel 4) Die Theorie der formalen Sprachen beschäftigt sich mit der Analyse, der Klassifikation und der generativen Erzeugung von Wortmengen. Künstliche Sprachen sind nach festen Regeln aufgebaut, die zusammen mit dem verwendeten Symbolvorrat eine formale Grammatik bilden. Die zugrunde liegende Theorie gibt uns die Methoden und Techniken an die Hand, die für den systematischen Umgang mit modernen Programmiersprachen und dem damit zusammenhängenden Compilerbau unabdingbar sind. Viele Erkenntnisse aus diesem Bereich haben ihre Wurzeln in der Linguistik und stoßen dementsprechend auch außerhalb der Informatik auf reges Interesse. n Berechenbarkeitstheorie (Kapitel 6) Die Berechenbarkeitstheorie beschäftigt sich mit grundlegenden Untersuchungen über die algorithmische Lösbarkeit von Problemen. Die Bedeutung dieses Teilgebiets der theoretischen Informatik ist zweigeteilt. Zum einen wird das gesamte Gebiet der Algorithmentechnik durch die Definition formaler Berechnungsmodelle auf einen formalen Unterbau gestellt. Zum anderen ermöglicht uns die systematische Vorgehensweise, die Grenzen der prinzipiellen Berechenbarkeit auszuloten. n Mathematische Grundlagen 3 Logik und Deduktion 4 Formale Sprachen 5 Endliche Automaten Automatentheorie (Kapitel 5) Hinter dem Begriff des endlichen Automaten verbirgt sich ein abstraktes Maschinenmodell, das sich zur Modellierung, zur Analyse und zur Synthese zustandsbasierter Systeme eignet. Auf der obersten Ebene untergliedern sich endliche Automaten in Akzeptoren und Transduktoren. Erstere zeigen einen engen Bezug zu den formalen Sprachen, Letztere spielen im Bereich des Hardware-Entwurfs eine dominierende Rolle. Sie sind das mathematische Modell, mit dem sich das zeitliche Verhalten synchron getakteter Digitalschaltungen exakt beschreiben und analysieren lässt. n 2 Komplexitätstheorie (Kapitel 7) Während die Berechenbarkeitstheorie Fragen nach der puren Existenz von Algorithmen beantwortet, versucht die Komplexitätstheorie die Eigenschaften einer Lösungsstrategie quantitativ zu erfassen. Algorithmen werden anhand ihres Speicherplatzbedarfs und Zeitverbrauchs in verschiedene Komplexitätsklassen eingeteilt, die Rückschlüsse auf deren praktische Verwertbarkeit zulassen. Die Ergebnisse dieser Theorie beeinflussen den gesamten Bereich der modernen Software- und Hardware-Entwicklung. 6 Berechenbarkeitstheorie 7 Kompexitätstheorie Abbildung 1.3: Kapitelübersicht. Die Pfeile deuten an, wie die einzelnen Kapitel inhaltlich zusammenhängen. 14 1 Einführung 1. Axiom: „Zu zwei Punkten gibt es genau eine Gerade, auf der sie liegen.“ 2. Axiom: „Jede gerade Strecke zwischen zwei Punkten lässt sich eindeutig verlängern.“ 1.2 Zurück zu den Anfängen Bevor wir uns ausführlich mit den Begriffen und Methoden der theoretischen Informatik beschäftigen, wollen wir in einem historischen Streifzug herausarbeiten, in welchem Umfeld ihre Teilgebiete entstanden sind und in welchem Zusammenhang sie heute zueinander stehen. 1.2.1 3. Axiom: „Zu einem Punkt und einer Strecke kann man genau einen Kreis konstruieren.“ 4. Axiom: „Alle rechten Winkel sind gleich.“ 5. Axiom: „Zu einer Geraden und einem Punkt außerhalb der Geraden gibt es genau eine Gerade, die durch den Punkt geht und parallel zur ersten Geraden ist.“ Die Mathematik in der Krise Die theoretische Informatik hat ihre Wurzeln in der Mathematik. Ihre Geschichte beginnt mit der Grundlagenkrise, die Anfang des zwanzigsten Jahrhunderts einen Tiefpunkt in der mehrere tausend Jahre alten Historie der Mathematik markierte. Um die Geschehnisse zu verstehen, die die älteste aller Wissenschaften in ihren Grundfesten erschütterten, wollen wir unseren Blick zunächst auf das achtzehnte Jahrhundert richten. Zu dieser Zeit war die Mathematik schon weit entwickelt, jedoch noch lange nicht die abstrakte Wissenschaft, wie wir sie heute kennen. Fest in der realen Welt verankert, wurde sie vor allem durch Problemstellungen der physikalischen Beobachtung vorangetrieben. Zahlen waren nichts weiter als Messgrößen für reale Objekte und weit von den immateriellen Gedankengebilden der modernen Zahlentheorie entfernt. So wenig wie die Mathematik als eigenständige Wissenschaft existierte, so wenig gab es den reinen Mathematiker. Im neunzehnten Jahrhundert änderte sich die Sichtweise allmählich in Richtung einer abstrakteren Mathematik. Zahlen und Symbole wurden von ihrer physikalischen Interpretation losgelöst betrachtet und entwickelten sich langsam, aber beharrlich zu immer abstrakter werdenden Größen. Mit der geänderten Sichtweise war es nun möglich, eine Gleichung der Form c2 = a2 + b2 Euklid von Alexandria (ca. 365 v. Chr. – ca. 300 v. Chr.) Abbildung 1.4: Die euklidischen Axiome völlig unabhängig von ihrer pythagoreischen Bedeutung zu betrachten. In ihrer abstraktesten Interpretation lässt sie sich als mathematisches Spiel begreifen, das uns erlaubt, die linke Seite durch die rechte zu ersetzen. Die Variablen a, b und c degradieren in diesem Fall zu inhaltsleeren Größen, die in keinerlei Bezug mehr zu den Seitenlängen eines rechtwinkligen Dreiecks stehen. Dass es richtig war, das mathematische Gedankengerüst von seiner physikalischen Interpretation zu trennen, wurde durch die Physik selbst untermauert. So machte die zu Beginn des zwanzigsten Jahrhunderts auf-