Skript1 zurVorlesung TheoretischeInformatik1“ · PDF fileHinweise auf Fehler und...

download Skript1 zurVorlesung TheoretischeInformatik1“ · PDF fileHinweise auf Fehler und Anregungen zum Skript bitte an besser AT thi cs uni-frankfurt de oder matthias AT thi informatik

If you can't read please download the document

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