13.07.2015 Aufrufe

Grundlagen der Algorithmen und Datenstrukturen ... - TUM Seidl

Grundlagen der Algorithmen und Datenstrukturen ... - TUM Seidl

Grundlagen der Algorithmen und Datenstrukturen ... - TUM Seidl

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Gr<strong>und</strong>lagen</strong> <strong>der</strong> <strong>Algorithmen</strong><strong>und</strong> <strong>Datenstrukturen</strong>Kapitel 12Christian Scheideler + Helmut <strong>Seidl</strong>SS 200928.06.09 Kapitel 12 1


Generische OptimierungsverfahrenTechniken:• 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 lokal28.06.09 Kapitel 12 2


Systematische SuchePrinzip: durchsuche gesamtenLösungsraumAuch bekannt als „Brute Force“Vorteil: sehr einfach zu implementierenNachteil: sehr zeitaufwendig <strong>und</strong> solltedaher nur für kleine Instanzen verwendetwerden28.06.09 Kapitel 12 3


Systematische SucheBeispiele:• Suche in unsortierter Liste• Broadcasting in unstrukturierten verteiltenSystemen (Peer-to-Peer Systeme)• Selection Sort (nimm wie<strong>der</strong>holt kleinstesElement aus Eingabesequenz)• Rucksackproblem (siehe nächste Folie)28.06.09 Kapitel 12 4


Systematische SucheRucksackproblem:• Eingabe: n Objekte mit Gewichten w 1,…,w n<strong>und</strong> Werten v 1,…,v n<strong>und</strong> Rucksack mitKapazität W• Ausgabe: Objektmenge M maximalenWertes, die in Rucksack passtAnwendungen: Nikolaus, Räuber, …28.06.09 Kapitel 12 5


Systematische SucheLösung zum Rucksackproblem:Probiere alle Teilmengen von Objektenaus <strong>und</strong> merke die Menge M von Objektenmit ∑ i 2 Mw i≤ W, die bisher den maximalenWert hatteAufwand: O(2 n ), da es 2 n Möglichkeiten gibt,Teilmengen aus einer n-elementigenMenge zu bilden.28.06.09 Kapitel 12 6


Divide and ConquerPrinzip: teile Problem in Teilprobleme auf,die unabhängig voneinan<strong>der</strong> gelöstwerden könnenVorteil: Implementierung oft einfach, darekursivNachteil: eventuell werden Teilproblemedoppelt gelöst28.06.09 Kapitel 12 7


Divide and ConquerBeispiele:• Mergesort• Quicksort• Binary Search• Arithmische Operationen wie Matrixmultiplikationo<strong>der</strong> Multiplikation großer Zahlen• Nächstes-Paar-Problem28.06.09 Kapitel 12 8


Erinnerung: Master TheoremFür positive Konstanten a,b,c,d mit n=b k <strong>und</strong>eine natürliche Zahl k seir(n) = a falls n=1r(n) = c*n + d*r(n/b) falls n > 1Dann gilt:• r(n) = Θ(n) falls d < b• r(n) = Θ(n log n) falls d = b• r(n) = Θ(n log _b d ) falls d > b28.06.09 Kapitel 12 9


Master Theorem (komplett)Für positive Konstanten a,b,d mit n=b k <strong>und</strong>eine natürliche Zahl k seiT(n) = a falls n=1T(n) = f(n) + d*T(n/b) falls n > 1Dann gilt mit q=log bd:• T(n) = Θ(n q ) falls f(n)=n p <strong>und</strong> pq28.06.09 Kapitel 12 10


Divide and ConquerMatrixmultiplikation nach Strassen:• Eingabe: nxn-Matrizen A <strong>und</strong> B• Ausgabe: nxn-Matrix C mit C=A¢BWir nehmen vereinfachend an, n sei Zweierpotenz.Dann A <strong>und</strong> B darstellbar durchjeweils 4 (n/2)x(n/2)-Matrizen:A=A 00A 01A 10A 11B=B 00B 01B 10B 1128.06.09 Kapitel 12 11


Divide and ConquerFür Matrix C gilt:mit• C 00= A 00B 00+ A 01B 10• C 01= A 00B 01+ A 01B 11• C 10= A 10B 00+ A 11B 10C=C 00C 01C 10C 11• C 11= A 10B 01+ A 11B 11d.h. wir brauchen 8 rekursive Aufrufe!Geht das eventuell besser ??!28.06.09 Kapitel 12 12


Divide and ConquerFür Matrix C gilt auch:C=C 00C 01C 10C 11mit• C 00= M 1+M 4-M 5+M 7• C 01= M 3+M 5• C 10= M 2+M 4• C 11= M 1+M 3-M 2+M 6mit Matrizen M 1,…,M 7wie in nächster Folie28.06.09 Kapitel 12 13


Divide and ConquerMatrizen M 1,…,M 7:• M 1=(A 00+A 11) ¢ (B 00+B 11)• M 2=(A 10+A 11) ¢ B 00• M 3=A 00¢ (B 01-B 11)• M 4=A 11¢ (B 10-B 00)• M 5=(A 00+A 01) ¢ B 11• M 6=(A 10-A 00) ¢ (B 00+B 01)• M 7=(A 01-A 11) ¢ (B 10+B 11)Nur 7 rekursiveAufrufe !!!28.06.09 Kapitel 12 14


Divide and ConquerLaufzeit von Strassens Algorithmus:T(1)=O(1), T(n) = 7T(n/2) + O(n 2 )Also Laufzeit O(n log 2 7 ) = O(n 2,81 )Laufzeit <strong>der</strong> Schulmethode (brute force):O(n 3 )28.06.09 Kapitel 12 15


Divide and ConquerNächstes-Paar-Problem:• Eingabe: Menge S von n PunktenP 1=(x 1,y 1),…,P n=(x n,y n) im 2-dimensionalenEuklidischen Raum• Ausgabe: Punktpaar mit kürzester DistanzAnnahme: n ist Zweierpotenz28.06.09 Kapitel 12 16


Divide and ConquerAlgo 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-Problemrekursiv durch Algo ClosestPair28.06.09 Kapitel 12 17


Divide and ConquerAlgo ClosestPair(S):Eingabe: nach x-Koordinate sortierte PunktmengeS• |S|=2: sortiere S gemäß y-Koordinate <strong>und</strong> gibDistanz zwischen zwei Punkten in S zurück• |S|>2:– teile S in <strong>der</strong> Mitte (Position n/2) in S 1<strong>und</strong> S 2– d 1=ClosestPair(S 1); d 2=ClosestPair(S 2);– d=min{ClosestCrossPair(S 1,S 2,min(d 1,d 2)), d 1, d 2};– Führe merge(S 1,S 2) durch, so dass S am Ende nach y-Koordinate sortiert ist (S 1, S 2bereits sortiert)– gib d zurück28.06.09 Kapitel 12 18


Divide and ConquerClosestCrossPair(S 1,S 2,d):d=min{d 1,d 2}Nur Punktpaare inStreifen interessantddd 2d 1Punkte nach y-Koordinate sortiertNur max. 4 Punktein dxd-QuadrantS 1S 228.06.09 Kapitel 12 19


Divide and ConquerClosestCrossPair:• Durchlaufe die (nach <strong>der</strong> y-Koordinatesortierten) Punkte in S 1<strong>und</strong> S 2von oben nachunten (wie in merge(S 1,S 2)) <strong>und</strong> merke dieMengen M 1<strong>und</strong> M 2<strong>der</strong> 8 zuletzt gesehenenPunkte in S 1<strong>und</strong> S 2im d-Streifen• Bei jedem neuen Knoten in M 1, berechneDistanzen zu Knoten in M 2, <strong>und</strong> bei jedem neuenKnoten in M 2, berechne Distanzen zu Knoten inM 1• Gib am Ende minimal gef<strong>und</strong>ene Distanz zurück28.06.09 Kapitel 12 20


Divide and ConquerLaufzeit 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(n 2 )28.06.09 Kapitel 12 21


Dynamische ProgrammierungPrinzip: rekursive Durchsuchung desLösungsraums mittels SpeicherVorteil: verhin<strong>der</strong>t doppelte Berechnung vonTeillösungenNachteil: benötigt eventuell sehr vielSpeicher28.06.09 Kapitel 12 22


Dynamische ProgrammierungBeispiele:• Berechnung des Binomialkoeffizienten• Rucksackproblem28.06.09 Kapitel 12 23


Dynamische ProgrammierungBerechnung des Binomialkoeffizienten:Eingabe: n,k ≥ 0, n ≥ kAusgabe: 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 ≥ 0C(n,k)=C(n-1,k-1)+C(n-1,k) für n>k>0nk28.06.09 Kapitel 12 24


Dynamische Programmierung0 1 2 …. k-1 k0111 12 1 2 1.k1 k … 1zu berechnendeEinträge (


Dynamische ProgrammierungBerechnung des Binomialkoeffizienten:for (i=0;i≤n;i++)for (j=0;j ≤ min(i,k);j++)if (j==0 || j==i) 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)28.06.09 Kapitel 12 26


Dynamische ProgrammierungRucksackproblem:• Eingabe: n Objekte mit Gewichten w 1,…,w n<strong>und</strong> Werten v 1,…,v n<strong>und</strong> Rucksack mitKapazität W• Ausgabe: Objektmenge M maximalenWertes, die in Rucksack passt28.06.09 Kapitel 12 27


Dynamische ProgrammierungV[i][w]: optimaler Wert, <strong>der</strong> für die Objekte 1 bis ibei Rucksackvolumen w erreichbar istRekursive Berechnung von V[i][w]:• Für die Teilmengen, die das i-te Objekt nichtenthalten, ist <strong>der</strong> Wert <strong>der</strong> optimalen Lösunggleich V[i-1][w]• Für die Teilmengen, die Objekt i enthalten, ist<strong>der</strong> Wert <strong>der</strong> optimalen Lösung gleichv i+V[i-1][w-w i]28.06.09 Kapitel 12 28


Dynamische ProgrammierungRekursive Formel für V[i][w]:V[0][w]=0 für alle w ≥ 0V[i][0]=0 für alle i ≥ 0V[i][w]=V[i-1][w] falls w-w i


Dynamische ProgrammierungRekursive Berechnung von V[i][w]:0 w-w iw W00 0 0 0i-10V[i-1][w-w i]V[i-1][w]i0V[i][w]Zieln0 V[n][W]28.06.09 Kapitel 12 30


Dynamische ProgrammierungBerechnung <strong>der</strong> Tabelle: O(n¢W) ZeitBrute force: O(2 n )Fazit: solange W klein, viel bessere Laufzeit alsbrute force. Falls W groß, dann unterteileObjekte in große ( w i≥ 1/(4ε 2 W) ) <strong>und</strong> kleineObjekte. Wende auf die großen Objektedynamische Programmierung <strong>und</strong> auf diekleinen eine Greedy Methode an, die wir späternoch beschreiben werden. Damit ist in ZeitO(n ¢ poly(1/ε)) Lösung ermittelbar, die ummaximal 1+ε von Optimum abweicht.28.06.09 Kapitel 12 31


Greedy VerfahrenPrinzip: teile Problem in mehrere kleineEntscheidungen auf, nimm immer lokalesOptimum für jede kleine EntscheidungVorteil: sehr schnellNachteil: kann weit von optimaler Lösungentfernt sein28.06.09 Kapitel 12 32


Greedy VerfahrenBeispiele:• Dijkstra-Algorithmus für kürzeste Wege• Jarnik-Prim-Algorithmus für minimaleSpannbäume• Huffman-Bäume• Rucksackproblem28.06.09 Kapitel 12 33


Greedy VerfahrenHuffman-Baum:• Eingabe: Wahrscheinlichkeitsverteilung p aufeinem Alphabet A• Ausgabe: optimaler Präfixcode f:A ! {0,1}* fürA, d.h. ∑ a 2 Af(a)¢p(a) minimalPräfixcode: Kodierung f:A ! {0,1}*, für die eskeine Zeichen a,b2 Σ gibt, für die f(a) ein Präfixvon f(b) ist (d.h. f(b) anfängt mit f(a) )Präfixcodes wichtig für eindeutige Dekodierung!28.06.09 Kapitel 12 34


Greedy VerfahrenEinsicht: je<strong>der</strong> Präfixcode lässt sich als Binärbaumdarstellen mit Zeichen in A an BlätternBeispiel: A={a,b,c,d}a0 10 1c 0 1Kodierung f:• f(a) = 0• f(b) = 110• f(c) = 10• f(d) = 111bd28.06.09 Kapitel 12 35


Greedy VerfahrenHuffman-Baum: Baum für optimale KodierungStrategie:• Anfangs ist jedes Zeichen in A ein Baum für sich• Wie<strong>der</strong>hole, bis ein einziger Baum übrig:– Bestimme die beiden Bäume T 1<strong>und</strong> T 2mit kleinstenWahrscheinlichkeitswerten ∑ ap(a) ihrer Zeichen– Verbinde T 1<strong>und</strong> T 2zu neuem Baum T0 1TT 1T 228.06.09 Kapitel 12 36


Greedy VerfahrenBeispiel für Huffman-Baum:ZeichenA B CD_Wkeit p0,35 0,1 0,20,20,150 1,0 10,40,60 1 0 1C 0,2 D 0,2B0,250 10,1 0,150,35 A28.06.09 Kapitel 12 37_


Greedy VerfahrenRucksackproblem:• Eingabe: n Objekte mit Gewichten w 1,…,w n<strong>und</strong> Werten v 1,…,v n<strong>und</strong> Rucksack mitKapazität W• Ausgabe: Objektmenge M maximalenWertes, die in Rucksack passt28.06.09 Kapitel 12 38


Greedy VerfahrenGreedy Strategie:• Berechne Profitdichten d 1=v 1/w 1,.., d n=v n/w n• Sortiere Objekte nach Profitdichten• Angefangen von dem Objekt mit höchsterProfitdichte, füge Objekte zu Rucksack hinzu,bis kein Platz mehr daProblem: Greedy Strategie kann weit vomOptimum entfernt liegen28.06.09 Kapitel 12 39


Greedy VerfahrenBeispiel: zwei Objekte mit v 1=1 <strong>und</strong> v 2=W-1<strong>und</strong> w 1=1 <strong>und</strong> w 2=W, Rucksackkapazität istWGreedy-Methode: berechnet d 1=1 <strong>und</strong> d 2= 1-1/W <strong>und</strong> wird nur Objekt 1 in Rucksackpacken, da Objekt 2 nicht mehr passtOptimale Lösung: packe Objekt 2 in Rucksack(viel besser da Wert W-1 statt 1)28.06.09 Kapitel 12 40


Greedy VerfahrenVerbesserte Greedy-Methode:• Seien die Objekte 1 bis n absteigend nachProfitdichte sortiert• Bestimme maximale Objektmenge {1,…,i}wie bisher mit ∑ j


Greedy VerfahrenBehauptung: die Lösung <strong>der</strong> verbesserten Greedy-Methode ist höchstens einen Faktor 2 von <strong>der</strong>optimalen Lösung entferntBeweis:• Wenn beliebige Bruchteile <strong>der</strong> Objekte gewähltwerden könnten, wäre die optimale Lösung {1,…,i+1}, wobei von Objekt i+1 nur <strong>der</strong> Bruchteilgenommen wird, <strong>der</strong> noch in den Rucksackpasst.• Für den optimalen Wert OPT gilt demnach:OPT ≤ ∑ j


Lokale SucheGenerische Verfahren:• Backtracking• Branch-and-Bo<strong>und</strong>• Hill climbing• Simulated annealing• Tabu search• Evolutionäre Verfahren28.06.09 Kapitel 12 43


BacktrackingPrinzip: systematische Tiefensuche imLösungsraum, bis gültige Lösunggef<strong>und</strong>enVorteil: einfach zu implementierenNachteil: kann sehr lange dauern28.06.09 Kapitel 12 44


BacktrackingBeispiele:• n-Damen Problem• Hamiltonscher Kreis Problem28.06.09 Kapitel 12 45


Backtrackingn-Damen Problem:• Eingabe: n 2 IN• Ausgabe: Antwort auf die Frage, ob sich nDamen so auf einem nxn-Schachbrettstellen lassen, dass keine die an<strong>der</strong>eschlagen kann28.06.09 Kapitel 12 46


BacktrackingTiefensuche überSpalten (Nummerngeben Reihenfolgean, in <strong>der</strong>Zustände 1besuchtwerden)02 3Beispiel für n=4Keine Lösung56Keine Lösung47Keine LösungKeine LösungLösung28.06.09 Kapitel 12 478


BacktrackingHamiltonscher Kreis Problem:• Eingabe: ungerichteter Graph G=(V,E)• Ausgabe: Kreis C µ E, <strong>der</strong> jeden Knotengenau einmal besucht, falls dieser existiert28.06.09 Kapitel 12 48


Backtrackingab0acd eG=(V,E)f3d2c6e1bfe910e d fc4 7 811Kein Erfolg5 fKein ErfolgErfolgd 1228.06.09 Kapitel 12 49a13


Branch and Bo<strong>und</strong>Prinzip: systematische Breitensuche imLösungsraum (mit Bewertung <strong>der</strong> Zustände),bis optimale Lösung gef<strong>und</strong>enVorteil: relativ einfach zu implementierenNachteil: kann sehr lange dauern28.06.09 Kapitel 12 50

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!