Graphalgorithmen Robert Elsässer Vorlesung vom 04. November 2010 Programm des Tages: • Berechnung kürzester Wege Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 0 1. Approximationsalgorithmen für APSP • Wir betrachten zunächst das APD Problem auf gerichteten ungewichteten Graphen. • Sein A die Adjazenzmatrix eines solchen Graphen G = (V, E). • Kürzeste Wege haben Längen zwischen 1 und n − 1. Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 1 Definition 1: Bezeichne Π ein Optimierungsproblem. Ein Algorithmus A heißt αApproximationsalgorithmus, wenn Alg zu jeder Instanz I von Π eine zulässige, aber nicht notwendigerweise optimale Lösung berechnet, so dass RAlg (I) ≤ α wobei • RAlg (I) := • RAlg (I) := Alg(I) OP T (I) , OP T (I) Alg(I) , falls Π Minimierungsproblem falls Π Maximierungsproblem Hier bezeichnet Alg(I) den Wert der Lösung, die Alg für I berechnet und OP T (I) ist der Wert einer optimalen Lösung für I . Beispiel: Rucksackproblem Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 2 Exakte Berechnung APD • • • • Betrachte gerichtete ungewichtete Graphen Sei A die Adjazenzmatrix mit hinzugefügten Kanten (u, u) für alle Knoten u. Berechne Ak für alle k = 1, . . . , n − 1 mittels Boolscher Matrixmultiplikation Wenn Ak [u, v] = 1 und Ak−1[u, v] = 0, dann gilt δ(u, v) = k. Problem: Zu viele Matrixmultiplikationen Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 3 Approximation von APD • • • • Betrachte gerichtete ungewichtete Graphen Sei A die Adjazenzmatrix mit hinzugefügten Kanten (u, u) für alle Knoten u. Sei tk = d(1 + ²)k e für alle k, so dass tk ≤ n. Berechne Matrizen Xk = Atk für k = 1, . . . , O(log n/²) mittels Boolscher Matrixmultiplikation • Wenn Xk [u, v] = 1 und Xk−1[u, v] = 0, dann wird δ(u, v) über tk abgeschätzt. Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 4 Laufzeit O(log2 n/²) Matrixmultiplikationen reichen aus: • Um At zu berechnen sind O(log t) Matrixmultiplikationen ausreichend Approximationsqualität/Korrektheit Der Algorithmus gibt immer Distanzen aus, die größer oder gleich den tatsächlichen sind. Dabei werden die tatsächlichen Werte um höchstens einen Faktor 1 + ² überschätzt. Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 5 • Wir betrachten nun den Fall von gerichteten gewichteten Graphen, wobei alle Gewichte natürliche Zahlen ≤ M sind. • Wir werden durch Matrixmultiplikation ähnlich wie zuvor die paarweisen Distanzen zu approxmieren. Distanzprodukte • Betrachte zwei Matrizen A, B mit Einträgen aus {0, . . . , M, ∞}. • Das Distanzprodukt zwischen A und B ist eine Matrix P mit P [i, j] = mink A[i, k]+b[k, j] Das Distanzprodukt kann in Zeit O(n3) berechnet werden. Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 6 • Wir zeigen, dass das Distanzprodukt für zwei Matrizen mit gegebenem maximalem Gewicht M in Zeit O(M · M M (n)) berechnet werden kann. • Sei M · M M (n) kleiner als n3 (sonst verwende den trivialen Algorithmus) Algorithmus Dist-Prod • • • • Setze A0[u, v] = (n + 1)M −A[u,v] wenn A[u, v] ≤ M , sonst 0. Setze B 0[u, v] = (n + 1)M −B[u,v] wenn B[u, v] ≤ M , sonst 0. Berechne das Produkt P 0 = A0 · B 0. Setze P [u, v] = 2M − blogn+1 P 0[u, v]c, wenn P 0[u, v] > 0, sonst auf ∞. Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 7 Laufzeit von Dist-Prod(A,B) • Es wird eine (Integer-)Matrixmultiplikation verwendet • Es werden große Zahlen erzeugt: Die Einträge in der Matrix haben Θ(M log n) Bits • Trivialer Multiplikationsalgorithmus benötigt Zeit Θ(M 2 log2 n) • Schönhage-Strassen Multiplikation in Zeit O(M log n log log n) • Gesamtzeit: O(M M (n) · M log2 n log log n) Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 8 Approximation von Dist-Prod(A,B) • • • • Skalierung der Gewichte Kantengewichte des Graphen im Intervall {0, 1, . . . , M } Gewichte werden auf die Menge {0, 1, . . . , R} skaliert Man wendet Dist-Prod auf die skalierten Werte an Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 9 Algorithmus scale(A,Q,R) • Eingabe: Matrix A mit Einträgen aus der Menge der natürlichen Zahlen und die Zahlen Q und R (R ≤ Q) • A0[u, v] = dA[u, v] · R/Qe, wenn A[u, v] ≤ Q • A0[u, v] = ∞, wenn A[u, v] > Q • Ausgabe: A’ (Laufzeit: O(n2 log Q) Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 10 Algorithmus Approx-Dist-Prod(A,B,M,R) • Eingabe: Matrizen A,B, Schranke M und Parameter R (R ≤ M) • Setze Matrix C überall auf ∞ • Durchlaufe alle r von blog Rc bis dlog M e – scale(A, 2r , R) – scale(B, 2r , R) – C 0 =Dist-Prod(A’,B’) r – C[u, v] = min{C[u, v], 2R C 0[u, v]} • Ausgabe C Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 11 Laufzeit, Korrektheit von Approx-Dist-Prod(A,B,M,R) O(M M (n) · R log2 n log log n) für Dist-Prod per Iteration O(log M ) Iterationen Rest: O(n2 log M ) Insgesamt O(M M (n) log M · R log2 n log log n) Falls M und R Potenzen von 2, A,B ∈ {0, . . . , M, ∞}n×n, P Distanzprodukt von A und B, C Ausgabe von Approx-Dist-Prod ´ ` • Dann gilt: P [u, v] ≤ C[u, v] ≤ 1 + R4 P [u, v] • Betrachte R = O(log n) • • • • • Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 12 Approximation der Distanzen • • • • Effizienter Algorithmus für die Approximation des Distanzproduktes Berechne An für das Distanzprodukt Wiederholtes Quadrieren (O(log n) Multiplikationen Bei jeder Multiplikation: Approximationsqualität Robert Elsässer Universität Paderborn 1 log n Graphalgorithmen WS 10/11 13 Algorithmus Approx-Dist(A,²) • • • • • • Eingabe: Matrix A ∈ {0, . . . , M, ∞}n×n; keine Nulleinträge außerhalb der Diagonale Approximationsparameter ² Setze R = 4 log n ln(1+²) Erhöhe R zur nächsten Zweierpotenz Setze D = A Weiderhole log n mal – D 0 =Approx-Dist(D,D,Mn,R) – D[u, v] = min{D[u, v], D 0[u, v]} • Ausgabe D Robert Elsässer Universität Paderborn Graphalgorithmen WS 10/11 14