Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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.

Ähnliche Präsentationen


Präsentation zum Thema: "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."—  Präsentation transkript:

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

2 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

3 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

4 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

5 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.

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

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

8 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 )

9 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

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

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

12 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

13 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

14 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

15 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

16 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}

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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


Herunterladen ppt "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."

Ähnliche Präsentationen


Google-Anzeigen