Diskrete Mathematik II

Slides:



Advertisements
Ähnliche Präsentationen
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Advertisements

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Kapitel 6: Klassifizierung von Sortiertechniken
Sortierverfahren Richard Göbel.
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Fibonacci-Heaps) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps) Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung Arrays-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Übung Diskrete Mathematik SS 2003 Segmentschnitt I.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Minimum Spanning Tree: MST
Diskrete Mathe 9 Vorlesung 9 SS 2001
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Effiziente Algorithmen
Diskrete Mathematik II
Geoinformation I Vorlesung 8 WS 2000/2001 Graphen.
Diskrete Mathematik II
Geoinformation II Vorlesung 2 SS 2001 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Geoinformation II (6. Semester)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Vorlesung Binärer Suchbaum II-
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Kapitel 5: Von Datenstrukturen zu Abstrakten Datentypen
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 6 SS 2001 Segmentschnitt III.
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Gruppeneinteilung Gruppe A: Mo 12:00 – 12:45 Uhr –bis einschließlich.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Binärbäume.
Diskrete Mathematik II
 Präsentation transkript:

Diskrete Mathematik II Vorlesung 2 SS 2001 Datenstrukturen für den Algorithmus von Dijkstra

Übersicht letzte Stunde heute: Algorithmus von Dijkstra alle kürzesten Wege von einem Knoten (1:n) heute: Datenstrukuren für den Algorithmus von Dijkstra Datenstruktur für Graphen mit Kosten Adjazenzliste Adjazenzmatrix Datenstruktur für grüne Knoten Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

... aus der letzten Vorlesung algorithm Dijkstra (S) {berechne alle kürzesten Wege von S aus} BLAU = ; GRÜN = {S}; dist(S) = 0; while( GRÜN   ) { wähle K  GRÜN, so daß  K‘  GRÜN: dist(K)  dist(K‘); färbe K blau; for( Ki  succ(K) ) { if (Ki  (GRÜN  BLAU) //noch nicht besuchter Knoten färbe die Kante (K,Ki) rot; färbe Ki grün; dist(Ki) = dist(K) + dist(K,Ki); } Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Vorgehen Repräsentation des Graphen grüne Knotenmenge „ for( Ki  succ(K) „ Variante a: Adjazenzmatrix Variante b: Adjazenzliste grüne Knotenmenge Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzmatrix Definition: Knoten, die durch eine Kante verbunden sind, heißen benachbart oder adjazent. Definition: Die n  n Matrix A = (aij) mit heißt Adjazenzmatrix des Graphen. Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzmatrix mit Kosten beachte: alle Diagonalelemente sind 0 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzmatrix 20 30 15 80 150 Do Du Ha D W K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzmatrix Vorteil: Möglichkeit, in einer Laufzeit von O(1) festzustellen, ob eine Kante von Ki nach Kj existiert. Nachteil: hoher Platzbedarf: O(n2) Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzliste Für jeden Knoten wird eine Liste seiner (Nachfolger-) Nachbarknoten verwaltet. Über ein Array der Länge n (n = Anzahl der Knoten) ist jede Liste direkt zugänglich Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzliste Do Array Du Ha W D K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzliste Do Ha W D K Du Du 80 Ha 20 D 20 W 15 Du 30 D 150 K 15 K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Adjazenzliste Vorteil: geringer Platzbedarf: O(n+e) (e = Anzahl der Kanten) Nachteil: Um zu prüfen, ob ki und kj benachbart sind, muß die Adjazenzliste von ki durchlaufen und nach kj durchsucht werden. aber: für Dijkstra ideal Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Repräsentation der „grünen Knoten“ die „aktiven“ Knoten Operationen Algorithmus: füge die Nachfolger des betrachteten Knoten ein selektiere und entferne das kleinste Element Ziel: Einfügen eines Knotens in O(log n) Finden und Entfernen des kleinsten Knotens in O(log n) Variante A: AVL-Baum spezialisierter auf diese Anwendung: Heap Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

die „grünen Knoten“ abgearbeitet noch in Arbeit noch nicht betrachtet Do Ha W Du K D 20 80 30 15 abgearbeitet W noch in Arbeit noch nicht betrachtet

Eine neue Datenstruktur: der Heap Idee: ein zu jeder Zeit möglichst vollständiger Baum alle Ebenen bis auf die letzte sind voll besetzt Darstellung eines vollständigen Baums in einem Array Problem: Bestimmung der Kanten auf Indizes Index des Vaters Indizes der beiden Söhne Beispiel: Eingabe der sortierten Folge von Zahlen {1 .. 15} achten Sie auf die Indizierung Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Eine neue Datenstruktur: Der Heap 1 ein partiell geordneter Baum für jeden Teilbaum T‘ mit Wurzel x gilt: info(y)  info(x) für jeden Knoten y von T‘ {in der Wurzel steht das Minimum des Teilbaums} 2 3 4 5 6 7 8 10 11 12 13 14 15 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Einbettung in einen Array: index(k) = n index (k.linkerSohn) = 2  n index (k.rechterSohn) = 2  n + 1 index (k.vater) =   Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 2 3 1 14 7 15 12 6 13 10 5 11 8 4 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 1 2 3 4 5 6 7 8 10 11 12 13 14 15 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 2 3 4 5 6 7 8 10 11 12 13 14 15 9 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements 15 algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 2 3 4 5 6 7 8 10 11 12 13 14 9 15 2 3 4 5 6 7 8 9 10 11 12 13 14 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements 2 algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 15 3 4 5 6 7 8 10 11 12 13 14 9 2 15 3 4 5 6 7 8 9 10 11 12 13 14 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements 2 algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 4 3 15 5 6 7 8 10 11 12 13 14 9 2 4 3 15 5 6 7 8 9 10 11 12 13 14 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Entfernen des kleinsten Elements 2 algorithm deletemin (H) /*lösche das minimale Element des Heaps und gib es aus*/ gib den Eintrag der Wurzel aus; lösche die Wurzel und ersetze sie durch die letzte Position im Baum sei p die Wurzel mit den Söhnen q und r; while q oder r existieren und ((info (p) > info (q)) oder (info (p) > info (r))) vertausche p mit dem kleineren der beiden Söhne benenne p, q, r um 4 3 5 6 7 8 15 10 11 12 13 14 9 2 4 3 8 5 6 7 15 9 10 11 12 13 14 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Einfügen eines neuen Elements 1 algorithm insert (H,e) /*füge Element e in H ein*/ füge einen neuen Knoten q mit Eintrag e an der ersten freien Position der untersten Ebene des Baumes ein, eröffne ggf. neue Ebene; p sei der Vater von q; while p existiert und (info (q) < info (p)) do vertausche p und q benenne p und q um 2 3 4 5 6 7 8 10 11 12 9 1 2 3 4 5 6 7 8 9 10 11 12 Beispiel: füge „0“ ein Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Einfügen eines neuen Elements 1 algorithm insert (H,e) /*füge Element e in H ein*/ füge einen neuen Knoten q mit Eintrag e an der ersten freien Position der untersten Ebene des Baumes ein, eröffne ggf. neue Ebene; p sei der Vater von q; while p existiert und (info (q) < info (p)) do vertausche p und q benenne p und q um 2 3 4 5 6 7 8 10 11 12 9 1 2 3 4 5 6 7 8 9 10 11 12 Beispiel: füge „0“ ein Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Einfügen eines neuen Elements 1 algorithm insert (H,e) /*füge Element e in H ein*/ füge einen neuen Knoten q mit Eintrag e an der ersten freien Position der untersten Ebene des Baumes ein, eröffne ggf. neue Ebene; p sei der Vater von q; while p existiert und (info (q) < info (p)) do vertausche p und q benenne p und q um 2 3 4 5 7 8 10 11 12 9 6 1 2 3 4 5 7 8 9 10 11 12 6 13 / 2  = 6 13 Beispiel: füge „0“ ein Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Einfügen eines neuen Elements 1 algorithm insert (H,e) /*füge Element e in H ein*/ füge einen neuen Knoten q mit Eintrag e an der ersten freien Position der untersten Ebene des Baumes ein, eröffne ggf. neue Ebene; p sei der Vater von q; while p existiert und (info (q) < info (p)) do vertausche p und q benenne p und q um 2 4 5 3 7 8 10 11 12 9 6 1 2 4 5 3 7 8 9 10 11 12 6 Beispiel: füge „0“ ein Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Einfügen eines neuen Elements algorithm insert (H,e) /*füge Element e in H ein*/ füge einen neuen Knoten q mit Eintrag e an der ersten freien Position der untersten Ebene des Baumes ein, eröffne ggf. neue Ebene; p sei der Vater von q; while p existiert und (info (q) < info (p)) do vertausche p und q benenne p und q um 2 1 4 5 3 7 8 10 11 12 9 6 2 1 4 5 3 7 8 9 10 11 12 6 Beispiel: füge „0“ ein Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2

Für „Kenner“ Für „Hacker“ ? Bestimmen des Vaterknotens: ganzzahlige Division durch 2 Bestimmen des Sohns: Multiplikation mit 2 ggf. Addition von 1 auf Maschinenebene einfache Bit-Schiftoperationen Für „Hacker“ ? Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 2