240 likes | 385 Views
Diskrete Mathematik II. Vorlesung 3 27.04.00 der Algorithmus von Floyd. Ü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
E N D
Diskrete Mathematik II Vorlesung 3 27.04.00 der Algorithmus von Floyd
Ü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) Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
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 II - SS 2000 - Vorlesung 3 - 27.04.00
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 II - SS 2000 - Vorlesung 3 - 27.04.00
Algorithmus von Floyd: Idee Do 20 Für jedes Paar Vorgänger / Nachfolger 35 Ha Für jeden Knoten 15 W Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Algorithmus von Floyd (Beispiel) Do 80 Vorgänger Du 20 Ha 30 20 betrachteter Knoten 15 W D 150 15 80 Nachfolger K Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 80 20 Du Ha 30 20 15 D W 150 15 80 K Algorithmus von Floyd (Beispiel) Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 80 20 Du Ha 30 20 15 D W 150 15 80 K Algorithmus von Floyd (Beispiel) fangen wir wieder an mit Dortmund Knoten besitzt nur Nachfolger Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 80 20 35 Du Ha 30 20 15 D W 150 15 80 K Algorithmus von Floyd (Beispiel) als nächstes Hagen Do W Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 20 35 Du Ha 30 20 15 D W 150 15 80 K Algorithmus von Floyd (Beispiel) Jetzt haben wir 2 Vorgänge und 3 Nachfolger - wie viele Paare also? Do 80 80 Du Ha D K Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 20 35 185 45 Du Ha 30 20 15 D W 150 115 15 80 K Algorithmus von Floyd (Beispiel) 65 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 185 45 Du Ha 30 165 20 15 D W 150 95 115 15 80 K Algorithmus von Floyd (Beispiel) Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 185 45 Du Ha 30 165 20 15 D W 150 95 115 15 80 K Algorithmus von Floyd (Beispiel) Do Ha D W Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 185 45 Du Ha 30 165 20 15 D W 150 95 115 15 80 K Algorithmus von Floyd (Beispiel) Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 45 Du Ha 30 20 15 D W 150 95 115 15 80 K Algorithmus von Floyd (Beispiel) 85 165 165 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 20 15 D W 95 115 15 80 K Algorithmus von Floyd (Beispiel) 65 150 150 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 95 115 15 80 K Algorithmus von Floyd (Beispiel) 50 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 95 115 15 80 K Algorithmus von Floyd (Beispiel) Do Du Ha W K Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 95 15 80 K Algorithmus von Floyd (Beispiel) 115 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 15 80 K Algorithmus von Floyd (Beispiel) 95 95 100 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 100 15 K Algorithmus von Floyd (Beispiel) 80 80 80 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
Do 65 20 35 85 45 Du Ha 30 65 20 15 D W 50 35 80 100 15 K Algorithmus von Floyd (Beispiel) 65 Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00
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 II - SS 2000 - Vorlesung 3 - 27.04.00
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! Lutz Plümer - Diskrete Mathematik II - SS 2000 - Vorlesung 3 - 27.04.00 24