Presentation is loading. Please wait.

Presentation is loading. Please wait.

Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 9.5.

Similar presentations


Presentation on theme: "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 9.5."— Presentation transcript:

1 Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 9.5.

2 Approximationsalgorithmen für APSP Wir betrachten zuerst das APD Problem auf gerichteten ungewichteten Graphen Sei A die Adjazenzmatrix eines solchen Graphen Kürzeste Wege haben Längen zwischen 1 und n-1 Was, wenn wir nur Wege suchen, die wenig länger als kürzeste sind?

3 Approximation Sei ein Optimierungsproblem gegeben mit Eingaben x und Lösungen s, d.h. Funktionen cost(x,s) und feasible(x,s) existieren, und wir suchen zu gegebenem x ein s mit feasible(x,s)=1 und (z.B.) minimalem cost(x,s) Eine Lösung s zu Instanz x habe Verlustfaktor, wenn cost(x,s) · ¢ cost(x,s opt ) für die optimale Lösung s opt Ein Algorithmus, der zu Eingaben x Ausgaben s produziert heisst -Approximationsalgorithmus, wenn s einen Verlustfaktor von höchstens hat

4 Exakte Berechnung APD Betrachte gerichtete ungewichtete Graphen A sei Adjazenzmatrix mit hinzugefügten Kanten (u,u) für alle Knoten u Berechne A k für alle k=1,…,n-1 mittels Boolescher Matrixmultiplikation Wenn A k [u,v]=1 und A k-1 [u,v]=0, dann gilt (u,v)=k (für u v) Problem: Zu viele Matrixmultiplikationen

5 Approximation von APD Betrachte gerichtete ungewichtete Graphen A sei Adjazenzmatrix mit hinzugefügten Kanten (u,u) für alle Knoten u t k = d (1+ ) k e für alle k, bis t k ¼ n Berechne Matrizen X k = für k=1,….,O(log n/ ) mittels Boolescher Matrixmultiplikation Wenn X k [u,v]=1 und X k-1 [u,v]=0, gibt Schätzung t k für die Distanz (u,v) aus.

6 Approximation von APSP Laufzeit: O(log 2 n/ ) Matrixmultiplikationen reichen aus: Um A t zu berechnen sind O(log t) Matrixmultiplikationen ausreichend (Übung) Approximationsqualität/Korrektheit: Der Algorithmus gibt immer Distanzen aus, die grösser oder gleich den tatsächlichen sind, aber nur um einen Faktor (1+ ) grösser sein können.

7 Approximation von APSP Der Algorithmus gibt immer Distanzen aus, die grösser oder gleich den tatsächlichen sind, aber nur um einen Faktor (1+ ) grösser sein können. Denn: wenn X k [u,v]=1, dann gibt es einen Pfad der Länge höchstens t k, wenn X k-1 [u,v]=0 gibt es keinen Pfad der Länge t k-1

8 Approximation von APSP Wir betrachten nun den Fall von gerichteten gewichteten Graphen mit Gewichten aus {1,…,M} Wir werden versuchen, durch Matrixmultiplikationen ähnlich wie zuvor die paarweisen Distanzen zu approximieren

9 Distanzprodukte Betrachte zwei Matrizen A,B mit Einträgen aus {0,1,…,M, 1 } Das Distanzprodukt zwischen A und B ist eine Matrix P mit P[u,v]=min w A[u,w]+B[w,v] Klar: wenn A Gewichtsmatrix eines Graphen ist (mit Diagonale 0), dann entspricht in A 2 jeder Eintrag den Weglängen für kürzeste Wege mit zwei Kanten, und A n enthält die paarweisen Distanzen Im allgemeinen ist das Distanzprodukt nicht so einfach wie die Integermatrixmultiplikation zu berechnen Das Distanzprodukt A 2 kann in Zeit O(n 3 ) berechnet werden

10 Distanzprodukte Unser Ansatz: Wir zeigen, wie das Distanzprodukt für Matrizen mit gegebenem maximalen Gewicht M in Zeit O(Mn ) berechnet werden kann Algorithmus dist-prod Dann verkleinern wir unsere Gewichte geeignet (für Approximation der Distanzen) und berechnen das Distanzprodukt Algorithmus approx-dist-prod Berechnen approximative Distanzen In Laufzeit n ¢ polylog n ¢ log M Damit: wenn M=poly(n), erhalten wir n polylog n Laufzeit Approximationsalgorithmus

11 Berechnung des Distanzprodukts Seien A,B Matrizen mit Einträgen aus {0,1,…,M, 1 } Distanzprodukt P mit P[u,v]=min w A[u,w]+B[w,v] sei zu berechnen M ¢ T(n) sei kleiner als n 3 für die Laufzeit T(n) der Integermatrixmultiplikation, sonst verwende trivialen Algorithmus

12 Algorithmus dist-prod 1. Setze A[u,v]=(n+1) M-A[u,v] wenn A[u,v] · M, sonst =0 2. Setze B[u,v]=(n+1) M-B [u,v] wenn B[u,v] · M, sonst =0 3. Berechne das Produkt P von A und B mit Integermatrixmultiplikation 4. Setze P[u,v]=2M- b log (n+1) P[u,v] c, wenn P[u,v]>0, sonst auf 1

13 Korrektheit Für alle u,v erhalten wir nach der Matrixmultiplikation: Es gilt: wenn x 1,…,x n nat. Zahlen, dann ist das Maximum gleich (Übung) Damit erhalten wir das Minimum über alle w von A[u,w]+B[w,v],d.h. das Distanzprodukt wird korrekt berechnet.

14 Laufzeit Es wird eine Matrixmultiplikation verwendet Allerdings werden grosse Zahlen erzeugt: die Matrixeinträge haben O(M log n) Bits. Trivialer Multiplikationsalgorithmus braucht O(M 2 log 2 n) Zeit Schönhage-Strassen Multiplikation in Zeit O(M log 2 n loglog n) Gesamtzeit dann O(T(n) ¢ M log 2 n loglog n)

15 Approximation des Distanzproduktes Wir wollen nun das Distanzprodukt beliebig nah approximieren Dazu skalieren wir die Gewichte Seien also Gewichte im Graphen aus der Menge {0,…,M} Wir wollen Gewichte skalieren auf die Menge {0,…,R} Dann wenden wir vorigen Algorithmus an

16 Algorithmus scale Eingabe: Matrix A mit natürlichen Gewichten und Zahlen Q und R A[u,v]= d A[u,v] ¢ R/Q e wenn A[u,v] · Q A[u,v]= 1 sonst Ausgabe A Bemerkung: Laufzeit O(n 2 log Q)

17 Algorithmus approx-dist- prod Eingabe Matrizen A,B, Schranke M und Parameter R 1. Setze Matrix C überall auf 1 2. Durchlaufe alle r von b log R c bis d log M e a) scale(A,2 r,R) b) scale(B,2 r,R) c) C=distprod(A,B) d) C[u,v]=min{C[u,v], (2 r /R) C[u,v] } für alle u,v 3. Ausgabe C

18 Laufzeit O(T(n) ¢ R ¢ log 2 n loglog n) für dist-prod per Iteration Es gibt O(log M) Iterationen Rest O(n 2 log M ) Insgesamt also O(T(n) ¢ log M ¢ R ¢ log 2 n loglog n)

19 Behauptung Seien M und R Potenzen von 2 und A,B Matrizen mit Einträgen aus {0,1,…,M, 1 } Sei P das Distanzprodukt von A und B und C die Ausgaben von approx-dist-prod Dann gilt für alle u,v: P[u,v] · C[u,v] · (1+4/R) P[u,v] Somit erhalten wir für geeignetes, genügend grosses R eine beliebig nahe Approximation Insbesondere für R=O(log n) interessant

20 Beweis P[u,v] · C[u,v] Gilt, weil in scale immer aufgerundet wird C[u,v] · (1+4/R) P[u,v] Sei w ein Zeuge für P[u,v], d.h. P[u,v]=A[u,w]+B[w,v] OBdA sei A[u,w] · B[w,v] Fälle B[w,v]=0 oder =1: Übung Sei 2 s-1 < B[w,v] · 2 s mit s · log M Wenn s · log R, dann werden weder A[u,w] noch B[w,v] in der ersten Iteration verfälscht und somit wird C[u,v]=P[u,v] korrekt berechnet

21 Beweis C[u,v] · (1+4/R) P[u,v] Sei w ein Zeuge für P[u,v], d.h. P[u,v]=A[u,w]+B[w,v] OBdA sei A[u,w] · B[w,v] Sei 2 s-1 < B[w,v] · 2 s mit s · log M Wenn s ¸ log R: Betrachte die Iteration, in der r=s Ergebnis von scale:

22 Beweis Dann gilt:

23 Approximation der Distanzen Wir haben nun einen sehr effizienten Algorithmus, um das Distanzprodukt zu approximieren Wir wollen A n für das Distanzprodukt berechnen Wiederholtes Quadrieren liefert uns dies mit O(log n) Multiplikationen Führe jede mit Approximationsqualität 1/log n aus

24 Algorithmus approx-dist Eingabe: Matrix A mit Einträgen aus {0,1,…,M, 1 }, und Diagonaleinträgen 0, keine Nulleinträge ausserhalb der Diagonale Approximationsparameter Setze R=4 log n / ln(1+ ) Erhöhe R zur nächsten Zweierpotenz Setze D=A Von l=1 bis log n: Berechne D=approx-dist(D,D,Mn,R) Setze D [u,v]=min{D [u,v],D [u,v]} Ausgabe D

25 Laufzeit Anzahl der Iterationen: O(log n) Schleifendurchläufe Damit insgesamt O(T(n) ¢ log (Mn) ¢ log 4 n loglog n / ) Insbesondere für M=poly(n) erhalten wir T(n) polylog n Algorithmus

26 Approximationsqualität R ¸ 4 log n/ ln (1+ ) Wir erhalten nach Iteration l eine Approximationsqualität von (1+4/R) l für die Elemente von A hoch 2 l Nach log n Iterationen somit

27 Zusammenfassung: Theorem Für gerichtete Graphen mit Kantengewichten aus {1,…,M} kann das APD Problem mit Approximationqualität (1+ ) in Zeit O(T(n) ¢ log (Mn) ¢ log 4 n loglog n / ) für die Laufzeit T(n) der Integermatrixmultiplikation gelöst werden. Bemerkung: mit Tricks und Matrixmultiplikation mit Zeugen können auch die Pfade selbst berechnet werden, randomisiert und auf Kosten eines log Faktors.


Download ppt "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 9.5."

Similar presentations


Ads by Google