Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 27.4."—  Präsentation transkript:

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

2 APSP und APD schneller? Es scheint, dass wir bei Laufzeiten wie n 3 oder nm viel Arbeit mehrfach tun. Betrachte Adjazenzmatrix A eines ungerichteten Graphen G Wir wollen wissen, ob Knoten v von Knoten u aus erreichbar ist für alle u, v Betrachte Matrix A 2, wobei das Matrixprodukt über den ganzen Zahlen betrachtet wird A 2 [u,v] > 0 gdw es einen Weg der Länge 2 von u nach v gibt!

3 Verfahren per Matrixmultiplikation Setze alle A[u,u]=1 Jetzt: A t [u,v]> 0 gdw es einen Pfad der Länge höchstens t von u nach v gibt Berechne A n-1 Dies scheint langsam zu sein: n-1 Matrixmultiplikationen (?)

4 Verfahren per Matrixmultiplikation Besser: Sei 2 k-1 · n · 2 k Berechne 2 k –te Potenz von A Wie: wiederholtes Quadrieren Berechne A, A 2, A 4, A 8, A 16 Nach k Multiplikationen fertig. k · log n+1 Bestes Verfahren zur Matrixmultiplikation habe Laufzeit O(n ). Es ist bekannt, dass 2 · · 2.376 Also Laufzeit O(n log n)

5 Verfahren per Matrixmultiplikation Problem: Wir haben nur Zusammenhang gelöst, nicht aber APD oder gar APSP!

6 Ziele: 1. Lösung von APD in Zeit O(n log n) für ungewichtete ungerichtete Graphen 2. APSP in Zeit O(n log 2 n) für ungewichtete ungerichtete Graphen durch einen randomisierten Algorithmus 3. APSP für gerichtete Graphen mit polynomiellen nichtnegativen Gewichten: Approximation mit Verlustfaktor (1+ ) in Zeit O(n / ¢ log 3 n) 4. APSP für gewichtete ungerichtete Graphen: Approximation mit Verlustfaktor 3 in Zeit O(n 2 ) 5. APSP für ungerichtete ungewichtete Graphen: schnelle Approximation mit additivem Fehler k

7 APD für ungerichtete ungewichtete Graphen Gegeben ist ein ungerichteter ungewichteter Graph G Wie haben eine Subroutine für schnelle Matrixmultiplikation zur Verfügung Finde paarweise Distanzen Sei A die Adjazenzmatrix von G A 2 [u,v] Die Anzahl verschiedener Pfade der Länge 2 von u nach v Diagonale in A 2 ungleich 0 möglich Neue Matrix A: A[u,v]=1 gdw u v und A[u,v]=1 oder A 2 [u,v]> 0 sonst A[u,v]=0 erhalten Matrix: A[u,v]=1, wenn Pfad Länge · 2 von u nach v in G durch eine Matrix Multiplikation neuer Graph G mit Adjazenzmatrix A

8 Beobachtungen Lemma 1: Seien u,v Knoten. (u,v) sei Distanz in G, (u,v) in G Wenn (u,v) gerade ist, dann ist (u,v)=2 (u,v) Wenn (u,v) ungerade ist, dann ist (u,v)=2 (u,v)-1 Beweis: Übung Idee für einen Algorithmus: wenn wir die Distanzen für G kennen, und die Parität der Längen der kürzesten Pfade in G, dann können wir Distanzen in G berechnen. Verwende Rekursion.

9 Die Paritäten Lemma 2: Seien u,v Knoten Für jeden Nachbarn w von u gilt: (u,v)-1 · (w,v) · (u,v)+1 Es gibt einen Nachbarn w von u mit (w,v)= (u,v)-1 Beweis: Übung

10 Die Paritäten Lemma 3: Seien u,v Knoten Wenn (u,v) gerade ist, dann ist (w,v) ¸ (u,v) für jeden Nachbarn w von u Wenn (u,v) ungerade ist, dann ist (w,v) · (u,v) für jeden Nachbarn w von u, und es gibt ein w mit (w,v)< (u,v) Beweis: Sei (u,v)=2k. (w,v) ¸ 2k-1 mit Lemma 2 und (u,v)=k mit Lemma 1. Mit Lemma 1 (w,v) ¸ (w,v)/2 ¸ k-1/2, und daher ¸ k= (u,v), denn Distanzen sind ganze Zahlen. Analog für ungerades (u,v).

11 Die Paritäten Lemma 4: Seien u,v Knoten (u) sei die Menge der Nachbarn von u und g(u) der Grad von u (u,v) ist gerade gdw w 2 (u) (w,v) ¸ (u,v)g(u) (u,v) ist ungerade gdw w 2 (u) (w,v)< (u,v)g(u) Beweis: Summiere alle Ungleichungen in Lemma 3.

12 Der Algorithmus für APD Gegeben Graph G als Matrix A Gesucht Ausgabematrix D Berechne A: A[u,v]=1 gdw u v und A[u,v]+A 2 [u,v]>0, sonst 0 Wenn A[u,v]=1 für alle u v, dann setze D=2A-A Berechne D für A rekursiv Setze S=AD Berechne D: D[u,v]= 2D[u,v], wenn S[u,v] ¸ D[u,v] A 2 [u,u] 2D[u,v]-1, wenn S[u,v] < D[u,v] A 2 [u,u]

13 Laufzeit Der APD Algorithmus hat Laufzeit O(T(n) log n), wenn Matrixmultiplikation Laufzeit T(n) hat, wobei die Matrizen n £ n sind. Beweis: Der Graph G habe Durchmesser d. Dann hat G Durchmesser d d/2 e. Sei L(n,d) die Laufzeit. L(n,1) und L(n,2) sind O(T(n))+O(n 2 ) Die Rekursionstiefe ist O(log n) L(n,d) · 2T(n)+L(n, d d/2 e )+O(n 2 ) Bemerkung : Matrixeinträge sind O(n 2 )

14 Korrektheit Induktion über den Durchmesser. Fall 1: G hat Durchmesser · 2 Dann wird D=2A-A berechnet, korrekt Fall 2: Durchmesser ¸ 3 (Durchmesser von A somit kleiner als von A) Wenn (u,v) gerade ist, dann ist (u,v)=2 (u,v)=2D[u,v] Wenn (u,v) ungerade ist, dann ist (u,v)=2 (u,v)- 1=2D[u,v]-1 Zu zeigen: (u,v) gerade gdw S[u,v] ¸ D[u,v] A 2 [u,u] und (u,v) ungerade gdw S[u,v] < D[u,v] A 2 [u,u] Es gilt aber S[u,v]= w A[u,w]D[w,v]= w 2 (u) (w,v) Per Induktion sind alle D korrekt, A 2 [u,u]=g(u) und Lemma 4 ergibt Korrektheit.

15 Zusammenfassung Wir erhalten einen O(n log n) Algorithmus für APD. Setze beliebigen effizienten Matrixmultiplikationsalgorithmus ein.


Herunterladen ppt "Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS 06 27.4."

Ähnliche Präsentationen


Google-Anzeigen