HOME


Algorithmen und Problemlösungen mit C++, Doina Logofatu


 PDF Inhaltverzeichnis





Copyright© 2006 by Doina Logofătu
Inhaltsverzeichnis


GELEITWORT von Dr. Eric Müller VII

VORWORT IX
DANKSAGUNG XI

1  KOMPLEXE KODIERUNG 1

Komplexe Zahlen – kurze Einführung 1
Kodierungsproblem komplexer Zahlen 2
Problemanalyse und Entwurf der Lösung 3
Algorithmus Komplexe_Kodierung 6
Programm Komplexe_Kodierung 6
Programmanalyse 9
Aufgaben 13
Anmerkungen 14

2  VERSCHACHTELTE SCHACHTELN 15

Problembeschreibung 15
Problemanalyse und Entwurf der Lösung 16
Der Algorithmus 17
Das Programm 19
Die Programmanalyse 22
Drei kleine Programmierungstricks 23
Aufgaben, Problemstellungen 24
Anmerkungen 24

3  ZEICHENKETTEN 25

Grundlagen 25
1. Zeichen 25
2. C-Strings 26
3. C++ Strings 27
Aufgaben 32
Problem 1. Sich wiederholende Zeichenketten 33
Problem 2. Das Perlencollier 35
Problem 3. Parkinson 37
Problem 4. Rapunzel im Internet 40
Problem 5. Bridge-Blatt 44
Problem 6. Wo sind die Königinnen? 49
Problem 7. Vogelsprache 55

4  MENGEN UND RELATIONEN 59

Grundlagen 59
1. Element und Menge 59
2. Leere Menge, Teilmenge, Gleichheit 60
3. Schreibweisen 60
4. Mengenoperationen 61
5. Multimengen 63
6. Relationen 63
7. Ordnungen 64
8. Funktionen 64
Aufgaben 65
Problem 1. Cantor-Diagonalisierung 67
Problem 2. Menge und Multimenge 72
Problem 3. Relation und ihre Eigenschaften 75

5  ARITHMETIK UND ALGEBRA
81

Grundlagen 81
1. Teilbarkeit 81
2. Primzahlen 81
3. Fundamentalsatz der Arithmetik 82
4. Division mit Rest, ggT und kgV 83
5. Kongruenzen. Elementare Eigenschaften 84
6. Chinesischer Restsatz 85
7. Fermatsche Sätze 86
8. Die Pell’sche Gleichung 88
9. Satz von Vieta 89
Aufgaben 91
Problem 1. Primzahltest 93
Problem 2. Sieb des Eratosthenes 95
Problem 3. Druck einer Broschüre 99
Problem 4. Primzahlen und Teiler 101
Problem 5. Der alte Gärtner 104
Problem 6. Kätzchen in Hüten 108
Problem 7. Hausnummer 113
Problem 8. Korrekte Nachrichten 115
Problem 9. Anzahl der Teiler 118
Problem 10. Datumsverpackung 121
Problem 11. Die schöne Marie und der schöne Hans 122
Problem 12. Kubische Gleichung 125
Problem 13. Quadrat einer speziellen Zahl 126
Problem 14. Umwandlung einer römischen Zahl in eine Dezimalzahl 128
Problem 15. Umwandlung einer Dezimalzahl in eine römische Zahl 130
Problem 16. Hässliche Zahlen 132
Problem 17. Vögel auf den Bäumen 134
Problem 18. Wieviele sind es mindestens? (chinesischer Restsatz) 136

6  EBENE GEOMETRIE, TRIGONOMETRIE
139

Grundlagen 139
1. Dreiecksgeometrie. 139
2. Berechnung eines beliebigen Dreiecks 140
3. Wichtige trigonometrische Formeln 141
Aufgaben 142
Problem 1. Berechnung des Dreiecks (SSW) 142
Problem 2. Der Kreisumfang 146
Problem 3. Kreise im gleichschenkligen Dreieck 150

7  KOMBINATORIK
153

Grundlagen 153
1. Prinzip von Inklusion und Exklusion 153
2. Das Schubfachprinzip 155
3. Permutationen
(Anordnungen mit Berücksichtigung der Reihenfolge) 158
4. Variationen (Auswahlen mit Beachtung der Reihenfolge) 160
5. Kombinationen (Auswahlen ohne Beachtung der Reihenfolge) 161
6. Binomialkoeffizienten und ihre Anwendungen 162
Aufgaben 164
Problem 1. Alle Teilmengen einer Menge
in lexikographischer Reihenfolge 166
Problem 2. Der Gray-Code (minimale Änderungsreihenfolge) 170
Problem 3. Permutationen in lexikographischer Reihenfolge 173
Problem 4. Ranking einer Permutation in lexikographischer Reihenfolge 175
Problem 5. Unranking einer Permutation in lexikographischer Reihenfolge178
Problem 6. Binomialkoeffizienten 180
Problem 7. Das kleinste Vielfache 186

8  CATALAN-ZAHLEN 189

Einführung 189
Sechs Probleme aus der Catalan-Familie 190
Theorem. P1-P6 und die Catalan-Zahlen 193
Die rekursive Formel 196
Die erzeugende Funktion 197
Noch 4 äquivalente Probleme 199
Algorithmen zur Berechnung der Catalan-Zahlen 200
Zweiter Algorithmus, eine weitere Rekursion 201
Dritter Algorithmus, der ohne Rekursion auskommt 202
Aufgaben 205

9  POTENZSUMMEN 207

Problembeschreibung 207
Problemanalyse. Algebraische Modellierung 207
Von der Rekursionsgleichung zum Algorithmus 209
Der Algorithmus 212
Programm 214

10  ALGORITHMISCHE GEOMETRIE 219

Grundlagen 219
1. Darstellung der Punkte, Quadranten 219
2. Abstand zwischen zwei Punkten 220
3. Gerade in der Ebene 221
4. Abstand eines Punktes zu einer Geraden,
Fläche eines Dreiecks 223
5. Die Ellipse 224
6. Das Außenprodukt 225
7. Die Fläche eines Polygons, Punkt im Inneren eines Polygons 225
8. Nächstes Paar 228
9. Die konvexe Hülle 230
Aufgaben 233
Problem 1. Nächstes Paar 234
Problem 2. Quadrätchen im Kreis 236
Problem 3. Wie sicher sind die Bürger? 241

11  GRAPHEN 251

Grundlagen 251
1. Einführende Begriffe 251
2. Weg, Pfad, Zyklus und Kreis 252
3. Vollständige und bipartite Graphen 253
4. Darstellung der Graphen 254
5. Traversieren von Graphen (BFS und DFS) 256
6. Zusammenhang 258
7. Hamiltonsche und eulersche Graphen 259
8. Bäume und Wälder 260
9. Minimaler Spannbaum 261
Aufgaben 263
Problem 1. Breiten- und Tiefensuche (BFS und DFS) 264
Problem 2. Die kürzesten Pfade 267
Problem 3. Das Alphabet der fremden Sprache 269
Problem 4. Markus besucht seine Freunde 275
Problem 5. Das Haus des Nikolaus 280

12  GREEDY 283

Grundlagen 283
Problem 1. Rucksackproblem 284
Problem 2. Kartenfärbung 286
Problem 3. Springer auf dem Schachbrett 287

13  REKURSION 291

Vollständige Induktion 291
Rekursion: Grundlagen 297
Problem 1. Quersumme und Spiegelung einer natürlichen Zahl 298
Problem 2. Die Zahl 4 300
Problem 3. Rest großer Potenzen 302
Problem 4. Die Torte (lineare Rekursion) 304
Problem 5. Die Ackermannfunktion
(verschachtelte Rekursion, "compound recursion") 306
Problem 6. Rekursive Zahlenumwandlung
(Dezimalsystem in System mit Basis P) 308
Problem 7. Summe zweier Wurzeln (verzweigte Rekursion) 310
Problem 8. Collatz-Funktion (nicht-monotone Rekursion) 311
Problem 9. Quadrate und Quadrätchen 313
Problem 10. Quadrate (direkte Rekursion) 316
Problem 11. Quadrate und Kreise (indirekte Rekursion) 325
Problem 12. Die Koch’sche Schneeflockenkurve 329

14  TEILE UND HERRSCHE 337

Grundlagen 337
Problem 1. Größter gemeinsamer Teiler mehrerer Zahlen 338
Problem 2. Die Türme von Hanoi 340
Problem 3. Integral mit Trapezregel 342
Problem 4. Quicksort 344
Problem 5. Mergesort (Sortieren durch Verschmelzen) 346
Problem 6. Quad-Bäume 348
Problem 7. Diskrete Fourier-Transformation (DFT) 352

15  BACKTRACKING 357

Problem 1. Das Problem der n Damen 357
Allgemeine Bemerkungen zum Backtracking-Verfahren 363
Problem 2. Das Problem der n Türme 365
Problem 3. Das Problem der Türme auf den ersten m Reihen 367
Problem 4. Das Problem der aufsteigenden Türme
auf den ersten m Reihen 368
Problem 5. Die Freundschafts-Jugendherberge 369
Problem 6. Partitionen einer natürlichen Zahl 370
Problem 7. Erdkunde-Referate 373
Problem 8. Alle Wege des Springers 375
Problem 9. Das Fotoproblem 378
Problem 10. Der ausbrechende Ball 379
Problem 11. Olivensport 382
Problem 12. Testmusterkompaktierung 388
Noch 10 Probleme 397

16  DYNAMISCHE PROGRAMIERUNG 403

Grundlagen, Eigenschaften des Verfahrens 403
1. Ursprung des Konzeptes 403
2. Optimalitätsprinzip 403
3. Überlappung des Problems, Speicherung der optimalen
Teilproblemlösungen (Memoization) 404
4. Einführendes Beispiel – die Fibonacci-Folge 404
5. Bottom-up versus top-down 406
6. Vergleich mit anderen Verfahren 407
Aufgaben 407
Problem 1. Das Zählen der Kaninchen 408
Problem 2. Längste aufsteigende Teilfolge 411
Problem 3. Zahlen-Dreieck 415
Problem 4. Domino 418
Problem 5. Verteilung der Geschenke 422
Problem 6. Ähnliche Summe 425
Problem 7. Schotten auf dem Oktoberfest 430
Problem 8. Springer auf dem Schachbrett 437
Problem 9. Summen von Produkten 442
Problem 10. Minimale Triangulierung eines konvexen Vielecks 445
Problem 11. Multiplikation einer Matrizenfolge 451
Problem 12. Edit-Distanz 456

LITERATURVERZEICHNIS 463

STICHWORTVERZEICHNIS 467