Algorithmen und Komplexität

Werbung
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Algorithmen und Komplexität
Teil 1: Grundlegende Algorithmen
WS 08/09
Friedhelm Meyer auf der Heide
Vorlesung 6, 28.10.08
Friedhelm Meyer auf der Heide
1
HEINZ NIXDORF INSTITUTE
Organisatorisches
University of Paderborn
Algorithms and Complexity
• Prüfungsanmeldung bis 30.10. im LSF für den
Prüfungszeitraum im Dezember.
Für die anderen: Anfang Dezember.
• Prüfungsvoraussetzung :
30% der Punkte der Hausaufgaben
(auf jeden Fall anmelden!)
Auch für gemeinsame
• Prüfung: mündlich 15-20 min
• Prüfungszeiträume: 11.12. - 15.12.
9.2. - 20.2.
23.3. - 3.4.
Prüfungen mit
Komplexitätstheorie
Friedhelm Meyer auf der Heide
2
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Shortest paths problems
Friedhelm Meyer auf der Heide
3
HEINZ NIXDORF INSTITUTE
Shortest paths problems
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
4
HEINZ NIXDORF INSTITUTE
Shortest paths problems
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
5
HEINZ NIXDORF INSTITUTE
Negative edge weights
University of Paderborn
Algorithms and Complexity
In the sequel, we assume that there are no negative edge weights.
Friedhelm Meyer auf der Heide
6
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
Decrease key
Lemma: After each run of the while-loop, d(u) = δ(s,u) for each u ∈ S.
Clearly, this lemma implies the correctness.
Friedhelm Meyer auf der Heide
7
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
8
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
Time bound:
|V| times “extract min”, |E| times “Decrease key” dominate the runtime.
Store Q in a linear array:
“Extract min” time O(|V|), “Decrease key” time O(1)
⇒ Time: O(|V|2 + |E|) = O(|V|2)
Store Q in a Fibonacci-Heap:
“Extract min” and “Decrease key” need time O(log(|V|))
⇒ Time: O((|V| + |E|) log(|V|)) = O(|E| log(|V|))
Friedhelm Meyer auf der Heide
9
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
Animation in a geometric graph:
Edge weight = Euclidean distance
Friedhelm Meyer auf der Heide
10
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
All-pairs-shortest-paths (APSP)
Friedhelm Meyer auf der Heide
11
HEINZ NIXDORF INSTITUTE
All-pairs-shortest-paths (APSP)
University of Paderborn
Algorithms and Complexity
Eingabe: Gerichteter, gewichteter Graph G=(V,E,w),
V={1,… ,n}, ohne negative Kreise,
repräsentiert durch nxn-Gewichtsmatrix W mit
Ausgabe: nxn-Matrix A mit
a(i,j)= Länge eines kürzesten Weges von i nach j.
(Wir setzen wieder voraus, dass keine negativen Kreise existieren.)
Friedhelm Meyer auf der Heide
12
HEINZ NIXDORF INSTITUTE
Beispiel
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
13
HEINZ NIXDORF INSTITUTE
Einfacher Algorithmus
University of Paderborn
Algorithms and Complexity
Starte Dijkstras Algorithmus für jeden Knoten i ∈ V.
Laufzeit: Bei Eingabeformat „Gewichtsmatrix“ benötigt
Dijkstras Algorithmus Zeit O(n3), dieser Algorithmus für
APSP also Zeit O(n4).
Geht das schneller?
Friedhelm Meyer auf der Heide
14
Floyd-Warshall Algorithmus:
Dynamische Programmierung
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Sei
die Länge eines kürzesten Weges von i nach j, der
ausser i und j nur Knoten aus {1, …,k} benutzt.
Dann ist
die Länge eins kürzesten Weges von i nach j.
Weiter gilt:
Weg der Länge
: Benutzt nur innere Knoten aus {1,…,k-1}
oder benutzt zusätzlich noch Knoten k.
Friedhelm Meyer auf der Heide
15
Floyd-Warshall Algorithmus:
Dynamische Programmierung
Laufzeit: Berechnung eines
n3 viele
werden berechnet:
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
benötigt konstante Zeit,
Also: Zeit O(n3).
Friedhelm Meyer auf der Heide
16
HEINZ NIXDORF INSTITUTE
Beispiel
University of Paderborn
Algorithms and Complexity
D(0) = W =
Friedhelm Meyer auf der Heide
17
HEINZ NIXDORF INSTITUTE
APSP : noch mal Dynamische Programmierung
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
18
HEINZ NIXDORF INSTITUTE
APSP : noch mal Dynamische Programmierung
University of Paderborn
Algorithms and Complexity
Dynamische Programmierung liefert Zeit O(n3).
Friedhelm Meyer auf der Heide
19
HEINZ NIXDORF INSTITUTE
APSP via Matrixmultiplikation
Beobachtung: Sei
D(m)
die Matrix (
University of Paderborn
Algorithms and Complexity
(1)
), dann ist D
= W.
Betrachte Matrixmultiplikation, wobei
Multiplikation durch Addition und
Addition durch Minimumbildung ersetzt ist.
Dann gilt für m ≥ 2:
• D(m)=D(m-1)x W
• Für jedes m ≥ n-1 ist D(m) die gesuchte Ausgabematrix A.
Was haben wir davon??
Friedhelm Meyer auf der Heide
20
HEINZ NIXDORF INSTITUTE
APSP via Matrixmultiplikation
University of Paderborn
Algorithms and Complexity
D(1) = W
D(m) = D(m-1) x W für m ≥ 2.
Für jedes m ≥ n-1 ist D(m) die gesuchte Ausgabematrix A.
Die Matrixmultiplikation ist (auch über dem Q(Min, +))
assoziativ,
d.h. z.B. : D(m) = D(m-1) x W = Wm ,
und wir können D(m) = Wm ( für Zweierpotenzen m) durch
iteriertes Quadrieren berechnen.
W, W2, W4, W8, …,Wm
Das benötigt log(m) Matrixmultiplikationen.
Friedhelm Meyer auf der Heide
21
HEINZ NIXDORF INSTITUTE
APSP via Matrixmultiplikation
University of Paderborn
Algorithms and Complexity
Zeit für Matrixmultiplikation
(Schulmethode):
O(n3)
Zeit:
O(log(n) x “Zeit für Matrixmult.”)
Friedhelm Meyer auf der Heide
22
HEINZ NIXDORF INSTITUTE
APSP via Matrixmultiplikation
University of Paderborn
Algorithms and Complexity
Zeit für Matrixmultiplikation(Schulmethode): O(n3)
Zeit für APSP: O(log(n) x “Zeit für Matrixmult.” =O(n3 log(n))
Sie haben auf dem ersten Aufgabenblatt die Matrixmultiplikation von
Schönhage-Strassen kennengelernt,
Laufzeit :=O(nlog2(7) = O(n2.81).
Der asymptotisch schnellste Algorithmus für M.M. (von CoppersmithWinograd) hat Laufzeit O(n2.38)
Achtung: Diese Verfahren können wir nicht direkt einsetzen,
da sie einen Körper oder zumindest Ring (z.B. Q(+,*)) voraussetzen,
aber für Q(min,+) nicht funktionieren (Min hat kein inverses Element).
Beste bekannte Laufzeit: O(n3 (log log n)3 / (log n)2)
Friedhelm Meyer auf der Heide
23
HEINZ NIXDORF INSTITUTE
Berechnung der transitiven Hülle
University of Paderborn
Algorithms and Complexity
Eingabe:
Gerichteter Graph G=(V,E), V={1,…,n},
Beschrieben durch Adjazenzmatrix A.
Ausgabe:
0-1-Matrix H mit
h(i,j)=1
gdw.
es gibt gerichteten Weg von i nach j in G.
Der Graph G* mit Adjazenzmatrix H heisst
transitive Hülle von G
Friedhelm Meyer auf der Heide
24
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Thank you for
your attention!
Friedhelm Meyer auf der Heide
Heinz Nixdorf Institute
& Computer Science Department
University of Paderborn
Fürstenallee 11
33102 Paderborn, Germany
Tel.: +49 (0) 52 51/60 64 80
Fax: +49 (0) 52 51/62 64 82
E-Mail: [email protected]
http://www.upb.de/cs/ag-madh
Friedhelm Meyer auf der Heide
25
Herunterladen