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 SS 2001 Algorithmus von Floyd.

Ähnliche Präsentationen


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

1 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 3 SS 2001 Algorithmus von Floyd

2 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 32 Ü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)

3 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 33 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

4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 34 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

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

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

7 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 37 Do Ha W Du K D Algorithmus von Floyd (Beispiel)

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

9 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 39 Do Ha W Du K D Do W 35 Algorithmus von Floyd (Beispiel) als nächstes Hagen

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

11 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel)

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

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

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

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

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

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

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

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

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

21 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung Do Ha W Du K D Algorithmus von Floyd (Beispiel) 80

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

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

24 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 324 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!

25 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 325 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; }}}}}

26 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 326 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)

27 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS Vorlesung 327 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);}


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

Ähnliche Präsentationen


Google-Anzeigen