1 / 58

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12. Prof. Dr. Christian Scheideler Stv: Stefan Schmid SS 2008. Heute. Prof Scheideler auf Konferenz... Vorlesung: - Techniken beim Algorithmenentwurf („check list“?) - ev. Nachbesprechung Midterm - Fragen Endterm?.

terah
Télécharger la présentation

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundlagen der Algorithmen und DatenstrukturenKapitel 12 Prof. Dr. Christian Scheideler Stv: Stefan Schmid SS 2008 Kapitel 12

  2. Heute... Prof Scheideler auf Konferenz... Vorlesung: - Techniken beim Algorithmenentwurf („check list“?) - ev. Nachbesprechung Midterm - Fragen Endterm? Kapitel 12

  3. Generische Optimierungsverfahren Techniken: • Systematische Suche – lass nichts aus • Divide and Conquer – löse das Ganze in Teilen • Dynamische Programmierung – mache nie etwas zweimal • Greedy Verfahren – schau niemals zurück • Lokale Suche – denke global, handle lokal Kapitel 12

  4. Systematische Suche Prinzip: durchsuche gesamten Lösungsraum Auch bekannt als „Brute Force“ Vorteil: sehr einfach zu implementieren Nachteil: sehr zeitaufwendig und sollte daher nur für kleine Instanzen verwendet werden Kapitel 12

  5. Systematische Suche Beispiele: • Suche in unsortierter Liste • Broadcasting in unstrukturierten verteilten Systemen (Peer-to-Peer Systeme) • Selection Sort (nimm wiederholt kleinstes Element aus Eingabesequenz) • Rucksackproblem (siehe nächste Folie) Kapitel 12

  6. Systematische Suche Rucksackproblem: • Eingabe:n Objekte mit Gewichten w1,…,wn und Werten v1,…,vn und Rucksack mit Kapazität W • Ausgabe: Objektmenge M maximalen Wertes, die in Rucksack passt Anwendungen: Nikolaus, Räuber, … Kapitel 12

  7. Systematische Suche Lösung zum Rucksackproblem:Probiere alle Teilmengen von Objekten aus und merke die Menge M von Objekten mit i 2 M wi <= W, die bisher den maxima-len Wert hatte Aufwand:O(2n), da es 2nMöglichkeiten gibt, Teilmengen aus einer n-elementigen Menge zu bilden. Kapitel 12

  8. Divide and Conquer Prinzip: teile Problem in Teilprobleme auf, die unabhängig voneinander gelöst werden können Vorteil: Implementierung oft einfach, da rekursiv Nachteil: eventuell werden Teilprobleme doppelt gelöst Kapitel 12

  9. Doppelte Berechnungen... Fibonacci Zahlen: f0 = 0, f1 = 1 fn = fn-1 + fn-2 Kapitel 12

  10. Divide and Conquer Beispiele: • Mergesort • Quicksort • Binary Search • Arithmische Operationen wie Matrixmulti-plikation oder Multiplikation großer Zahlen • Nächstes-Paar-Problem Kapitel 12

  11. A00 A01 B00 B01 A= B= A10 A11 B10 B11 Divide and Conquer Matrixmultiplikation nach Strassen: • Eingabe: nxn-Matrizen A und B • Ausgabe: nxn-Matrix C mit C=A¢B Wir nehmen vereinfachend an, n sei Zweier-potenz. Dann A und B darstellbar durch jeweils 4 (n/2)x(n/2)-Matrizen: Wie wäre Schulmethode? Laufzeit? Kapitel 12

  12. C00 C01 C= C10 C11 Divide and Conquer Für Matrix C gilt: mit • C00=M1+M4-M5+M7 • C01=M3+M5 • C10=M2+M4 • C11=M1+M3-M2+M6 mit Matrizen M1,…,M7 wie in nächster Folie Kapitel 12

  13. Divide and Conquer Matrizen M1,…,M7: • M1=(A00+A11) ¢ (B00+B11) • M2=(A10+A11) ¢ B00 • M3=A00 ¢ (B01-B11) • M4=A11¢ (B10-B00) • M5=(A00+A01) ¢ B11 • M6=(A10-A00) ¢ (B00+B01) • M7=(A01-A11) ¢ (B10+B11) 7 rekursiveAufrufe Kapitel 12

  14. Divide and Conquer Laufzeit von Strassens Algorithmus: T(1)=O(1), T(n)=7T(n/2) + O(n2) Also Laufzeit O(nlog2 7) = O(n2,81) Laufzeit der Schulmethode (brute force): O(n3) Kapitel 12

  15. Divide and Conquer Nächstes-Paar-Problem: • Eingabe: Menge S von n Punkten P1=(x1,y1),…,Pn=(xn,yn) im 2-dimensio-nalen Euklidischen Raum • Ausgabe: Punktpaar mit kürzester Distanz Annahme: n ist Zweierpotenz Wie wäre Brute Force Methode? Laufzeit? Geht es besser? Vermutung? Kapitel 12

  16. Divide and Conquer Algo für Nächstes-Paar-Problem: • Sortiere Punkte gemäß x-Koordinate(z.B. Mergesort, Zeit O(n log n) ) • Löse danach Nächstes-Paar-Problem rekursiv durch Algo ClosestPair Kapitel 12

  17. Divide and Conquer Algo ClosestPair(S): • Eingabe: nach x-Koordinate sortierte Punktmenge S • |S|=2: sortiere S gemäß y-Koordinate und gib Distanz zwischen den zwei Punkten in S zurück • |S|>2: • teile S in der Mitte (Position n/2) in S1 und S2 • d1:=ClosestPair(S1); d2:=ClosestPair(S2) • d:=min{ClosestCrossPair(S1,S2,min(d1,d2)), d1, d2} • Führe Merge(S1,S2) durch, so dass S am Ende nach y-Koordinate sortiert ist (S1, S2 bereits sortiert) • gib d zurück Kapitel 12

  18. Divide and Conquer ClosestCrossPair(S1,S2,d): Nur Punktpaare in Streifen interessant d=min{d1,d2} d d d2 d1 Nur max. 4 Punktein dxd-Quadrant Punkte nach y-Koordinate sortiert S2 S1 Kapitel 12

  19. Divide and Conquer ClosestCrossPair: • Durchlaufe die (nach der y-Koordinate sortierten) Punkte in S1 und S2 von oben nach unten (wie in Merge(S1,S2)) und merke die Mengen M1 und M2 der 8 zuletzt gesehenen Punkte in S1 und S2 im d-Streifen • Bei jedem neuen Knoten in M1, berechne Distanzen zu Knoten in M2, und bei jedem neuen Knoten in M2, berechne Distanzen zu Knoten in M1 • Gib am Ende minimal gefundene Distanz zurück Kapitel 12

  20. Divide and Conquer Last 8 points => y distance from current point at for other points > d => can be ignored! d=min{d1,d2} d d d2 d1 S2 S1 Kapitel 12

  21. Divide and Conquer New point => compare to those stored points (max 8) which are on other side! d=min{d1,d2} d d d2 d1 S2 S1 Kapitel 12

  22. Divide and Conquer Laufzeit für Nächstes-Paar-Algo: • Mergesort am Anfang: O(n log n) • Laufzeit T(n) von ClosestPair Algo:T(1)=O(1), T(n)=2T(n/2)+O(n) Gesamtlaufzeit: O(n log n) Brute force: O(n2) Kapitel 12

  23. Dynamische Programmierung Prinzip:rekursive Durchsuchung des Lösungsraums mittels Speicher Vorteil: verhindert doppelte Berechnung von Teillösungen Nachteil: benötigt eventuell sehr viel Speicher Kapitel 12

  24. Dynamische Programmierung Beispiele: • Berechnung des Binomialkoeffizienten • Rucksackproblem Kapitel 12

  25. n k Dynamische Programmierung Berechnung des Binomialkoeffizienten: • Eingabe: n,k>=0, n>=k • Ausgabe: C(n,k) mit C(n,k) = Rekursive Formel für C(n,k): • C(n,0)=C(n,n)=1 für alle n>=0 • C(n,k)=C(n-1,k-1)+C(n-1,k) für n>k>0 Kapitel 12

  26. . . . . . . Dynamische Programmierung 0 1 2 …. k-1 k 0 1 1 1 1 2 1 2 1 zu berechnendeEinträge (<n¢k); linke Spalte und Diagonale alles 1 zu Beginn, Rest folgt rekursiv. k 1 k … 1 C(n-1,k-1) C(n-1,k) n-1 C(n,k) n Kapitel 12

  27. Dynamische Programmierung Berechnung des Binomialkoeffizienten:for i:=0 to n do for j:=0 to min(i,k) do if j=0 or j=i then C[i,j]:=1 else C[i,j]:=C[i-1,j-1]+C[i-1,j]return C[n,k] Laufzeit: O(n ¢ k) Kapitel 12

  28. Dynamische Programmierung Rucksackproblem: • Eingabe:n Objekte mit Gewichten w1,…,wn und Werten v1,…,vn und Rucksack mit Kapazität W • Ausgabe: Objektmenge M maximalen Wertes, die in Rucksack passt Kapitel 12

  29. Dynamische Programmierung V[i,w]: optimaler Wert, der für die Objekte 1 bis i bei Rucksackvolumen w erreichbar ist Rekursive Berechnung von V[i,w]: • Für die Teilmengen, die das i-te Objekt nicht enthalten ist der Wert der optimalen Lösung gleich V[i-1,w] • Für die Teilmengen, die Objekt i enthalten, ist der Wert der optimalen Lösung gleich vi+V[i-1,w-wi] (wi abziehen, sonst würde Gesamtgewicht zu gross!) Kapitel 12

  30. Dynamische Programmierung Idee also: Wenn wir für Teilmenge der Objekte 1..i-1 optimale Packung für Maximalgewichte 1...w haben, können wir optimale Packung für Objekte 1..i mit Maximalgewicht w sehr schnell berechnen. Kapitel 12

  31. Dynamische Programmierung Rekursive Formel für V[i,w]: • V[0,w]=0 für alle w>=0 • V[i,0]=0 für alle i>=0 • V[i,w]=V[i-1,w] falls w-wi<0 • V[i,w]=max{V[i-1,w], vi+V[i-1,w-wi]} sonst Kapitel 12

  32. Dynamische Programmierung Rekursive Berechnung von V[i,w]: 0 w-wi w W 0 0 0 0 0 i-1 0 V[i-1,w-wi] V[i-1,w] i 0 V[i,w] Ziel n 0 V[n,W] Kapitel 12

  33. Dynamische Programmierung Berechnung der Tabelle: O(n¢W) Zeit Brute force: O(2n) Frage: Wie schaut optimale Packung aus? Fazit: solange W klein, viel bessere Laufzeit als brute force. Falls W groß, dann unterteile Objekte in große (wi>=W/(42) ) und kleine Objekte. Wende auf die großen Objekte dynamische Programmierung an (kleine Tabelle) und auf die kleinen eine Greedy Methode an, die wir später noch beschreiben werden. Damit ist in Zeit O(n ¢ poly(1/)) Lösung ermittelbar, die um maximal 1+ von Optimum abweicht. Kapitel 12

  34. Greedy Verfahren Prinzip: teile Problem in mehrere kleine Entscheidungen auf, nimm immer lokales Optimum für jede kleine Entscheidung Vorteil: sehr schnell Nachteil: kann weit von optimaler Lösung entfernt sein Kapitel 12

  35. Greedy Verfahren Beispiele: • Dijkstra-Algorithmus für kürzeste Wege • Jarnik-Prim-Algorithmus für minimale Spannbäume • Huffman-Bäume • Rucksackproblem Kapitel 12

  36. Greedy Verfahren Alice muss Bob regelmässig wichtige Nachricht zukommen lassen. Bob wohnt leider ein paar Kilometer weit weg, es besteht aber Sichtkontakt. Alice hat eine Taschenlampe, und möchte die Nachricht „morsen“ mittels eines binären Alphabets (lang = „0“, kurz = „1“) Alice und Bob können eine Kodierung abmachen, wissen aber im voraus nur, dass die Nachrichten in deutsch sein werden, nicht aber deren Inhalt. Kodierung? Kapitel 12

  37. Greedy Verfahren Huffman-Baum: • Eingabe: Wahrscheinlichkeitsverteilung p auf einem Alphabet A (e.g., A = {a,b,c,d,...}) • Ausgabe: optimaler Präfixcode f:A ! {0,1}* für A, d.h.a 2 A |f(a)|¢p(a) minimal Präfixcode: Kodierung f:A ! {0,1}*, für die es keine Zeichen a,b2 gibt, für die f(a) ein Präfix von f(b) ist (d.h. f(b) anfängt mit f(a) ) Präfixcodes wichtig für eindeutige Dekodierung! Kapitel 12

  38. Greedy Verfahren Einsicht: jeder Präfixcode lässt sich als Binärbaum darstellen mit Zeichen in A an Blättern Beispiel: A={a,b,c,d} Zu was wird 101110 decodiert? • Kodierung f: • f(a) = 0 • f(b) = 110 • f(c) = 10 • f(d) = 111 0 1 0 1 a c 0 1 b d Kapitel 12

  39. Greedy Verfahren Huffman-Baum: Baum für optimale Kodierung Strategie: • Anfangs ist jedes Zeichen in A ein Baum für sich • Wiederhole, bis ein einziger Baum übrig: • Bestimme die beiden Bäume T1 und T2mit kleinsten Wahrscheinlichkeitswerten a p(a) ihrer Zeichen • Verbinde T1 und T2zu neuem Baum T 0 1 T T1 T2 Kapitel 12

  40. Zeichen A B C D _ Wkeit p 0,1 0,2 0,2 0,15 0,35 1,0 1 0 0,4 0,6 0 0 1 1 C 0,2 D 0,2 0,25 0,35 A 0 1 B 0,1 0,15 _ Greedy Verfahren Beispiel für Huffman-Baum: Kapitel 12

  41. Greedy Verfahren Rucksackproblem: • Eingabe:n Objekte mit Gewichten w1,…,wn und Werten v1,…,vn und Rucksack mit Kapazität W • Ausgabe: Objektmenge M maximalen Wertes, die in Rucksack passt Kapitel 12

  42. Greedy Verfahren Greedy Strategie: • Berechne Profitdichten d1=v1/w1,.., dn=vn/wn • Sortiere Objekte nach Profitdichten • Angefangen von dem Objekt mit höchster Profitdichte, füge Objekte zu Rucksack hinzu, bis kein Platz mehr da Problem: Greedy Strategie kann weit vom Optimum entfernt liegen Kapitel 12

  43. Greedy Verfahren Beispiel: zwei Objekte mit v1=1 und v2=W-1 und w1=1 und w2=W, Rucksackkapazität ist W Greedy-Methode: berechnet d1=1 und d2 = 1-1/W und wird nur Objekt 1 in Rucksack packen, da Objekt 2 nicht mehr passt Optimale Lösung: packe Objekt 2 in Ruck-sack (viel besser da Wert W-1 statt 1) Kapitel 12

  44. Greedy Verfahren Verbesserte Greedy-Methode: • Seien die Objekte 1 bis n absteigend nach Profitdichte sortiert • Bestimme maximale Objektmenge {1,…,i} wie bisher mit j<=i wj <=W • Gib entweder {1,…,i} oder {i+1} aus, je nachdem, welche Menge den maximalen (absoluten) Wert hat Kapitel 12

  45. Greedy Verfahren Behauptung: die Lösung der verbesserten Greedy-Methode ist höchstens einen Faktor 2 von der optimalen Lösung entfernt Beweis: • Wenn beliebige Bruchteile der Objekte gewählt werden könnten, wäre die optimale Lösung {1,…,i+1} (da maximale Profitdichte), wobei von Objekt i+1 nur der Bruchteil genommen wird, der noch in den Rucksack passt. • Für den optimalen Wert OPT gilt demnach:OPT <= j<=i+1 vj. • Also ist max{j<=i vj, vi+1} >= OPT/2 da beides zusammen grössergleich OPT, und wir grösseres nehmen Kapitel 12

  46. Lokale Suche Generische Verfahren (mit Nachbarschaft): • Backtracking • Branch-and-Bound • Hill climbing • Simulated annealing • Tabu search • Evolutionäre Verfahren (Mutation, Mating & Survival of the Fittest) Kapitel 12

  47. Backtracking Prinzip:systematische Tiefensuche im Lösungsraum, bis gültige Lösung gefunden Vorteil: einfach zu implementieren Nachteil: kann sehr lange dauern Kapitel 12

  48. Backtracking Beispiele: • n-Damen Problem • Hamiltonscher Kreis Problem Kapitel 12

  49. Backtracking n-Damen Problem: • Eingabe:n 2 IN • Ausgabe: Antwort auf die Frage, ob sich n Damen so auf einem nxn-Schachbrett stellen lassen, dass keine die andere schlagen kann Kapitel 12

  50. Backtracking Tiefensuche überSpalten (Nummerngeben Reihenfolgean, in der Zustände besucht werden) Beispiel für n=4 0 1 5 Keine Lösung 3 6 2 Keine Lösung für 3. Dame! 7 4 Keine Lösung Lösung Keine Lösung 8 Kapitel 12

More Related