Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Gervas Bodamer Geändert vor über 10 Jahren
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.
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.