Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Slides:



Advertisements
Ähnliche Präsentationen
Christian Schindelhauer
Advertisements

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Kontextfreie Grammatiken
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Einführung in Berechenbarkeit und Formale Sprachen
Grammatiken, Definitionen
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Verifizieren versus Berechnen
Algorithmen und Komplexität
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken IX Christian Schindelhauer
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken X Christian Schindelhauer
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Approximationsalgorithmen …liefern in polynomieller.
Einführung in Algorithmen und Komplexität
Klaus Volbert 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Sommersemester 2004.
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Minimum Spanning Tree: MST
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
20:00.
Die Geschichte von Rudi
Effiziente Algorithmen
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Flüsse, Schnitte, bipartite Graphen
Effiziente Algorithmen
Chromatische Zahl.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Polynome und schnelle Fourier-Transformation
Christian Scheideler Institut für Informatik Universität Paderborn
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
1 Mathematical Programming Nichtlineare Programmierung.
Analyse der Laufzeit von Algorithmen
Numbers Greetings and Good-byes All about Me Verbs and Pronouns
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Wiederholung TexPoint fonts used in EMF.
 Präsentation transkript:

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

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., 12.12., 15.12., eventuell auch 18.12. und 22.12.

Randomisierte Algorithmen bisher: Randomisierter Quicksort Perfektes Hashing Skip Lists

Grundlegende Begriffe über randomisierte Algorithmen

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.

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

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

Minimale Schnitte in Graphen

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

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)

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)

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:

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

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:

Analyse des Algorithmus Wir wissen: Also folgt:

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

Ergebnis

Zusammenfassung/Rückblick

Randomisierte Algorithmen Teil 4: Randomisierte Algorithmen

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.

Programmierparadigmen Teil 1: Programmierparadigmen

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).

Runtime log(3) ~ 1.58..

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) )

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

Greedy Algorithmen und Matroide Greedy Algorithmen werden genutzt …

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

Wann sind Greedy-Algorithmen optimal?

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?

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!

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.

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

Shortest paths problems

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

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)

Dijkstra‘s algorithm

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

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.)

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

Teil 3: Flüsse in Netzwerken

Vergrößernde Wege Restkapazität ist 4

Vergrößernde Wege Restkapazität ist 4

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

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.

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.

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

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!!

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?

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)

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.

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: fmadh@upb.de http://www.upb.de/cs/ag-madh