Theoretische Informatik

Werbung
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-
Herunterladen