Kürzeste Wege kantenmarkierter (gewichteter) Graph Teil 4 Distanz P G = (V , E , g ) n: (v0 , v1 ), (v1 , v2 ), , ..., (vn−1 , vn ) n P Gewicht (Länge) des Weges/Pfads w (P ) = g ((vi −1 , vi )) Weg/Pfad ADS: Algorithmen und Datenstrukturen 2 der Länge i =1 d (u , v ): Gewicht des kürzesten Pfades von u v nach Varianten Prof. Peter F. Stadler & Sebastian Will nicht-negative Gewichte vs. negative und positive Gewichte Bestimmung der kürzesten Wege: Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik a) zwischen allen Knotenpaaren, b) von einem Knoten Universität Leipzig u aus c) zwischen zwei Knoten u und v Bemerkungen 30. April 2014 kürzeste Wege sind nicht immer eindeutig kürzeste Wege müssen nicht existieren, z.B. wenn: kein Weg existiert oder ein Zyklus mit negativem Gewicht existiert 1 / 23 Zur Erinnerung: Warshall's Transitive Hülle G. Heyer, F. Holz (Abt ASV, Uni LE) SS 2013 2 / 23 Warshall's Algorithmus für Distanzen A = Adjazenzmatrix G (V , E ), n = |V | Warshall-Algorithmus lässt sich einfach modizieren, um kürzeste Wege zwischen allen Knotenpaaren zu berechnen Von i = 1 bis n A[i][i] = 1 Von j = 1 bis n Von i = 1 bis n Falls A[i][j] = 1 Dann Von k = 1 bis n Falls A[j][k] = 1 dann A[i][k] = 1 Fuer alle Paare i,j tue A[i][j] = g((i,j)) Von j = 1 bis n Von i = 1 bis n Von k = 1 bis n A[i][k] = min (A[i][k], A[i][j] + A[j][k]) Annahme: kein Zyklus mit negativem Gewicht vorhanden Komplexität: G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 ADS 2, V 4 SS 2013 3 / 23 Dijkstra-Algorithmus I O (n3 ), n = |V | G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 4 / 23 Dijkstra-Algorithmus II Bestimmung der von einem Knoten ausgehenden kürzesten Wege gegeben: kanten-bewerteter Graph G = (V , E , g ) mit g :E (Kantengewichte) → R+ 0 s ; zu jedem Knoten u wird die Distanz zu Startknoten s D [u ] geführt Startknoten in Q sei Prioritäts-Warteschlange (sortierte Liste); Priorität = Distanzwert Funktion succ (u ) liefert die Menge der direkten Nachfolger von u Verallgemeinerung der Breitensuche (gewichtete Entfernung) Fuer alle Knoten v tue D[v] = unendlich D[s] = 0 PriorityQueue Q = V Solange Q nicht leer dann v = naechster Knoten aus Q mit kleinstem Abstand D Entferne v aus Q Fuer jeden Nachbarn u in succ(v) & Q Falls D[v] + g((v,u)) < D[u] dann D[u] = D[v] + g((v,u)) funktioniert nur bei nicht-negativen Gewichten Optimierung gemäÿ Greedy-Prinzip G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 5 / 23 1 v u 10 10 2 0 3 4 6 s 4 6 3 y v x u 4 2 y v 1 7 6 s 5 8 2 0 3 4 6 x 2 G. Heyer, F. Holz (Abt ASV, Uni LE) Knoten, die am Q s D (s ) = 0 Q genommen. Der kürzeste 0 0 Pfad zu v gehe über direkten Vorgänger v von v . Da v näher an s 0 0 liegt, ist v nach Induktionsvoraussetzung mit richtiger Länge D (v ) bereits entfernt. Da der kürzeste Weg zu v die Länge D (v 0 ) + g ((v 0 , v )) hat und dieser Wert bei Entfernen von v 0 bereits v zugewiesen wurde, wird v mit der richtigen Länge entfernt. wird gewählt, v wird aus hinzugenommene Kanten) 7 5 y x ADS 2, V 4 i liegen, korrekt berechnet und diese Knoten sind aus erfordert nicht-negative Kantengewichte (wachsende Weglänge durch 5 5 s Induktionsschritt: Nimm an, 10 2 Schleifendurchgängen sind die Längen von Induktionsanfang: 5 8 1 i nächsten an entfernt. 8 8 2 7 0 3 5 10 s nach 2 0 5 x u 6 / 23 Korrektheitsbeweis 10 8 s SS 2013 v 1 8 8 u ADS 2, V 4 Dijkstra-Algorithmus: Korrektheit 8 Dijkstra: Beispiel G. Heyer, F. Holz (Abt ASV, Uni LE) 7 2 SS 2013 y 7 / 23 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 8 / 23 Dijkstra-Algorithmus: Eigenschaften Kürzeste Wege mit negativen Kantengewichten (ohne negative Zyklen) O (n2 ), n = |V | Komplexität Bellmann-Ford-Algorithmus O (n) innere Schleife: Aunden des Minimums begrenzt durch O (n ), ebenso das Aufsuchen der Nachbarn von v Pfade bilden aufspannenden Baum (der die Wegstrecken von s aus n-maliges Durchlaufen der äuÿeren Schleife liefert Faktor Fuer alle Knoten v tue D[v] = unendlich D[s] = 0 Von i = 1 bis n-1 Fuer alle Paare (u,v) Falls D[u] + g((u,v)) < D[v] dann D[v] = D[u] + g((u,v)) gesehen minimiert) u und v : Bestimmung des kürzesten Weges zwischen Spezialfall für Dijkstra-Algorithmus mit Start-Knoten v sobald aus Q u (Beendigung entfernt wird) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 9 / 23 v u 10 3 −5 6 s 3 −5 6 s 5 y v x u 11 3 10 3 −5 6 s y v x u 11 3 2 1 3 −5 6 s 2 x 6 2 5 y x 1 4 3 −5 2 q 6 5 y x −1 2 11 / 23 Flüsse in Netzwerken II q (Quelle) und s c :→ R+ . Kapazitätsbeschränkung: P G = (V , E , c ) f :E ∀e ∈ E : f (e ) ≤ c (e ). (v 0 ,v )∈E → R+ 0, so dass gilt: c (e ) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 c 10/4 4/0 q Gesucht: Fluss mit maximalem Wert begrenzt durch Summe der aus P f ((v 0 , v )) = 6/6 a 8/6 q wegführenden bzw. in s eingehenden Kapazitäten q und s jeder weitere Schnitt durch den Graphen, der trennt, begrenzt max. Fluss V in disjunkte A und B , so dass q ∈ A und s ∈ B . P Die Kapazität des Schnitts ist c (A, B ) = u∈A,v ∈B c ((u , v )) Schnitt (A, B) eines Fluss-Netzwerks ist eine Zerlegung von Teilmengen minimaler Schnitt (minimal cut): Schnitt mit kleinster Kapazität s 5/2 4/1 4/3 b d 3/3 c (e ) / Fluss f (e ) G. Heyer, F. Holz (Abt ASV, Uni LE) Kantenwert: Kapazität 3 mit 0 (v ,v 0 )∈E f ((v , v )) f , w (f )P , ist die Summe der Flusswerte der die Quelle q verlassenden Kanten: (q ,v )∈E f ((q , v )) Der Wert von d (Senke), sowie einer Ein Fluss für das Netzwerk ist eine Funktion ∀v ∈ V \ {q , s } : 4 b Flüsse in Netzwerken III Ein (Fluss-) Netzwerk ist ein gerichteter Graph Flusserhaltung: s 4 y SS 2013 10 5 Kantenwert: Kapazität ADS 2, V 4 c 4 6 (s , u )(s , x )(u , v )(u , x )(v , y ) G. Heyer, F. Holz (Abt ASV, Uni LE) 6 a (Kanten werden hier in lexikographischer Ordnung durchlaufen), also Kapazitätsfunktion 12 / 23 und Optimierung y v 5 6 ausgezeichneten Knoten SS 2013 Wieviel Abwasser fasst ein Kanalnetz? 8 −2 0 5 5 −5 10 −2 0 5 10 / 23 Wieviel Strom kann durch ein Leitungsnetz ieÿen? 5 10 −2 0 3 8 1 10 SS 2013 Anwendungsprobleme: 11 5 8 8 2 ADS 2, V 4 Wieviel Autos können durch ein Straÿennetz fahren? −2 0 5 x u v 1 10 −2 0 5 s u 10 10 −2 0 v 8 10 s 1 8 8 1 G. Heyer, F. Holz (Abt ASV, Uni LE) Flüsse in Netzwerken I 8 Bellmann-Ford: Beispiel u BF(G,s) ADS 2, V 4 SS 2013 13 / 23 Restgraph G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 14 / 23 Zunehmender Weg G = (V , E , c ). Sei E 0 = {(v , w )|(v , w ) ∈ E ∨ (w , v ) ∈ E } Sei f ein zulässiger Fluss für Wir denieren die Restkapazität einer Kante rest (e ) = c (e ) − f (e ) falls e ∈ E f ((w , v )) falls (w , v ) ∈ E Der Restgraph von rest (e ) > 0 6/6 a 8/6 f c (bzgl. G ) besteht aus den Kanten e ∈ E 0 , für die 5/2 2 3/3 4 c 2 ADS 2, V 4 3 rest (e ) d SS 2013 3 im Restgraphen heiÿt 6 q 4 q q G. Heyer, F. Holz (Abt ASV, Uni LE) 2 G: e 1 6/6 3 d c 10/6 s 5/0 4/3 4/3 b ADS 2, V 4 3 4/0 q liegt s 3 a 8/6 6 4 1 entlang des zunehmenden Weges c 3 b auf 15 / 23 2 zunehmender Weg. um min(rest (e )) mit 1 b s 6 a q Optimierung des Flusses für s 3 1 d 6 4 3 c (e )/f (e ) G. Heyer, F. Holz (Abt ASV, Uni LE) 6 q 4/3 b 6 a 10/4 s 4/1 Jeder gerichtete Pfad von nach 4/0 q e = (v , w ) wie folgt: 3/3 d SS 2013 16 / 23 Min-Cut-Max-Flow-Theorem Ford-Fulkerson-Algorithmus Ford-Fulkerson-Algorithmus: füge solange zunehmende Wege zum Gesamtuss hinzu wie möglich Theorem (Min-Cut-Max-Flow-Theorem): Sei f ein zulässiger Fluss für G . Dann sind folgende Aussagen äquivalent: f ist maximaler Fluss in G . Der Restgraph von f enthält keinen zunehmenden Weg. w (f ) = c (A, B ) für einen Schnitt (A, B ) von G . G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 Kapazität erhöht sich jeweils um Minimum der verfügbaren Restkapazität der einzelnen Kanten des zunehmenden Weges Solange es einen zunehmenden Weg p in Restgraph G gibt r = min(rest(e)| e liegt auf p) Fuer alle e = (v,w) auf p tue Falls e in E dann f(e) = f(e) + r Sonst f((w,v)) = f((w,v)) - r SS 2013 17 / 23 Maximales Bipartites Matching G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 18 / 23 Matching Matching (Zuordnung) M für ungerichteten Graphen G = (V , E ) ist eine Teilmenge der Kanten, so dass jeder Knoten in V in höchstens einer Kante Beispiel: vorkommt Eine Gruppe von Erwachsenen und eine Gruppe von Kindern besuchen Disneyland. |M | = Gröÿe der Zuordnung Perfektes Matching: kein Knoten bleibt allein (unmatched), d.h. Auf der Achterbahn darf ein Kind jeweils nur in Begleitung eines jeder Knoten ist in einer Kante von M vertreten Erwachsenen fahren. Matching M ist maximal, wenn es kein Matching M' gibt mit Nur Erwachsene/Kinder, die sich kennen, sollen zusammen fahren. |M | < |M 0 | Ein bipartiter Graph ist ein Graph, dessen Knotenmenge V in zwei disjunkte Wieviele Kinder können maximal eine Fahrt mitmachen? V1 und V2 aufgeteilt ist, und dessen Kanten jeweils einen V1 mit einem aus V2 verbinden. (also keine Kanten innerhalb von V1 oder V2 ) Teilmengen Knoten aus G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 19 / 23 Bipartites Matching und maximaler Fluss wesentliche Implementierungsalternativen: Adjazenzmatrix und Adjazenzlisten Algorithmen mit linearem Aufwand: Traversierung von Graphen: Breitensuche vs. Tiefensuche Topologisches Sortieren Test auf Azyklität (Kreisfreiheit) Anwendung des Ford-Fulkerson-Algorithmus SS 2013 21 / 23 Zusammenfassung II Weitere wichtige Algorithmen: Bestimmung der transitiven Hülle: Warshall-Algorithmus Kürzeste Wege: Dijkstra, Bellmann-Ford und Warshall Minimale Spannbäume: Kruskal-Algorithmus maximale Flüsse bzw. maximales Matching: Ford-Fulkerson-Algorithmus viele NP-vollständige Optimierungsprobleme Traveling-Salesman-Problem, Cliquenproblem, Färbungsproblem ... Bestimmung eines planaren Graphen (2D-Graph-Darstellung ohne überschneidende Kanten) G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 20 / 23 ungerichteten Graphen behandeln. V1 nach V2 richten. Jeder Knoten in V1 erhält eingehende Kante von der Quelle. Jeder Knoten in V2 erhält ausgehende Kante zur Senke. Alle Kanten erhalten Kapazität c (e ) = 1 Kanten von ADS 2, V 4 SS 2013 Viele wichtige Informatikprobleme lassen sich mit gerichteten bzw. Quelle und Senke hinzufügen. G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 Zusammenfassung I Maximales Matching kann auf maximalen Fluss zurückgeführt werden: → G. Heyer, F. Holz (Abt ASV, Uni LE) SS 2013 23 / 23 G. Heyer, F. Holz (Abt ASV, Uni LE) ADS 2, V 4 SS 2013 22 / 23