Diskrete Mathe II Übung 2.5.2005
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Ü2 Stellt das AK Bonn Nord und AS Tannenbusch (incl. aller abgehenden Kanten) als Graphen dar, der als Eingabe für den Algorithmus von Dijkstra geeignet ist. Verwendet eine sinnvolle Benennung der Knoten. IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Ü2 nach/von Siegburg nach/von Köln Verteilerkreis Bonn Bornheimer Straße Hohe Straße nach/von Koblenz IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
Floyd – Adjazenzmatrix IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Floyd – Graph A 7 E 4 12 B 2 3 1 C 8 D IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Floyd – Pseudocode 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 } } 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]; IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Floyd – Folgen Was fällt nachteilig auf? Welche Daten stehen in A und C? IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Floyd – Wegmitführung 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: Wege A[j,k] = C[j,k]; W[j,k] = ∞; //C: Kanten } } 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; IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Floyd – Wegmitführung Was steht in der Matrix W? IKG - Übung Diskrete Mathe II – Jörg Schmittwilken
IKG - Übung Diskrete Mathe II – Jörg Schmittwilken Übungsaufgabe D E A B C 30 90 20 40 100 10 Notiert die dem obigen Graphen entsprechende Adjazenzmatrix für die Kantengewichte (Kosten). Wendet den Algorithmus von Floyd auf den Graphen an und notiert die jeweilig aktuellen Kosten in der Adjazenzmatrix. Wählt dazu die Felder der Matrix so groß, dass neue Werte neben den alten geschrieben werden können. 8 5 IKG - Übung Diskrete Mathe II – Jörg Schmittwilken