© APSIS GmbH  , Polling,
2001
, Polling,
2001
des Lehrbuchs
Grundkurs Algorithmen
und Datenstrukturen (Vieweg Verlag  ,
2001)
,
2001)
| Inhaltsverzeichnis | I | 
| Einleitung | V | 
| 1. Begriffsbildung | 1 | 
| 1.1. Algorithmus | 1 | 
| 1.2. Komplexität | 4 | 
| 1.3. Verbrauch und Komplexität | 5 | 
| 2. Gleichwertige Lösungen | 8 | 
| 2.1. Maximale Teilsumme | 8 | 
| 2.1.1. Summen und Teilsummen | 8 | 
| 2.1.2. Aufgabenstellung | 9 | 
| 2.1.3. Intuitive Lösung | 9 | 
| 2.1.4. Zeitkomplexität der Lösung | 10 | 
| 2.1.5. Zeit für Raum | 12 | 
| 2.1.6. Teile und herrsche | 14 | 
| 2.1.7. Die optimale Lösung | 17 | 
| 2.1.8. Messergebnisse | 18 | 
| 2.1.9. Gleichwertigkeit von Algorithmen | 20 | 
| 2.2. Komplexitätsformel | 21 | 
| 2.3. Datenstrukturen | 22 | 
| 2.3.1. Reihungen | 23 | 
| 2.3.2. Verkettete Listen | 24 | 
| 2.3.3. Gleichwertigkeit von Datenstrukturen | 27 | 
| 3. Rekursion und Wiederholung | 30 | 
| 3.1. Rekursive Algorithmen | 30 | 
| 3.1.1. Fakultät | 30 | 
| 3.1.2. Die Fibonacci-Zahlen | 31 | 
| 3.1.3. Die Ackermann-Funktion | 34 | 
| 3.1.4. Die mathematische Induktion | 34 | 
| 3.1.5. Permutationen | 37 | 
| 3.2. Abarbeitung von Datenstrukturen | 38 | 
| 3.2.1. Iterative Abarbeitung von rekursiven Datenstrukturen | 38 | 
| 3.2.2. Rekursive Abarbeitung von rekursiven Datenstrukturen | 39 | 
| 3.2.3. Rekursive Abarbeitung von Reihungen | 40 | 
| 3.3. Rekursive Kurven | 42 | 
| 3.3.1. Schneeflockenkurve | 43 | 
| 3.3.2. Die Pfeilspitzenkurve | 45 | 
| 3.3.3. Die Hilbert-Kurve | 47 | 
| 3.3.4. Ersetzen der Rekursion durch Wiederholung | 50 | 
| 3.4. Zurückverfolgung | 53 | 
| 3.4.1. Labyrinth | 53 | 
| 3.4.2. Der Weg des Springers | 54 | 
| 3.4.3. Die acht Damen | 56 | 
| 3.5. Spracherkennung | 60 | 
| 3.5.1. Sprachen und Grammatiken | 60 | 
| 3.5.2. Reguläre Ausdrücke | 61 | 
| 3.5.3. Reguläre Grammatiken | 63 | 
| 3.5.4. R-Grammatiken | 64 | 
| 3.5.5. Endliche Automaten | 66 | 
| 3.5.6. Kellerautomaten | 70 | 
| 3.5.7. Endlichkeit und Unendlichkeit | 71 | 
| 4. Suchen | 73 | 
| 4.1. Textsuche | 73 | 
| 4.2. Suchen in Sammlungen | 77 | 
| 4.3. Suchen in einer Reihung | 78 | 
| 4.3.1. Suchen in einer unsortierten Reihung | 78 | 
| 4.3.2. Lineares Suchen in einer sortierten Reihung | 80 | 
| 4.3.3. Binäres Suchen | 81 | 
| 4.4. Hash-Tabellen | 82 | 
| 4.5. Suchen in einer verketteten Liste | 87 | 
| 4.5.1. Lineares Suchen in einer unsortierten Liste | 88 | 
| 4.5.2. Lineares Suchen in einer sortierten Liste | 89 | 
| 4.6. Zeitkomplexitäten beim Suchen | 89 | 
| 5. Sortierverfahren | 92 | 
| 5.1. Die Problemstellung | 92 | 
| 5.1.1. Präzisierung des Problems und Grundbegriffe | 93 | 
| 5.1.2. Zeitbedarf und Zeitkomplexität | 95 | 
| 5.2. Quadratische Sortierverfahren | 96 | 
| 5.2.1. Sortieren durch Vertauschen benachbarten Elemente | 96 | 
| 5.2.2. Sortieren durch Einfügen | 98 | 
| 5.2.3. Sortieren durch Auswählen | 100 | 
| 5.3. Unterquadratische Verfahren | 101 | 
| 5.4. Rekursive Verfahren | 103 | 
| 5.5. Logarithmische Verfahren | 106 | 
| 5.5.1. Halde | 106 | 
| 5.5.2. Die Haldenbedingung | 107 | 
| 5.5.3. Senken | 108 | 
| 5.5.4. Zwei Phasen des Heap Sorts | 109 | 
| 5.5.5. Sortieren auf der Halde | 110 | 
| 5.6. Externe Sortierverfahren | 112 | 
| 5.6.1. Mischen | 113 | 
| 5.6.2. Sortierkanal | 115 | 
| 5.6.3. Mischkanal | 116 | 
| 5.6.4. Fibonacci-Mischen | 117 | 
| 6. Baumstrukturen | 120 | 
| 6.1. Binärbaum | 120 | 
| 6.1.1. Definition | 120 | 
| 6.1.2. Suchen im sortierten Binärbaum | 124 | 
| 6.1.3. Darstellung von Binärbäumen | 124 | 
| 6.2. Sortieren mit Binärbäumen | 127 | 
| 6.2.1. Binärbaum als Halde | 127 | 
| 6.2.2. Senken im Binärbaum | 128 | 
| 6.2.3. Baumsort | 130 | 
| 6.2.4. Durchwandern eines Binärbaums | 132 | 
| 6.3. Operationen für Binärbäume | 135 | 
| 6.3.1. Binärbaum aus Knoten | 135 | 
| 6.3.2. Eintragen in einen sortierten Binärbaum | 135 | 
| 6.3.3. Löschen in Binärbäumen | 137 | 
| 6.4. Ausgeglichene Bäume | 140 | 
| 6.4.1. Eintragen in ausgeglichene Bäume | 141 | 
| 6.4.2. Löschen in ausgeglichenen Bäumen | 145 | 
| 6.5. 2-3-4-Bäume | 147 | 
| 6.5.1. Definition | 147 | 
| 6.5.2. Spalten | 148 | 
| 6.5.3. Einfügen | 150 | 
| 6.6. Rot-Schwarz-Bäume | 152 | 
| 6.7. B-Bäume | 158 | 
| 7. Klassen von Algorithmen | 162 | 
| 7.1. Was ist ein algorithmisches Problem? | 162 | 
| 7.2. Theoretische Lösbarkeit von Problemen | 167 | 
| 7.2.1. Definitionen | 167 | 
| 7.2.2. Beispiele | 168 | 
| 7.2.3. Das Halteproblem | 171 | 
| 7.2.4. Das Kachelproblem | 172 | 
| 7.2.5. Das Paligrammproblem | 174 | 
| 7.2.6. Gleichwertigkeit von Grammatiken | 176 | 
| 7.3. Praktische Lösbarkeit von Problemen | 177 | 
| 7.3.1. Das zweite Kachelproblem | 178 | 
| 7.3.2. Das Rucksackproblem | 179 | 
| 7.3.3. Das Aufteilungsproblem | 179 | 
| 7.3.4. Das Problem des Handelsreisenden | 180 | 
| 7.3.5. Hamiltonsche Wege durch einen Graphen | 180 | 
| 7.3.6. Das Erfüllbarkeitsproblem | 181 | 
| 7.4. Die Klassen P und NP | 182 | 
| 7.5. Ist P = NP? | 184 | 
| 7.6. Übersicht über Problemklassen | 185 | 
| Literaturverzeichnis | 187 | 
| Empfehlungen | 188 | 
| Programmverzeichnis | 190 | 
| Abbildung- und Tabellenverzeichnis | 192 | 
| Sachwortverzeichnis | 195 | 
Kapitel, die in der gedruckten Version nicht erschienen sind:
© APSIS GmbH  , Polling,
2001
, Polling,
2001