230 likes | 404 Views
Diskrete Mathematik II. Vorlesung 1 SS 2001. Algorithmus von Dijkstra. Übersicht über das Semester. zwei besonders wichtige Algorithmen für GIS kürzeste Wege in einem Netz Überlagerung von Netzen, Bestimmung aller Schnittpunkte effiziente Zugriffsstrukturen für räumliche Objekte.
E N D
Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra
Übersicht über das Semester • zwei besonders wichtige Algorithmen für GIS • kürzeste Wege in einem Netz • Überlagerung von Netzen, Bestimmung aller Schnittpunkte • effiziente Zugriffsstrukturen für räumliche Objekte Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Übersicht Vorlesung I • der kürzeste Weg von A nach B in einem Netz • Beispiel • Problemstellung • Animation des Algorithmus • Formulierung des Algorithmus in Pseudocode • erforderliche Datenstrukturen Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Algorithmus von Dijkstra: Beispiel Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
80 20 30 20 15 80 15 Do Du Ha W D K
Do 80 Du 20 Ha 30 20 15 W D 15 80 K Beispiel Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Kürzeste Wege: Idee • Gegeben: Gerichteter Graph, dessen Kanten mit Zahlen (Kosten, z.B. km oder min.) beschriftet sind • Aufgabe: Berechnung des kürzesten Weges x z von einem Startknoten x zu einem Zielknoten z • erste Idee: Berechne alle Wege und wähle den kürzesten • Beobachtung: wenn der kürzeste Weg von x nach z über y führt, sind die Teilwege x y und y z ebenfalls kürzeste Wege • effizienteLösung: berechne alle kürzesten Wege und wähle den von x nach z aus • Algorithmus von Dijkstra: jeder Schritt sitzt („Greedy“-Algorithmus) Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do 80 Du 20 Ha 30 20 15 W D 15 80 K Algorithmus von Dijkstra: Beispiel Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do 80 80 20 Du 20 Du Ha Ha 30 20 15 W D 15 80 K Algorithmus von Dijkstra: Beispiel Do Do Du Ha Minimaler Abstand von Do Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 80 20 Du 20 Du Ha Ha 30 20 15 W 15 W D 15 80 K Algorithmus von Dijkstra: Beispiel W Minimaler Abstand von DO Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do 80 Du 20 Ha 30 20 15 W D 15 80 K Algorithmus von Dijkstra: Beispiel abgearbeitet W noch in Arbeit noch nicht betrachtet
Do Do 80 80 20 Du 20 Du Ha Ha 30 20 15 W 15 W D Kürzester Weg 15 80 K Algorithmus von Dijkstra: Beispiel Bereits vorhanden Du Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 80 W D Du D K 15 80 K Algorithmus von Dijkstra: Beispiel 30 D Du K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 30 80 W D kürzester Weg Du D K 15 80 K Algorithmus von Dijkstra: Beispiel Bereits vorhanden D Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 30 80 W D Du K 15 80 D K Algorithmus von Dijkstra: Beispiel 20 D Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 30 80 W D kürzester Weg Du K 20 15 80 D K Algorithmus von Dijkstra: Beispiel Bereits vorhanden Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 30 80 W D D Du K 20 15 80 D K Algorithmus von Dijkstra: Beispiel K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Do Do 80 20 Du 20 Ha Ha 30 20 15 W 15 W D D 30 Du 20 15 80 D K K Algorithmus von Dijkstra: Beispiel 15 K K Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Formulierung des Algorithmus Bezeichnungen SStartknoten K beliebiger Knoten im Graphen dist (K)Abstand des Knotens K vom Startknoten S GRÜNKnotenmenge BLAU Knotenmenge succ (K) Menge der Nachfolger(-Nachbarn) von K für alle Elemente dist (K, K‘) Distanz (Zeit) der Kante (K, K‘) Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Formulierung des Algorithmus 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 1
Formulierung des Algorithmus dist(Ki) = dist(K) + dist(K,Ki); } else { if(Ki GRÜN) { // Ki erneut erreicht if(dist(Ki) > dist(K) + dist(K,Ki)) { färbe die Kante (K,Ki) rot; färbe die bisher rote Kante zu Kigrün; dist(Ki) = dist(K) + dist(K,Ki); } else { färbe (K,Ki) grün }}} else { färbe (K,Ki) grün }}} // ki BLAU Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
soweit der Algorithmus, aber ... • wie finde ich schnell alle Nachfolger eines Knoten? • for( Ki succ(K) )... • wie finde ich schnell • K GRÜN, so daß K‘ GRÜN:dist(K) dist(K‘); • Datenstruktur für den Graphen • Datenstruktur für die grünen (aktiven) Knoten • der schrittweise Entwurf des Algorithmus läßt diese Fragen zunächst absichtlich offen • zugunsten der Konzentration auf die wesentliche Idee Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1
Ist der Algorithmus denn überhaupt korrekt? • Für jeden grünen Knoten gilt:unter den rot-grünen Wegen ist der rote der kürzeste. • Beweis: Induktion über die Folge der blau gefärbten Knoten • Für jeden blauen Knoten gilt:unter allen Wegen ist der rote der kürzeste. • Beweis: Induktion über die Folge der blau gefärbten Knoten • Aufgabe: • Plausibilität am Beispiel • versuchen Sie einen allgemeingültigen Beweis Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 1