Graphalgorithmen Robert Elsässer

Werbung
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
Herunterladen