Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen"—  Präsentation transkript:

1 Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 14,

2 Organisatorisches Die letzten Übungen finden diese Woche statt Die heute geplante Übung ist auf morgen, 9-11, in F1 110 verschoben. Die Vorlesung Komplexitätstheorie von Johannes Blömer beginnt am Montag, 8.12. Prüfungstage für die erste Prüfungsphase: 9.12., , , eventuell auch und

3 Randomisierte Algorithmen
bisher: Randomisierter Quicksort Perfektes Hashing Skip Lists

4 Grundlegende Begriffe über randomisierte Algorithmen

5 Grundlegende Begriffe über randomisierte Algorithmen
Ein randomisierter Algorithmus A, gestartet mit Eingabe x, darf, zusätzlich zu den üblichen Operationen, Operationen vom Typ “Y :=random(M)” ausführen. Dabei ist M eine endliche Menge, “Y :=random(M)” weist der Variablen Y ein zufällig, uniform gewähltes Element aus M zu. Eine Rechnung R von A gestartet mit x ergibt sich durch sukzessive Festlegung der Ergebnisse ai 2 Mi, i=1,…s, der Zufallsexperimente “Yi :=random(Mi)”, i=1,…,s, die während der Rechnung R ausgeführt werden. Die Wahrscheinlichkeit für das Auftreten von R bei Eingabe x ist somit Pr(R)= 1/|M1| * 1/|M2| * … * 1/|Ms|. |R|:= Länge von R; C := Menge aller Rechnungen von M gestartet mit x.

6 Randomisierte Algorithmen und Komplexitätstheorie
Bisher haben wir nur Las Vegas Algorithmen vorgestellt.

7 Ein Monte Carlo Algorithmus für die Berechnung eines
minimalen Schnittes

8 Minimale Schnitte in Graphen

9 Basisoperation: Kontrahiere e
Ein Monte Carlo Algorithmus für die Berechnung eines minimalen Schnittes Basisoperation: Kontrahiere e Zudem wird das Gesamtgewicht des Graphen um w(e) verringert. 2 4 6 2 4 3 8 5 2 3 8 7

10 Ein Monte Carlo Algorithmus für die Berechnung eines minimalen Schnittes
Eingabe: Gewichteter Graph G=(V,E,w) mit w : E ! N Ausgabe: Gewicht eines Schnittes Somit wird der Wert eines Schnittes ausgegeben. (Es ist einfach, auch den zugehörigen Schnitt zu berechen.) Laufzeit: O(n2)

11 Ein Monte Carlo Algorithmus für die Berechnung eines minimalen Schnittes
Eingabe: Gewichteter Graph G=(V,E,w) mit w : E ! N Ausgabe: Gewicht eines Schnittes Lemma: MinCut gibt immer den Wert der Wert eines Schnittes aus. (Es ist einfach, auch den zugehörigen Schnitt zu berechen.) Sei C ein Schnitt, so dass MinCut keine Kante von C kontrahiert. Dann gibt MinCut den Wert von C aus. Laufzeit: O(n2)

12 Ein Monte Carlo Algorithmus für die Berechnung eines minimalen Schnittes
Es wird der Wert eines Schnittes ausgegeben. (Es ist einfach, auch den zugehörigen Schnitt zu berechen.) Diese Erfolgswahrscheinlichkeit ist unbefriedigend gering. Die Technik der Wahrscheinlichkeitsverstärkung (Amplifikation) liefert:

13 Analyse des Algorithmus
Sei k = w(C). Beh: - w(E) ¸ nk/2 - Algo erzeugt C , Algo kontrahiert nie eine Kante aus C (Wir sagen: Schnitt C überlebt) Bezeichne i das Ereignis, dass in Runde i keine Kante aus C kontrahiert wird. Dann gilt: 1

14 Analyse des Algorithmus
Sei k = w(C). Beh: w(E) ¸ nk/2 - Algo erzeugt C , Algo kontrahiert nie eine Kante aus C (Wir sagen: Schnitt C überlebt) Bezeichne i das Ereignis, dass in Runde i keine Kante aus C kontrahiert wird. Dann gilt: Allgemein:

15 Analyse des Algorithmus
Wir wissen: Also folgt:

16 Diese Erfolgswahrscheinlichkeit ist unbefriedigend gering.
Amplifikation Diese Erfolgswahrscheinlichkeit ist unbefriedigend gering. Um sie zu erhöhen wenden wir Wahrscheinlichkeitsverstärkung (Amplifikation) an :

17 Ergebnis

18 Zusammenfassung/Rückblick

19 Randomisierte Algorithmen
Teil 4: Randomisierte Algorithmen

20 Randomisierte Algorithmen
Las Vegas Algorithmen (Ausgabe ist immer korrekt, Laufzeit ist eine Zufallsvariable, deren Erwartungswert wir analysieren (Erwartete Laufzeit).) Beispiele: randomisierter Quicksort, perfektes Hashing, Skiplisten Monte Carlo Algorithmen (Aussage kann mit Wahrscheinlichkeit  falsch sein, Laufzeit wird in der Regel als worst case gemessen.) Beispiel: Randomisierter MinCut - hat sehr große Fehlerwahrscheinlichkeit  · 1 - 2/(n(n-1)). - Fehlerwahrscheinlichkeit kann durch Amplifikation sehr klein, z.B. < 1/1Mio gemacht werden.

21 Programmierparadigmen
Teil 1: Programmierparadigmen

22 Divide & Conquer: The Karazuba-Offman algorithm for integer multiplication
We need 3 multiplications of numbers with at most n/2 + 2 bits, and 8 additions/subtractions/shifts of numbers with O(n) bits. Each such addition/subtraction/shift needs time O(n).

23 Runtime log(3) ~

24 T(1) = c, and for n > 1: T(n) = a T(n/b) + cn Then, for
A master theorem a) Let a ¸ 0, b,c > 0 be constants. Let T: N N be recursively defined by T(1) = c, and for n > 1: T(n) = a T(n/b) + cn Then, for a < b: T(n) = cb/(b-a) n = O(n) a = b: T(n) = cn (logb(n) + 1) = O(n log(n)) a > b: T(n) = ca/(a-b) nlogb(a) = O(nlogb(a) )

25 Dynamic programming Wir haben mehrere Beispiele kennen gelernt, z.B. - String Distance - optimale Klammerungen für Matrizenketten-Multiplikation - All pair shortest path Algorithmen

26 Greedy Algorithmen und Matroide
Greedy Algorithmen werden genutzt …

27 Beispiele für Greedy Algorithmen
Die Algorithmen von Kruskal und Prim sind optimale Algorithmen zur Berechnung minimaler Spannbäume. Greedy ist gut aber nicht optimal für Bin Packing. Greedy Algorithmen sind sehr schlecht für das Rucksack Problem

28 Wann sind Greedy-Algorithmen optimal?

29 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 Kann man dem Teilmengensystem “ansehen”, ob der kanonische G.A. eine optimale Lösung liefert?

30 Greedy-Algorithmen und Matroide
Bem: Alle maximalen Mengen eines Matroids sind gleich groß. Bew: Übungsaufgabe Das Teilmengensystem für Rucksackproblem ist kein Matroid. Das Teilmengensystem für MST ist ein Matroid!

31 Satz: (E,U) ist ein Matroid.
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.) 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.

32 Kürzeste Wege in Graphen
Teil 2: Kürzeste Wege in Graphen

33 Shortest paths problems

34 If d(v) > d(u)+w(u,v) then begin d(v) is replaced by d[u]+w(u,v);
Dijkstra‘s 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 v relax(u,v) u

35 The algorithm maintains two sets of vertices S and Q.
Dijkstra‘s 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)

36 Dijkstra‘s algorithm

37 Dijkstra‘s algorithm, correctness
Lemma: After each run of the while-loop, d(u) = (s,u) for each u 2 S.

38 All-pairs-shortest-paths (APSP)
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.)

39 All-pairs-shortest-paths (APSP)
Weitere Anwendungen von dynamischer Programmierung Anwendung von iterierter Matrizenmultiplikation Nutzung schneller Matrixmultiplikation für die Berechnung konvexer Hüllen

40 Teil 3: Flüsse in Netzwerken

41 Vergrößernde Wege Restkapazität ist 4

42 Vergrößernde Wege Restkapazität ist 4

43 Der Basisalgorithmus von Ford/Fulkerson
Satz: Der Algorithmus von Ford/Fulkerson berechnet einen maximalen Fluss.

44 Analyse des Basisalgorithmus von Ford/Fulkerson
Ein Schnitt in N ist ein disjunkte Zerlegung von V in Mengen S und T mit s 2 S, t2 T. Die Kapazität des Schnittes ist Die Kapazität eines minimalem Schnittes ist Der Flusswert eines Schnittes ist Mit fmax bezeichnem wir den Wert eines maximalen Flusses.

45 Korrektheit des Algorithmus von F.F., und das Max Flow-Min Cut Theorem
Lemma: In jedem Netzwerk N gilt: Der Wert eines jeden Flusses ist kleiner oder gleich der Kapazität eines jeden Schnittes. Insbesondere: fmax · cmin . Lemma: Sei f der von F.F. berechnete Fluss Dann gibt es einen Schnitt (S,T) in N mit val(f) = C(S,T). Satz: Der Algorithmus von Ford/Fulkerson berechnet einen maximalen Fluss. Satz: (Max Flow-Min Cut Theorem; Satz von Ford/Fulkerson) In jedem Netzwerk gilt fmax = cmin. Der Wert eines maximalen Flusses ist gleich der Kapazität eines minimalen Schnittes.

46 Laufzeit des Basisalgorithmus von F.F.
Wir gehen von Kapazitäten aus N aus. Laufzeit ist exponentiell in Eingabegröße!

47 Effiziente Algorithmen für maximale Flüsse
Der Basisalgorithmus von Ford/Fulkerson: Modifikation von Edmonds/Karp: Benutze immer einen kürzesten vergrößernden Weg. Satz: Der Algorithmus von Edmonds/Karp liefert nach höchstens |E| |V|/2 Flussvergrößerungen, also in Zeit O(|E|2 |V|) (= O(|V|5)) einen maximalen Fluss. Damit ist das Flussproblem in polynomieller Zeit lösbar!!

48 Der Algorithmus von Dinic
Eingabe: Netzwerk N f´ 0, berechne SNf; While “t ist Knoten von SNf” do Berechne Sperrfluss f’ in SNf; Berechne f* mit f*(v,w) = f(v,w) + f’(v,w) – f’(w,v); Berechne SNf* ; f:=f* Od Ausgabe: f Lemma: Der Algo benötigt höchstens |V|-1 Durchläufen der While-Schleife. Lemma: Die Berechnung eines Sperrflusses geht in Zeit O(|V||E|). (auch O(|V|2) ist möglich.). Also: Satz: Der Algorithmus von Dinic berechnet in Zeit O(|V|2 |E|) (bzw. sogar O(|V|3) einen maximalen Fluss. Wieviele Durchläufe der While –Schleife gibt es? Wie lange dauert die Berechnung eines Sperrflusses?

49 Perfekte Matchings und der Satz von Frobenius/Hall
Sei G=(V1 [ V2,E) bipartiter Graph mit |V1|=|V2| . Ein perfektes Matching in G ist ein Matching der Größe |V1|. Satz von Frobenius/Hall, Heiratssatz: G enthält ein perfektes Matching , Für jedes Aµ V1 gilt : |(A)| ¸ |A| (d.h.:A hat mindestens |A| Nachbarn in V2. ) Folgt aus dem Max-Flow Min-Cut Theorem. (Übung)

50 Ich wünsche ihnen viel Erfolg bei den Prüfungen,
Das war’s Ich wünsche ihnen viel Erfolg bei den Prüfungen, viel Vergnügen und spannende neue Entdeckungen im Studium, und Spaß an immer neuen Herausforderungen und Einsichten.

51 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.: (0) 52 51/ Fax: (0) 52 51/


Herunterladen ppt "Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen"

Ähnliche Präsentationen


Google-Anzeigen