Skript1 zurVorlesung TheoretischeInformatik1“ · PDF fileHinweise auf Fehler und...
Transcript of Skript1 zurVorlesung TheoretischeInformatik1“ · PDF fileHinweise auf Fehler und...
Skript1 zur Vorlesung
Theoretische Informatik 1
Prof. Dr. Georg Schnitger
WS 2012/13
1Herzlichen Dank an Dr. Maik Weinard fur viele wichtige Beitrage zu diesem Skript!
Hinweise auf Fehler und Anregungen zum Skript bitte an
besser AT thi cs uni-frankfurt de
oder
matthias AT thi informatik uni-frankfurt de
Mit einem Stern gekennzeichnete Abschnitte werden in der Vorlesung nur kurz angesprochen.
Inhaltsverzeichnis
1 Einfuhrung 5
1.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1 Einige Grundlagen aus der Stochastik . . . . . . . . . . . . . . . . . . 7
1.1.2 Asymptotik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
I Effiziente Algorithmen 13
2 Sortieren 15
2.1 Bubble Sort, Selection Sort und Insertion Sort . . . . . . . . . . . . . . . . . . 15
2.2 Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1 Eine Laufzeit-Analyse von Quicksort . . . . . . . . . . . . . . . . . . . 20
2.2.2 Weitere Verbesserungen von Quicksort . . . . . . . . . . . . . . . . . . 23
2.2.3 Das Auswahlproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Mergesort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Eine untere Schranke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 Distribution Counting, Radix-Exchange und Radixsort . . . . . . . . . . . . . 31
2.6 Sample Sort: Paralleles Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 Graphalgorithmen 37
3.1 Suche in Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.1 Tiefensuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.2 Breitensuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Kurzeste Wege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3 Minimale Spannbaume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1
2 INHALTSVERZEICHNIS
4 Entwurfsmethoden 53
4.1 Greedy-Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.1 Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.2 Huffman-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Divide & Conquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.1 Eine schnelle Multiplikation naturlicher Zahlen . . . . . . . . . . . . . 60
4.2.2 Eine Schnelle Matrizenmultiplikation . . . . . . . . . . . . . . . . . . . 61
4.3 Dynamische Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3.1 Das gewichtete Intervall Scheduling . . . . . . . . . . . . . . . . . . . . 65
4.3.2 Kurzeste Wege und Routing im Internet . . . . . . . . . . . . . . . . . 67
4.3.3 Paarweises Alignment in der Bioinformatik . . . . . . . . . . . . . . . 71
4.3.4 Voraussage der RNA Sekundarstruktur . . . . . . . . . . . . . . . . . 75
4.4 Die Lineare Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
II NP-Vollstandigkeit 83
5 P, NP und die NP-Vollstandigkeit 85
5.1 Turingmaschinen und die Klasse P . . . . . . . . . . . . . . . . . . . . . . . . 87
5.1.1 Die Berechnungskraft von Turingmaschinen . . . . . . . . . . . . . . 90
5.2 Die Klasse NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.3 Der Begriff der Reduktion und die NP-Vollstandigkeit . . . . . . . . . . . . . . 102
6 NP-vollstandige Probleme 105
6.1 Der Satz von Cook: Die NP-Vollstandigkeit von KNFSAT . . . . . . . . . . . 105
6.2 Weitere NP-vollstandige Probleme . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.2.1 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.2.2 Independent Set, Vertex Cover und Set Cover . . . . . . . . . . . . . . 112
6.2.3 0-1 Programmierung und Ganzzahlige Programmierung . . . . . . . . 115
6.2.4 Wege in Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.3 NP-Vollstandigkeit in Anwendungen . . . . . . . . . . . . . . . . . . . . . . . 120
6.3.1 Bioinformatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.3.2 VLSI Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.3.3 Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.4 Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.3.5 Existenz von Gewinnstrategien . . . . . . . . . . . . . . . . . . . . . . 130
6.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
INHALTSVERZEICHNIS 3
III Algorithmen fur schwierige Probleme 135
7 Approximationsalgorithmen 139
7.1 Last-Verteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
7.2 Das Rucksack Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
7.3 Approximation und lineare Programmierung . . . . . . . . . . . . . . . . . . . 143
8 Lokale Suche 147
8.1 Lokale Suche in variabler Tiefe . . . . . . . . . . . . . . . . . . . . . . . . . . 150
8.2 Der Metropolis Algorithmus und Simulated Annealing . . . . . . . . . . . . . 151
8.3 Evolutionare Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
9 Exakte Algorithmen 157
9.1 V C fur kleine Uberdeckungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.2 Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
9.3 Branch & Bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.3.1 Branch & Cut Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.4 Der Alpha-Beta Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
IV Berechenbarkeit 171
10 Berechenbarkeit und Entscheidbarkeit 175
10.1 Die Church-Turing These . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
10.2 Entscheidbare Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
11 Unentscheidbare Probleme 183
11.1 Universelle Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
11.2 Diagonalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
11.3 Reduktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
11.4 Der Satz von Rice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
11.5 Das Postsche Korrespondenzproblem . . . . . . . . . . . . . . . . . . . . . . . 193
12 Rekursiv aufzahlbare Probleme 197
12.1 Godels Unvollstandigkeitssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
12.2 -rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
12.2.1 Primitiv rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . 201
12.2.2 Beispiele primitiv rekursiver Funktionen und Pradikate . . . . . . . . 204
12.2.3 Der beschrankte -Operator . . . . . . . . . . . . . . . . . . . . . . . . 210
12.2.4 Die Ackermann-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . 213
12.2.5 Der unbeschrankte -Operator . . . . . . . . . . . . . . . . . . . . . . 219
12.3 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
4 INHALTSVERZEICHNIS
V Ausblick 223
Kapitel 1
Einfuhrung
Die Vorlesung behandelt fundamentale Algorithmen, allgemeine Methoden fur den Entwurfund die Analyse von Algorithmen im ersten Teil, die Erkennung schwieriger algorithmischerProbleme, namlich die NP-Vollstandigkeit im zweiten und die Grenzen der Berechenbarkeitim vierten Teil. Algorithmen fur schwierige Probleme sind Inhalt des dritten Teils.
In Teil I entwickeln wir effiziente Algorithmen fur Sortier- und Ordungsprobleme sowie furgraph-theoretische Probleme wie die Traversierung von Graphen sowie die Berechnung kur-zester Wege und minimaler Spannbaume. Desweiteren stellen wir die wichtigsten Entwurfs-prinzipien wie
- Divide & Conquer,
- dynamisches Programmieren
- und Greedy-Algorithmen
vor. Wir geben auch eine kurze, allerdings oberflachliche Einfuhrung in die lineare Program-mierung, dem machtigsten, effizienten Optimierungsverfahren.
Im Teil II beschaftigen wir uns mit schwierigen Problemen. Wir finden heraus, dass vielewichtige Entscheidungsprobleme, die nach der Existenz von Losungen fragen, algorithmischgleichschwer sind. Dazu fuhren wir den Begriff eines nichtdeterministischen Programms ein,das erfolgreich Losungen rat, wenn Losungen existieren. Wir werden dann auf die KlasseNP und auf die Klasse der NP-vollstandigen Probleme gefuhrt, die alle im Wesentlichen dengleichen Schwierigkeitsgrad besitzen. Wir werden herausfinden, dass die Losung eines einzigenNP-vollstandigen Problems bedingt, dass heutige Rechner
effizient raten konnen und mussen
folgern, dass wahrscheinlich kein einziges NP-vollstandige Problem effizient losbar ist.
Leide