Inhaltsverzeichnis

Vorwort

Inhaltsverzeichnis

Grundlagen

  1. Grundlagen
  2. Einführung

    Algorithmen

    Themenübersicht

  3. Pascal
  4. Beispiel: Euklidischer Algorithmus

    Datentypen

    Ein-/ Ausgabe

    Abschließende Bemerkungen

  5. Elementare Datenstrukturen
  6. Felder

    Verkettete Listen

    Speicherzuweisung

    Stapel

    Schlangen

    Abstrakte Datentypen

  7. Bäumen
  8. Terminologie

    Eigenschaften

    Darstellung binärer Bäume

    Darstellung von Wäldern

    Traversierung von Bäumen

  9. Rekursion
  10. Rekurrente Beziehungen

    Teile und Herrsche

    Rekursive Traversierung von Bäumen

    Beseitigung der Rekursion

    Ausblick

  11. Analyse von Algorithmen
  12. Rahmen

    Klassifikation von Algorithmen

    Berechnungskomplexität

    Analyse des durchschnittlichen Falles

    Näherungsweise und asymptotische Ergebnisse

    Grundlegende rekurrente Beziehung

    Ausblick

  13. Implementation Algorithmen
  14. Auswahl eines Algorithmus

    Empirische Analyse

    Programmoptimierung

    Algorithmen und Systeme

    Sortieralgorithmen

  15. Elementare Sortierverfahren
  16. Spielregel

    Selection Sort

    Insertion Sort

    Exkurs: Bubble Sort

    Kenngrößen der Leistungsfähigkeit elementarer Sortiermethoden

    Sortieren von Dateien mit großen Datensätzen

    Shellsort

    Distribution Counting

  17. Quicksort
  18. Der grundlegende Algorithmus

    Kenngrößen der Leistungsfähigkeit von Quicksort

    Beseitigung der Rekursion

    Kleine Teildateien

    Zerlegung mit Hilfe des mittleren von drei Elementen

    Auswählen

  19. Digitales Sortieren
  20. Bits

    Radix Exchange Sort

    Straight Radix Sort

    Kenngrößen der Leistungsfähigkeit digitaler Sortierverfahren

    Ein lineares Sortierverfahren

  21. Prioritätswarteschlangen
  22. Elementare Implementationen

    Die Datenstruktur des Heaps

    Algorithmen mit Heaps

    Heapsort

    Indirekte Heaps

    Weiterentwickelte Implementationen

  23. Mergesort
  24. Mischen

    Mergesort

    Mergesort von Listen

    Bottom-Up Mergesort

    Kenngrößen der Leistungsfähigkeit

    Optimierte Implementationen

    Weitere Bemerkungen zur Rekursion

  25. Externes Sortieren
  26. Sortieren-Mischen

    Ausgeglichenes Mehrweg-Mischen

    Replacement Selection

    Praktischen Erwägungen

    Mehrphasen-Mischen

    Ein einfacherer Weg

    Suchalgorithmen

  27. Elementare Suchmethoden
  28. Sequentielle Suche

    Binäre Suche

    Suche in einem Binärbaum

    Löschen

    Indirekte binäre Suchbäumen

  29. Ausgeglichene Bäume
  30. Top-Down 2-3-4-Bäumen

    Rot-Schwarz-Bäumen

    Andere Algorithmen

  31. Hashing
  32. Hash-Funktionen

    Getrennte Verkettung

    Lineares Austesten

    Doppeltes Hashing

    Ausblick

  33. Digitales Suchen
  34. Digitale Suchbäumen

    Digitale Such-Tries

    Digitales Mehrwege-Suchen

    Patricia

  35. Externes Suchen
  36. Indexsequentielle Zugriff

    B-Bäume

    Erweiterbares Hashing

    Virueller Speicher

    Verarbeitung von Zeichenfolgen

  37. Suchen in Zeichenfolgen
  38. Kurzer historischer Abriß

    Der grobe Algorithmus

    Der Algorithmus von Kunth-Morris-Pratt

    Der Algorithmus von Boyer-Moore

    Der Algorithmus von Rabin-Krap

    Mehrfache Suche

  39. Pattern Matching
  40. Beschreibung von Mustern

    Automaten für das Pattern Matching

    Darstellung des Automaten

    Simulation des Automaten

  41. Syntaxanalyse (Parsing)
  42. Kontextfreie Grammatiken

    Der rekursive Abstieg (Top-Down-Syntaxanalyse)

    Bottom-Up-Syntaxanalyse

    Compiler

    Compiler-Compiler

  43. Datenkomprimierung
  44. Lauflängenkodierung

    Kodierung mit variabler Länge

    Erzeugung des Huffman-Codes

    Implementation

  45. Kryptologie
  46. Spielregeln

    Einfache Methoden

    Ver- und Entschlüsselungsmaschinen

    Kryptosysteme mit öffentlichen Schlüsseln

     

    Geometrische Algorithmen

  47. Elementare geometrische Methoden
  48. Punkte, Linien und Polygone

    Schnitt von Strecken

    Einfacher geschlossener Pfad

    Enthaltensein in einem Polygon

    Ausblick

  49. Bestimmung der konvexen Hülle
  50. Spielregeln

    Einwickeln

    Das Durchsuchen nach Graham

    Innere Elimination

    Aspekte der Leistungsfähigkeit

  51. Bereichssuche
  52. Elementare Verfahren

    Gitterverfahren

    Zweidimensionale Bäume

    Mehrdimensionale Bereichssuche

  53. Geometrischer Schnitt
  54. Horizontale und vertikale Linien

    Implementation

    Allgemeiner Schnitt von Strecken

  55. Probleme des nächsten Punktes
  56. Das Problem des nächsten Paares

    Voronoi-Diagramme

    Algorithmen für Graphen

  57. Elementare Algorithmen für Graphen
  58. Glossar

    Darstellung

    Tiefensuche

    Nichtrekursive Tiefensuche

    Breitensuche

    Labyrinthe

    Ausblick

  59. Zusammenhang
  60. Zusammenhängende Komponenten

    Zweifacher Zusammenhang

    Algorithmen zur Vereinigungs-Suche

  61. Gewichtete Graphen
  62. Minimaler Spannbaum

    Prioritätssuche

    Das Verfahren von Kruskal

    Kürzester Pfad

    Minimaler Spannbaum und kürzeste Pfade in dichten Graphen

    Geometrische Probleme

  63. Gerichtete Graphen
  64. Tiefensuche

    Transitive Hülle

    Alle kürzesten Pfade

    Topologisches Sortieren

    Streng zusammenhängende Komponenten

  65. Fluß in einem Netzwerk
  66. Das Problem des Flusses in einem Netzwerk

    Das Verfahren von Ford-Fulkerson

    Suche in Netzwerke

  67. Paarung
  68. Bipartite Graphen

    Problem der Stabilen Ehe

    Weiterentwickelte Algorithmen

    Mathematische Algorithmen

  69. Zufallzahlen
  70. Anwendung

    Methode der linearen Kongruenz

    Methode der additiven Kongruenz

    Test der Zufälligkeit

    Bemerkungen zur Implementation

  71. Arithmetik
  72. Arithmetik für Polynome

    Berechnung und Interpolation von Polynomen

    Multiplikation von Polynomen

    Rechenoperationen mit großen ganzen Zahlen

    Rechenoperationen mit Matrizen

  73. Gaußsches Eliminationsverfahren
  74. Ein einfaches Beispiel

    Beschreibung des Verfahrens

    Variationen und Erweiterungen

  75. Kurvenanpassung
  76. Interpolation mit Hilfe von Polynomen

    Spline-Interpolation

    Methode der kleinsten Quadrate

  77. Integration
  78. Symbolische Integration

    Einfache Quadraturverfahren

    Zusammengesetzte Verfahren

    Adaptive Quadratur

    Weiterführende Themen

  79. Parallele Algorithmen
  80. Allgemeine Ansätze

    Perfektes Mischen

    Systolische Felder

    Ausblick

  81. Die schnelle Fourier-Transformation
  82. Berechnen, Multiplizieren, Interpolieren

    Komplexe Einheitswurzeln

    Berechnung in den Einheitswurzeln

    Interpolation mit Hilfe der Einheitswurzeln

    Implementation

  83. Dynamische Programmierung
  84. Das Rucksack-Problem

    Das Produkt mehrerer Matrizen

    Optimale binäre Suchbäume

    Zeit- und Speicheraufwand

  85. Lineare Programmierung
  86. Lineare Optimierungsaufgaben

    Geometrische Interpretation

    Die Simplexmethode

    Implementation

  87. Erschöpfendes Durchsuchen
  88. Erschöpfendes Durchsuchen in Graphen

    Backtracking

    Digression: Erzeugung von Permutationen

    Approximationsalgorithmen

  89. NP-vollständige Probleme

Deterministische und nichtdeterministische Algorithmen mit polynomialer Zeit

NP-Vollständigkeit

Der Satz von Cook

Einige NP-vollständige Probleme