Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Diskrete Mathematik II

Ähnliche Präsentationen


Präsentation zum Thema: "Diskrete Mathematik II"—  Präsentation transkript:

1 Diskrete Mathematik II
Vorlesung 3 SS 2001 Algorithmus von Floyd

2 Übersicht letzte Stunden: Heute: 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) Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

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

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

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

6 Algorithmus von Floyd (Beispiel)
Do 80 Vorgänger Du 20 30 Ha 20 betrachteter Knoten 15 D W 150 15 80 Nachfolger K Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

7 Algorithmus von Floyd (Beispiel)
Do Ha W Du K D 20 15 80 30 150 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

8 Algorithmus von Floyd (Beispiel)
fangen wir wieder an mit Dortmund Do Ha W Du K D 20 15 80 30 150 Knoten besitzt nur Nachfolger Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

9 Algorithmus von Floyd (Beispiel)
als nächstes Hagen Do Ha W Du K D 30 150 20 15 80 Do 35 W Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

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

11 Algorithmus von Floyd (Beispiel)
Do Ha W Du K D 30 150 20 15 80 35 185 65 115 45 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

12 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 150 20 15 80 65 35 185 45 165 95 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

13 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 150 20 15 80 65 35 185 45 95 165 Do Ha D W Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

14 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 150 20 15 80 65 35 185 45 95 165 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

15 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 150 20 15 80 65 35 45 95 85 165 165 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

16 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 20 15 80 65 35 85 45 95 65 150 150 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

17 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 20 15 80 65 35 85 45 95 50 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

18 Algorithmus von Floyd (Beispiel)
115 Do Ha W Du K D 30 50 20 15 80 65 35 85 45 95 Do Du Ha W K Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

19 Algorithmus von Floyd (Beispiel)
Do Ha W Du K D 30 50 20 15 80 65 35 85 45 95 115 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

20 Algorithmus von Floyd (Beispiel)
Do Ha W Du K D 30 50 20 15 80 65 35 85 45 95 95 100 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

21 Algorithmus von Floyd (Beispiel)
100 Do Ha W Du K D 30 50 20 15 65 35 85 45 80 80 80 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

22 Algorithmus von Floyd (Beispiel)
100 Do Ha W Du K D 30 50 20 15 65 35 85 45 80 35 65 Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

23 Algorithmus von Floyd (Beispiel)
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 35 80 100 15 65 K Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

24 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(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! Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

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

26 Floyd (3) Beachten Sie: Übung:
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) Lutz Plümer - Diskrete Mathematik Semester - SS Vorlesung 3

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


Herunterladen ppt "Diskrete Mathematik II"

Ähnliche Präsentationen


Google-Anzeigen