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 5, 27.10.08
Friedhelm Meyer auf der Heide
1
Organisatorisches
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Neuer Raum:
• Montags in P5.203 ist möglich, für Dienstag ist
im Moment kein Hörsaal frei.
• Wir bleiben in F1 110.
Übungen:
• Algorithmen sind immer zu kommentieren,
Korrektheitsbeweis und Laufzeitanlyse (nicht nur
Ergebnis) gehört dazu.
• Wir werden auf jedem Aufgabenblatt Aufgaben
haben, in denen sie effiziente Algorithmen für
Beispielprobleme finden und analysieren
müssen.
Friedhelm Meyer auf der Heide
2
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Greedy Algorithmen
Friedhelm Meyer auf der Heide
3
Greedy-Algorithmen
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Wir wissen:
Greedy-Algorithmen für z.B. Bruchteil Rucksack und Minimale
Spannbäume sind optimal.
Greedy-Algorithmen für z.B. 0-1 Rucksack ist sehr schlecht.
Greedy-Algorithmen für z.B. Bin Packing (First Fit, Best Fit)
sind 2-Approximationen, also gut, wenn auch nicht optimal.
Kann man einem Problem “ansehen”, ob der zugehörige
Greedy-Algorithmus optimal ist?
Friedhelm Meyer auf der Heide
4
Matroide
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Sei E eine endliche Menge, U eine Familie von Teilmengen von E.
(E,U) ist ein Teilmengensystem, falls gilt:
• ∅∈U
• Für jedes B ∈ U ist auch jedes A⊆ B ∈ U. (Vererbungseigenschaft)
(E,U) ist ein Matroid, falls zusätzlich gilt:
• Für alle A, B ∈ U mit |A| < |B| gibt es x∈ B mit A∪{x} ∈ U.
(Austauscheigenschaft)
B∈U ist maximal, falls keine Obermenge von B in U ist.
(Bem: in einem Matroid sind alle maximalem Mengen gleich groß.)
Optimierungsproblem zu (E,U): Bestimme zu Gewichtsfunktion
w:E → R eine maximale Menge aus U mit maximalem Gewicht.
Friedhelm Meyer auf der Heide
5
Teilmengensysteme und der kanonische
Greedy-Algorithmus
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Der kanonische G.A. für Rucksack ist sehr schlecht (haben wir gezeigt)
Der kanonische G.A. für MST ist optimal,
haben sie in DuA gezeigt: Kruskals Algorithmus
Friedhelm Meyer auf der Heide
6
Greedy-Algorithmen und Matroide
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
7
Noch ein interessantes Matroid: Matching für
links-knotengewichtete bipartite Graphen
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Gegeben sei
ein bipartiter, gewichteter Graph G=(L ∪ R, K, w)
mit positiven Knotengewichten w(e) für die Knoten
aus L.
Ein Matching in G ist eine Menge von paarweise
disjunkten Kanten. Ein maximales Matching ist
eins mit maximalem Gewicht (seiner linken
Knoten.)
Friedhelm Meyer auf der Heide
8
Das bipartite-Matching Matroid
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Wähle E=L.
B⊆ L ist in U, falls es ein Matching mit “linker Seite”
B in G gibt.
Satz: (E,U) ist ein Matroid.
Bew:
(i) ∅ ∈ U (klar)
(ii) B ∈ U, A⊆ B ⇒ A ∈ U (klar)
Wir müssen die Austauscheigenschaft nachweisen.
Friedhelm Meyer auf der Heide
9
Beweis der Austauscheigenschaft
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Wähle E=L. B⊆ L ist in U, falls es ein Matching mit “linker Seite” B in G gibt.
Z.z.:
Bew: Betrachte die Kantenmengen X und Y, die zu den Matchings für A
und B gehören.
Betrachte den durch X ∪ Y induzierten Graphen H.
• H besteht aus
– isolierten Kanten, die rot, blau oder rot/blau sein können.
– disjunkten Wegen, die aus abwechselnd roten und blauen Kanten
bestehen.
• H hat mehr rote als blaue Kanten
Also: Es gibt rote isolierte Kante (mit linkem Knoten v ∈ B\A) oder
Weg der Länge > 1 mit mehr roten als blauen Kanten.
Friedhelm Meyer auf der Heide
10
HEINZ NIXDORF INSTITUTE
Beweis der Austauscheigenschaft
University of Paderborn
Algorithms and Complexity
Also: Es gibt rote isolierte Kante (mit linkem Knoten v ∈ B\A) oder
Weg P der Länge > 1 mit mehr roten als blauen Kanten.
Im ersten Fall: A ∪ {v} ∈ U
Im zweiten Fall: P hat ungerade Länge, beginnt und endet mit
roter Kante
v ∈ B\A
A ∪ {v} ∈ U, da die roten Kanten ein Matching bilden.
Friedhelm Meyer auf der Heide
11
Übungsaufgabe
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Nutzen sie obige Überlegungen, um einen effizienten
Algorithmus zur Berechnung eines maximalen
Matchings in einem (links Knoten-)gewichteten
bipartiten Graphen anzugeben.
Bem: Es ist auch nicht zu schwierig, maximale Matchings
bzgl. Kantengewichten zu berechnen.
(Augmenting Paths Methode; wir kommen darauf später
zurück, wenn wir über Flussprobleme reden.)
Die zugrunde liegende Struktur ist dann der “Durchschnitt
zweier Matroide.”
Friedhelm Meyer auf der Heide
12
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Shortest paths problems
Friedhelm Meyer auf der Heide
13
Shortest paths problems
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
14
Shortest paths problems
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
15
Negative edge weights
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
In the sequel, we assume that there are no negative edge weights.
Friedhelm Meyer auf der Heide
16
Single source shortest paths
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Dijkstra‘s algorithm
The algorithm works by keeping, for each vertex v of G, the
cost d[v] of the shortest path found so far between s and v,
and the current predecessor previous[v] on this path.
Initialization:
initSSSP(G,s)
d[s]=0, d[v] = ∞ for all other vertices v ;
Previous[v] = undefined for all vertices v .
When the algorithm finishes,
previous[v] should point to the predecessor of v on a shortest
path from s to v,
d[v] should be its length (or infinity, if no such path exists).
Friedhelm Meyer auf der Heide
17
initSSSP(G,s)
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
18
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
The basic operation of Dijkstra's algorithm is edge relaxation
for an edge (u,v):
relax(u,v)
If d(v) > d(u)+w(u,v)
then begin d(v) is replaced by d[u]+w(u,v);
previous[v] is replaced by u end
v
relax(u,v)
u
Friedhelm Meyer auf der Heide
19
Dijkstra‘s algorithm
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
The algorithm maintains two sets of vertices S and Q.
Set S contains all vertices v for which we know that the value
d[v] is already the cost of a shortest path.
Set Q contains all other vertices.
Set S starts empty, and in each step one vertex is moved from
Q to S.
This vertex u is chosen as the vertex from Q with lowest
value of d[u].
When a vertex u is moved to S, the algorithm relaxes every
outgoing edge (u,v), i.e., invokes relax(u,v)
Friedhelm Meyer auf der Heide
20
Dijkstra‘s algorithm
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
21
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
22
Dijkstra‘s algorithm, correctness
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Lemma: After each run of the while-loop, d(u) = δ(s,u) for each u ∈ S.
Proof:
(i) Lemma holds for the first run, because then S={s} and d(s)=δ(s,s)=0.
(ii) If x1, .. ,xm is a shortest path, each sub-path xi, .., xj is one as well.
Assume that the lemma does not hold. Let u be the first node inserted into S
with d(u)>δ(s,u). By (i), s ≠ u.
Consider a shortest path from s to u :
Claim: d(y)= δ(s,y).
Proof: u is the first node inserted into S with d(u)>δ(s,u). Thus d(x) = δ(s,x).
When x was inserted into S, relax(x,y) was executed.
Thus, after that operation, d(y) is the length of the path p1 - y.
By (ii), this is a shortest path.
Friedhelm Meyer auf der Heide
23
Dijkstra‘s algorithm, correctness
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Lemma: After each run of the while-loop, d(u) = δ(s,u) for each u ∈ S.
Proof:
(i) Lemma holds for the first run, because then S={s} and d(s)=δ(s,s)=0.
(ii) If x1, .. ,xm is a shortest path, each subpath xi, .., xj is one as well.
Assume that the lemma does not hold. Let u be the first node inserted into
S with d(u)>δ(s,u). By (i), s ≠ u.
Consider a shortest path from s to u :
We have shown: d(y)= δ(s,y)
Thus d(y) = δ(s,y) δ(s,u) < d(u).
This contradicts the rule of Dijkstra‘s algorithm: „Choose the vertex u with
lowest value of d[u]“ !!! (y would have been a better choice.)
Friedhelm Meyer auf der Heide
24
HEINZ NIXDORF INSTITUTE
Dijkstra‘s algorithm
University of Paderborn
Algorithms and Complexity
Decrease key
Friedhelm Meyer auf der Heide
25
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
26
Dijkstra‘s algorithm
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Animation in a geometric graph:
Edge weight = Euclidean distance
Friedhelm Meyer auf der Heide
27
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
28
Herunterladen