Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 2 20.04.00 Datenstrukturen für den Algorithmus von.

Slides:



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

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Algorithm Engineering
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)
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
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.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag 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.
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
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
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 Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Minimum Spanning Tree: MST
Kapitel 2: Datenstrukturen
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.
Effiziente Algorithmen
Diskrete Mathematik II
Geoinformation I Vorlesung 8 WS 2000/2001 Graphen.
Diskrete Mathematik II
Geoinformation II (6. Semester)
Diskrete Mathematik II
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
Effiziente Algorithmen
Kapitel 5: Von Datenstrukturen zu Abstrakten Datentypen
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Diskrete Mathematik II
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
Vorlesung Einführendes Beispiel-
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 I Vorlesung Rekursion-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Binärer Suchbaum IV AVL-Baum I
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 Voronoi-Diagramme.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Binärer Baum, Binärer Suchbaum I
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Binärbäume.
Diskrete Mathematik II
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von Dijkstra

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Übersicht letzte Stunde –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 II - SS 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( K i  succ(K) ) { if (K i  (GRÜN  BLAU) //noch nicht besuchter Knoten färbe die Kante (K,K i ) rot; färbe K i grün; dist(K i ) = dist(K) + dist(K,K i ); }... aus der letzten Vorlesung

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Vorgehen Repräsentation des Graphen –„ for( K i  succ(K) „ –Variante a: Adjazenzmatrix –Variante b: Adjazenzliste grüne Knotenmenge

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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Adjazenzmatrix mit Kosten k beachte: alle Diagonalelemente sind 0

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Adjazenzmatrix Do Ha W Du K D

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Adjazenzmatrix Vorteil: Möglichkeit, in einer Laufzeit von O(1) festzustellen, ob eine Kante von K i nach K j existiert. Nachteil: hoher Platzbedarf: O(n 2 )

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 II - SS Vorlesung Adjazenzliste Do Ha W D K Du Array

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Adjazenzliste Du80W15Du30Ha20D150K15 Do Ha W D K Du D20K80

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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 II - SS Vorlesung Do Ha W Du K D W die „grünen Knoten“ abgearbeitet noch in Arbeit noch nicht betrachtet

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 II - SS Vorlesung Einbettung in einen Array: index(k) = n –index (k.linkerSohn) = 2  n –index (k.rechterSohn) = 2  n + 1 –index (k.vater) =   Eine neue Datenstruktur: Der Heap 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}

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Beispiel: füge „0“ ein

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Beispiel: füge „0“ ein 0 0

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Beispiel: füge „0“ ein  13 / 2  = 6

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Beispiel: füge „0“ ein 0 6

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Beispiel: füge „0“ ein 0 6

Für „Kenner“ 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 II - SS Vorlesung