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 3 27.04.00 der Algorithmus von Floyd Foliendesign:

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 3 27.04.00 der Algorithmus von Floyd Foliendesign:"—  Präsentation transkript:

1

2 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign: cand. geod. Jörg Steinrücken

3 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Übersicht letzte Stunden: –Algorithmus von Dijkstra –alle kürzesten Wege von einem Knoten (1:n) – Datenstrukuren für den Algorithmus von Dijkstra Datenstruktur für Graphen mit Kosten –Adjazenzliste –Adjazenzmatrix Datenstruktur für grüne Knoten Heute: –Algorithmus von Floyd –kürzeste Wege zwischen allen Paaren von Knoten (n:n)

4 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Algorithmus von Floyd Problem: Bestimmung der kürzesten Wege zwischen allen Paaren von Knoten Lösung –iterative Anwendung des Algorithmus von Dijkstra –besser: Algorithmus von Floyd

5 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Algorithmus von Floyd: Idee 20 Do Ha W 15 betrachteter Knoten Vorgänger Nachfolger 35 füge neue direkte Kante ein, wenn noch keine Kante vorhanden oder die neue Kante kürzer ist als eine vorhandene

6 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Algorithmus von Floyd: Idee 20 Do Ha W 15 Für jeden Knoten 35 Für jedes Paar Vorgänger / Nachfolger

7 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D betrachteter Knoten Vorgänger Nachfolger Algorithmus von Floyd (Beispiel)

8 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

9 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Knoten besitzt nur Nachfolger Algorithmus von Floyd (Beispiel) fangen wir wieder an mit Dortmund

10 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Do W 35 Algorithmus von Floyd (Beispiel) als nächstes Hagen

11 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Do Ha Du K D Algorithmus von Floyd (Beispiel) Jetzt haben wir 2 Vorgänge und 3 Nachfolger - wie viele Paare also?

12 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

13 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

14 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Do Ha WD Algorithmus von Floyd (Beispiel)

15 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

16 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

17 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel) 150

18 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

19 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Do Ha W Du K Algorithmus von Floyd (Beispiel)

20 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

21 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel) 95

22 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel) 80

23 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

24 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

25 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Implementierung mit der Kostenmatrix-Darstellung private floyd (float A [n,n], float C [n,n]) {int i, j, k; for(j = 1; j <= n; j++) {for(k = 1; k <=n; k++) //A: Wege { A[j,k] = C[j,k]; } //C: Kanten, ggf.  } for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { for(k = 1; k <= n; k++) { if(A[j,i] + A[i,k] < A[j,k]) { A[j,k] = A[j,i] + A[i,k]; }}}}} Heute wieder Java!

26 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Floyd-Erweiterung: Mitführung der kürzesten Wege private floyd (float A[n,n], float C[n,n], int W[n,n]) {int i, j, k; for(j = 1; j <= n; j++) {for(k = 1; k <=n; k++) { A[j,k] = C[j,k]; W[j,k] =  } } for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { for(k = 1; k <= n; k++) { if(A[j,i] + A[i,k] < A[j,k]) { A[j,k] = A[j,i] + A[i,k]; W[j,k] = i; }}}}}

27 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Floyd (3) Beachten Sie: –Die Ausgabeprozedur setzt voraus, daß ein Weg zwischen 2 Knoten x und y existiert Übung: –Wie sehen Sie der Matrix A an, ob ein Weg zwischen 2 Knoten existiert –allgemeiner: Wie sehen Sie der Matrix A an, ob der Graph zusammenhängend ist –der Graph ist zusammenhängend, wenn zwischen jedem Paar (a,b) von Knoten ein Weg existiert –beachten Sie, dass wir von gerichteten Graphen sprechen, also (a,b)  (b,a)

28 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Ausgabe des kürzesten Weges public weg(int[][] W,int X,int Y) //gibt kürzesten Weg von X nach Y aus { weg_rekursiv(X,Y); gib Y aus; } private weg_rekursiv(int[][] W,int X,int Y) { if( W[X,Y] =  ) then gib X aus; else {Z = W[X,Y]; weg_rekursiv(W,X,Z); weg_rekursiv(W,Z,Y);}

29 Schönen Dank für Ihre Aufmerksamkeit und Auf Wiedersehen


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 3 27.04.00 der Algorithmus von Floyd Foliendesign:"

Ähnliche Präsentationen


Google-Anzeigen