matheII.1(druck)

Werbung
Institut für Kartographie und Geoinformation
Prof. Dr. Lutz Plümer
Diskrete Mathematik II
Vorlesung 1
13.04.00
Suche des kürzesten Weges in
einem Netz
Ü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
2
Ü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
3
Algorithmus von Dijkstra: Beispiel
4
Do
80
Du
20
30
Ha
20
W
D
80
15
K
15
Beispiel
Do
80
Du
20
30
20
Ha
15
W
D
15
80
K
6
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
• effiziente Lösung: berechne alle kürzesten Wege und wähle den
von x nach z aus
• Algorithmus von Dijkstra: jeder Schritt sitzt
(„Greedy“-Algorithmus)
7
Algorithmus von Dijkstra: Beispiel
Do
80
Du
20
30
20
Ha
15
W
D
15
80
K
8
Algorithmus von Dijkstra: Beispiel
Do
80
Du
20
Do
80
Du
30
20
20
Ha
Ha
15
W
D
Minimaler
Abstand von Do
15
80
K
9
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
80
Du
30
20
Ha
20
Ha
15
W
15
W
D
15
80
Minimaler
Abstand von DO
K
10
Algorithmus von Dijkstra: Beispiel
Do
80
Du
abgearbeitet
20
30
20
Ha
15
W
D
noch in Arbeit
15
80
K
noch nicht betrachtet
11
Algorithmus von Dijkstra: Beispiel
Do
80
Du
20
Bereits
vorhanden
80
Du
30
20
Do
Ha
20
Ha
15
W
15
W
D
Kürzester Weg
15
80
K
12
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
20
Ha
30
20
Ha
15
W
15
W
D
30
Du
15
80
D
K
80
K
13
Algorithmus von Dijkstra: Beispiel
Do
80
Du
20
20
Bereits
vorhanden
Ha
30
20
Do
Ha
15
W
15
W
D
kürzester Weg
30
Du
15
80
D
K
80
K
14
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
20
Ha
30
20
Ha
15
W
15
30
W
D
Du
15
80
80
K
20
D
K
15
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
20
Ha
30
20
Ha
15
W
15
W
D
15
80
30
kürzester Weg
Bereits
vorhanden
Du
80
K
20
D
K
16
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
20
Ha
30
20
Ha
15
W
15
30
W
D
Du
15
80
80
K
20
D
K
17
Algorithmus von Dijkstra: Beispiel
Do
80
Du
Do
20
20
Ha
30
20
Ha
15
15
W
W
D
30
Du
15
20
80
D
15
K
K
18
Formulierung des Algorithmus
Bezeichnungen
S
Startknoten
K
beliebiger Knoten im Graphen
dist (K) Abstand des Knotens K vom Startknoten S
GRÜN
Knotenmenge
BLAU
Knotenmenge
succ (K) Menge der Nachfolger(-Nachbarn) von K

für alle Elemente
dist (K, K‘) Distanz (Zeit) der Kante (K, K‘)
19
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); }
20
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
21
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
22
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
Herunterladen