Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen

4.4.2 Virtuelles Hashing Erweiterbares Hashing Das Gridfile Implementation von Hashverfahren in Java

Algorithmen und Datenstrukturen

Grundlegende Algorithmen

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Uwe Schöning. Algorithmik. Spektrum Akademischer Verlag Heidelberg Berlin

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Algorithmen. Robert Sedgewick Princeton University ADDISON-WESLEY

Algorithmen und Datenstrukturen

Robert Sedgewick. Algorithmen in Java. Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen. Java-Beratung durch Michael Schidlowsky

Robert Sedgewick. Algorithmen in Java. »il 1-4 Grundlagen Datenstrykturen Sortleren Suchen. java-beratung durch Michael Schidlowsky

Carlos Camino Grundlagen: Algorithmen und Datenstrukturen SS 2015

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii

Fragenkatalog 1. Kurseinheit

Algorithmen - Eine Einführung

Algorithmen und Datenstrukturen

7 Weitere Baumstrukturen und Heapstrukturen

Algorithmen - Eine Einführung

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

SORTIEREN MIT BÄUMEN - HEAPSORT

NAME, VORNAME: Studiennummer: Matrikel:

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume. AVL-Bäume Treaps Splay-Bäume

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen WS 2007/2008

Algorithmen und Datenstrukturen II: Hashverfahren

Algorithmen und Datenstrukturen II: Hashverfahren

Übung Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Hashverfahren. (Algorithmen und Datenstrukturen II) Prof. Dr. Oliver Braun. Letzte Änderung: :33. Hashverfahren 1/29

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen

Informatik II Prüfungsvorbereitungskurs

Algorithmen 1 Tutorium

ADS: Algorithmen und Datenstrukturen 1

Teil VII. Hashverfahren

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

, i =, i 2 = 1 2. f (n)

Teil 1: Suchen. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Suchen 1-1

Algorithmen und Datenstrukturen 13. ZUSAMMENFASSUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Geometrische Algorithmen Segmentschnitt. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Segmentschnitt

Entwurf und Analyse von Datenstrukturen

Klausur Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Manipulation von Mengen

Detaillierte Gliederung Algorithmen und Datenstrukturen (für ET/IT)

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen und Datenstrukturen (für ET/IT)

Beispielprüfung Datenstrukturen und Algorithmen D-INFK

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp

Grundlagen der Informatik

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Informatik II Prüfungsvorbereitungskurs

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}

Grundlagen: Algorithmen und Datenstrukturen

Klausurvorbereitung. 1 Zentrale Begriffe. 2 Bipartite Graphen. 2.1 Begriffe. Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S.

7. Sortieren Lernziele. 7. Sortieren

5. Vorrangwarteschlangen (priority queues)

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

Seminar Datenbanken Martin Gerstmann

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

5. Vorrangwarteschlangen - Priority Queues

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren

Informatik II, SS 2018

Datenstrukturen Kurzanleitung

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen

Range-Search. Operationen: Welche Datenstrukturen sind geeignet? Arrays? Listen? AVL-Bäume? Splay-Bäume?

DAP2-Klausur

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Grundlagen der Programmierung

Algorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Klausur Algorithmen und Datenstrukturen SS 2017

Transkript:

Thomas Ottmann / Peter Widmayer Algorithmen und Datenstrukturen 4. Auflage Spektrum Akademischer Verlag Heidelberg Berlin

Inhaltsverzeichnis 1 Grundlagen 1.1 Algorithmen und ihre formalen Eigenschaften 1.2 Zwei Beispiele arithmetischer Algorithmen 1.2.1 Ein Multiplikationsverfahren 1.2.2 Polynomprodukt 1.3 Verschiedene Algorithmen für dasselbe Problem 1.4 Die richtige Wahl einer Datenstruktur 1.5 Lineare Listen 1.5.1 Sequenzielle Speicherung linearer Listen 1.5.2 Verkettete Speicherung linearer Listen 1.5.3 Stapel und Schlangen 1.6 Ausblick auf weitere Datenstrukturen 1.7 Skip-Listen 1.7.1 Perfekte und randomisierte Skip-Listen 1.7.2 Analyse 1.8 Implementation von Datenstrukturen und Algorithmen in 1.8.1 Einige Elemente von Java 1.8.2 Implementation linearer Listen 1.9 Aufgaben 2 Sortieren 2.1 Elementare Sortierverfahren 2.1.1 Sortieren durch Auswahl 2.1.2 Sortieren durch Einfügen 2.1.3 Shellsort 2.1.4 Bubblesort 2.2 Quicksort 2.2.1 Quicksort: Sortieren durch rekursives Teilen 2.2.2 Quicksort-Varianten 2.3 Heapsort 2.4 Mergesort 2.4.1 2-Wege-Mergesort 2.4.2 Reines 2-Wege-Mergesort

XVI Inhaltsverzeichnis 2.4.3 Natürliches 2-Wege-Mergesort 110 2.5 Radixsort 113 2.5.1 Radix-exchange-sort 113 2.5.2 Sortieren durch Fachverteilung 115 2.6 Sortieren vorsortierter Daten 119 2.6.1 Maße für Vorsortierung 120 2.6.2 A-sort 124 2.6.3 Sortieren durch lokales Einfügen und natürliches Verschmelzen 129 2.7 Externes Sortieren 133 2.7.1 Das Magnetband als Externspeichermedium 134 2.7.2 Ausgeglichenes 2-Wege-Mergesort 136 2.7.3 Ausgeglichenes Mehr-Wege-Mergesort 139 2.7.4 Mehrphasen-Mergesort 143 2.8 Untere Schranken 145 2.9 Implementation und Test von Sortierverfahren in Java 150 2.10 Aufgaben 153 Suchen 159 3.1 Das Auswahlproblem 160 3.2 Suchen in sequenziell gespeicherten linearen Listen 165 3.2.1 Sequenzielle Suche 165 3.3 3.4 3.5 3.2.2 Binäre Suche 3.2.3 Fibonacci-Suche 3.2.4 Exponentielle Suche 3.2.5 Interpolationssuche Selbstanordnende lineare Listen Java Implementation Aufgaben 166 168 171 172 172 178 180 Hashverfahren 4.1 4.2 4.3 4.4 Zur Wahl der Hashfunktion 4.1.1 Die Divisions-Rest-Methode 4.1.2 Die multiplikative Methode 4.1.3 Perfektes und universelles Hashing Hashverfahren mit Verkettung der Überläufer Offene Hashverfahren 4.3.1 Lineares Sondieren 4.3.2 Quadratisches Sondieren 4.3.3 Uniformes und zufälliges Sondieren 4.3.4 Double Hashing 4.3.5 Ordered Hashing 4.3.6 Robin-Hood-Hashing 4.3.7 Coalesced Hashing Dynamische Hashverfahren 4.4.1 Lineares Hashing 4.4.2 Virtuelles Hashing 4.4.3 Erweiterbares Hashing 183 185 185 186 186 190 195 197 199 200 203 207 211 213 217 219 224 228

Inhaltsverzeichnis XVII 4.5 DasGridfile 231 4.6 Implementation von Hashverfahren in Java 241 4.7 Aufgaben 246 5 Bäume 251 5.1 Natürliche Bäume 254 5.1.1 Suchen, Einfügen und Entfernen von Schlüsseln 25 8 5.1.2 Durchlaufordnungen in Binärbäumen 263 5.1.3 Analytische Betrachtungen 267 5.2 Balancierte Binärbäume 275 5.2.1 AVL-Bäume 275 5.2.2 Bruder-Bäume 287 5.2.3 Gewichtsbalancierte Bäume 302 5.3 Randomisierte Suchbäume 309 5.3.1 Treaps 310 5.3.2 Treaps mit zufälligen Prioritäten 312 5.4 Selbstanordnende Binärbäume 318 5.4.1 Splay-Bäume 319 5.4.2 Amortisierte Worst-case-Analyse 324 5.5 B-Bäume 331 5.5.1 Suchen, Einfügen und Entfernen in B-Bäumen 335 5.6 Weitere Klassen 340 5.6.1 Übersicht 340 5.6.2 Konstante Umstrukturierungskosten und relaxiertes Balancieren 345 5.6.3 Eindeutig repräsentierte Wörterbücher 362 5.7 Optimale Suchbäume 367 5.8 Alphabetische und mehrdimensionale Suchbäume 374 5.8.1 Tries 374 5.8.2 Quadranten-und 2d-Bäume 376 5.9 Implementation von Bäumen und dazugehöriger Algorithmen in Java 379 5.10 Aufgaben 384 6 Manipulation von Mengen 393 6.1 Vorrangswarteschlangen 394 6.1.1 Dijkstras Algorithmus zur Berechnung kürzester Wege 395 6.1.2 Implementation von Priority Queues mit verketteten Listen und balancierten Bäumen 398 6.1.3 Linksbäume 400 6.1.4 Binomial Queues 403 6.1.5 Fibonacci-Heaps 410 6.2 Union-Find-Strukturen 418 6.2.1 Kruskals Verfahren zur Berechnung minimaler spannender Bäume 418 6.2.2 Vereinigung nach Größe und Höhe 421 6.2.3 Methoden der Pfadverkürzung 425 6.3 Allgemeiner Rahmen 429 6.4 Aufgaben 432

XVIII Inhaltsverzeichnis 7 Geometrische Algorithmen 435 7.1 Einleitung 435 7.2 Das Scan-line-Prinzip 436 7.2.1 Sichtbarkeitsproblem 438 7.2.2 Das Schnittproblem für iso-orientierte Liniensegmente 441 7.2.3 Das allgemeine Liniensegment-Schnittproblem 444 7.3 Geometrisches Divide-and-conquer 450 7.3.1 Segmentschnitt mittels Divide-and-conquer 451 7.3.2 Inklusions-und Schnittprobleme für Rechtecke 456 7.4 Geometrische Datenstrukturen 459 7.4.1 Reduktion des Rechteckschnittproblems 460 7.4.2 Segment-Bäume 463 7.4.3 Intervall-Bäume 468 7.4.4 Prioritäts-Suchbäume 472 7.5 Anwendungen geometrischer Datenstrukturen 485 7.5.1 Ein Spezialfall des HLE-Problems 486 7.5.2 Dynamische Bereichssuche mit einem festen Fenster 493 7.6 Distanzprobleme und ihre Lösung 496 7.6.1 Distanzprobleme 497 7.6.2 Das Voronoi-Diagramm 501 7.6.3 Die Speicherung des Voronoi-Diagramms 506 7.6.4 Die Konstruktion des Voronoi-Diagramms 509 7.6.5 Lösungen für Distanzprobleme 515 7.7 Aufgaben 525 8 Graphenalgorithmen 533 8.1 Topologische Sortierung 541 8.2 Transitive Hülle 544 8.2.1 Transitive Hülle allgemein 544 8.2.2 Transitive Hülle für azyklische Digraphen 546 8.3 Durchlaufen von Graphen 548 8.3.1 Einfache Zusammenhangskomponenten 551 8.3.2 Strukturinformation durch Tiefensuche 551 8.4 Zusammenhangskomponenten 555 8.4.1 Zweifache Zusammenhangskomponenten 555 8.4.2 Starke Zusammenhangskomponenten 558 8.5 Kürzeste Wege 563 8.5.1 Kürzeste Wege in Distanzgraphen 564 8.5.2 Kürzeste Wege in beliebig bewerteten Graphen 569 8.5.3 Alle kürzesten Wege 573 8.6 Minimale spannende Bäume 574 8.7 Flüsse in Netzwerken 581 8.8 Zuordnungsprobleme 592 8.8.1 Maximale Zuordnungen in bipartiten Graphen 594 8.8.2 Maximale Zuordnungen im allgemeinen Fall 596 8.8.3 Maximale gewichtete Zuordnungen 605 8.9 Aufgaben 605

Inhaltsverzeichnis XIX 9 Suchen in Texten 613 9.1 Suchen in dynamischen Texten 614 9.1.1 Das naive Verfahren zur Textsuche 614 9.1.2 Das Verfahren von Knuth-Morris-Pratt 616 9.1.3 Das Verfahren von Boyer-Moore 620 9.1.4 Signaturen 626 9.2 Approximative Zeichenkettensuche 627 9.3 Suchen in statischen Texten (gemeinsam mit S. Schuierer) 639 9.3.1 Aufbereitung von Texten - Suffix-Bäume 639 9.3.2 Analyse 647 9.4 Aufgaben 650 10 Ausgewählte Themen 653 10.1 Randomisierte Algorithmen 653 10.1.1 Randomisiertes Quicksort 654 10.1.2 Randomisierter Primzahltest 656 10.1.3 Öffentliche Verschlüsselungssysteme 660 10.2 Parallele Algorithmen 666 10.2.1 Einfache Beispiele paralleler Algorithmen 667 10.2.2 Paralleles Mischen und Sortieren 673 10.2.3 Systolische Algorithmen 684 10.3 Aufgaben 687 Literaturverzeichnis 691 Index 704