Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.

Ähnliche Präsentationen


Präsentation zum Thema: "Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende."—  Präsentation transkript:

1 Friedhelm Meyer auf der Heide 1 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

2 Friedhelm Meyer auf der Heide 2 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Organisatorisches 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.

3 Friedhelm Meyer auf der Heide 3 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Greedy Algorithmen

4 Friedhelm Meyer auf der Heide 4 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Greedy-Algorithmen 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?

5 Friedhelm Meyer auf der Heide 5 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Matroide Sei E eine endliche Menge, U eine Familie von Teilmengen von E. (E,U) ist ein Teilmengensystem, falls gilt: 2 U Für jedes B 2 U ist auch jedes Aµ B 2 U. (Vererbungseigenschaft) (E,U) ist ein Matroid, falls zusätzlich gilt: Für alle A, B 2 U mit |A| < |B| gibt es x2 B mit A[{x} 2 U. (Austauscheigenschaft) B2U 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.

6 Friedhelm Meyer auf der Heide 6 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Teilmengensysteme und der kanonische Greedy-Algorithmus 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

7 Friedhelm Meyer auf der Heide 7 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Greedy-Algorithmen und Matroide

8 Friedhelm Meyer auf der Heide 8 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Noch ein interessantes Matroid: Matching für links-knotengewichtete bipartite Graphen 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.)

9 Friedhelm Meyer auf der Heide 9 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Das bipartite-Matching Matroid 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) 2 U (klar) (ii) B 2 U, Aµ B ) A 2 U (klar) Wir müssen die Austauscheigenschaft nachweisen.

10 Friedhelm Meyer auf der Heide 10 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Beweis der Austauscheigenschaft 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 2 B\A) oder Weg der Länge > 1 mit mehr roten als blauen Kanten.

11 Friedhelm Meyer auf der Heide 11 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Beweis der Austauscheigenschaft Also: Es gibt rote isolierte Kante (mit linkem Knoten v 2 B\A) oder Weg P der Länge > 1 mit mehr roten als blauen Kanten. Im ersten Fall: A [ {v} 2 U Im zweiten Fall: P hat ungerade Länge, beginnt und endet mit roter Kante v 2 B\A A [ {v} 2 U, da die roten Kanten ein Matching bilden.

12 Friedhelm Meyer auf der Heide 12 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Übungsaufgabe 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.

13 Friedhelm Meyer auf der Heide 13 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Shortest paths problems

14 Friedhelm Meyer auf der Heide 14 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Shortest paths problems

15 Friedhelm Meyer auf der Heide 15 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Shortest paths problems

16 Friedhelm Meyer auf der Heide 16 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Negative edge weights In the sequel, we assume that there are no negative edge weights.

17 Friedhelm Meyer auf der Heide 17 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Single source shortest paths Dijkstras 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).

18 Friedhelm Meyer auf der Heide 18 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity initSSSP(G,s)

19 Friedhelm Meyer auf der Heide 19 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm 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 relax(u,v) v u

20 Friedhelm Meyer auf der Heide 20 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm 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)

21 Friedhelm Meyer auf der Heide 21 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm

22 Friedhelm Meyer auf der Heide 22 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm Lemma: After each run of the while-loop, d(u) = (s,u) for each u 2 S. Clearly, this lemma implies the correctness. Decrease key

23 Friedhelm Meyer auf der Heide 23 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm, correctness Lemma: After each run of the while-loop, d(u) = (s,u) for each u 2 S. Proof: (i)Lemma holds for the first run, because then S={s} and d(s)= (s,s)=0. (ii)If x 1,..,x m is a shortest path, each sub-path x i,.., x j 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 p 1 - y. By (ii), this is a shortest path.

24 Friedhelm Meyer auf der Heide 24 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm, correctness Lemma: After each run of the while-loop, d(u) = (s,u) for each u 2 S. Proof: (i)Lemma holds for the first run, because then S={s} and d(s)= (s,s)=0. (ii)If x 1,..,x m is a shortest path, each subpath x i,.., x j 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 Dijkstras algorithm: Choose the vertex u with lowest value of d[u] !!! (y would have been a better choice.)

25 Friedhelm Meyer auf der Heide 25 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm Decrease key

26 Friedhelm Meyer auf der Heide 26 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm 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|))

27 Friedhelm Meyer auf der Heide 27 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Dijkstras algorithm Animation in a geometric graph: Edge weight = Euclidean distance

28 Friedhelm Meyer auf der Heide 28 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity 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: fmadh@upb.de http://www.upb.de/cs/ag-madh Thank you for your attention!


Herunterladen ppt "Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende."

Ähnliche Präsentationen


Google-Anzeigen