Systematische Suche Idee: Alle (sinnvollen) Möglichkeiten ausprobieren. Anwendungen: I Ganzzahlige lineare Programmierung (Integer Linear Programming) (ILP) I Constraint Satisfaction I SAT (Aussagenlogik) I Theorembeweiser (Prädikatenlogik,... ) I konkrete NP-schwere Probleme I Strategiespiele I Puzzles KIT Institut für Theoretische Informatik 475
Beispiel: Branch-and-Bound für das Rucksackproblem Function bbknapsack((p 1,...,p n ),(w 1,...,w n ),M) :L assert p 1 p 2 p w 1 w 2 n w n ˆx=heuristicKnapsack((p 1,...,p n ),(w 1,...,w n ),M) : L x : L recurse(1,m,0) return ˆx KIT Institut für Theoretische Informatik 476
Beispiel: Branch-and-Bound für das Rucksackproblem Function bbknapsack((p 1,...,p n ),(w 1,...,w n ),M) :L assert p 1 p 2 p w 1 w 2 n w n ˆx=heuristicKnapsack((p 1,...,p n ),(w 1,...,w n ),M) : L x : L recurse(1,m,0) return ˆx // Find solutions assuming x 1,...,x i 1 are fixed, // M 0 = M Â x k w k, P = Â x k p k. k<i k<i Procedure recurse(i,m 0,P : N) KIT Institut für Theoretische Informatik 476
// Find solutions assuming x 1,...,x i 1 are fixed, // M 0 = M Â x k w k, P = Â x k p k. k<i k<i x // current solution ˆx // best solution so far Procedure recurse(i,m 0,P : N) u:= P + upperbound((p i,...,p n ),(w i,...,w n ),M 0 ) if u > p ˆx then if i > n then ˆx := x else // Branch on variable x i if w i apple M 0 then x i := 1; recurse(i + 1,M 0 w i,p + p i ) If u > p ˆx then x i := 0; recurse(i + 1,M 0,P) Schlechtester Fall: 2 n rekursive Aufrufe Im Mittel: Linearzeit? KIT Institut für Theoretische Informatik 477
Beispielrechnung C B no capacity left???? 41 bounded 1??? 41 0??? 38 B 11?? 41 10?? 34 01?? 38 C B B 110? 39 011? 38 C C 1100 34 0110 38 C improved solution 24 10 14 20 5 4 M 3 2 1 KIT Institut für Theoretische Informatik 478
Branch-and-Bound allgemein Branching (Verzweigen): Systematische Fallunterscheidung, z. B. rekursiv (Alternative, z. B. Prioritätsliste) Verzweigungsauswahl: Wonach soll die Fallunterscheidung stattfinden? (z. B. welche Variable bei ILP) Reihenfolge der Fallunterscheidung: Zuerst vielversprechende Fälle (lokal oder global) Bounding: Nicht weitersuchen, wenn optimistische Abschätzung der erreichbaren Lösungen schlechter als beste (woanders) gefundene Lösung. Duplikateliminierung: Einmal suchen reicht Anwendungsspez. Suchraumbeschränkungen: Schnittebenen (ILP), Lemma-Generierung (Logik),... KIT Institut für Theoretische Informatik 479
Lokale Suche global denken, lokal handeln find some feasible solution x 2 S ˆx := x // ˆx is best solution found so far while not satisfied with ˆx do x := some heuristically chosen element from N (x) \ S if f (x) > f (ˆx) then ˆx := x KIT Institut für Theoretische Informatik 480
Hill Climbing Find some feasible solution x 2 L ˆx := x // best solution found so far loop if 9x 2 N (x) \ L : f (x) > f (ˆx) then ˆx := x else return ˆx // local optimum found KIT Institut für Theoretische Informatik 481
Problem: Lokale Optima 1 0.8 sin(x)/x 0.6 0.4 0.2 0-0.2-0.4-50 0 50 KIT Institut für Theoretische Informatik 482
Warum die Nachbarschaft wichtig ist 6 5 4 3 2 1 0 f 5 4 y 3 2 1 0 0 1 2 3 4 5 x Gegenbeispiel für Koordinatensuche KIT Institut für Theoretische Informatik 483
Jenseits von Hill Climbing Auch Verschlechterungen akzeptieren. I Simulated Annealing: physikalische Analogie liquid shock cool glass crystal anneal KIT Institut für Theoretische Informatik 484
Jenseits von Hill Climbing Auch Verschlechterungen akzeptieren. I Simulated Annealing: physikalische Analogie I Tabusuche I... KIT Institut für Theoretische Informatik 484
Evolutionäre Algorithmen Ausführliche Behandlung würde den Rahmen sprengen. Verallgemeinerung von lokaler Suche: I x! Population von Lösungskandidaten I Reproduktion fitter Lösungen I Mutation ähnlich lokaler Suche I zusätzlich: geschlechtliche Vermehrung. Idee: erben von guten Eigenschaften der Eltern KIT Institut für Theoretische Informatik 485
Zusammenfassung Vor- und Nachteile generischer Optimierungsmethoden Greedy: Einfach und schnell. Selten optimal. Manchmal Approximationsgarantien. Systematische Suche: Einfach mit Werkzeugen z. B. (I)LP, SAT, constraint programming. Selbst gute Implementierungen mögen nur mit kleinen Instanzen funktionieren. KIT Institut für Theoretische Informatik 486
Zusammenfassung Vor- und Nachteile generischer Optimierungsmethoden Greedy: Einfach und schnell. Selten optimal. Manchmal Approximationsgarantien. Systematische Suche: Einfach mit Werkzeugen z. B. (I)LP, SAT, constraint programming. Selbst gute Implementierungen mögen nur mit kleinen Instanzen funktionieren. Lineare Programmierung: Einfach und einigermaßen schnell. Optimal, falls das Modell passt. Rundungsheuristiken ergeben Näherungslösungen Dynamische Programmierung: Optimale Lösungen, falls Teilprobleme optimal und austauschbar sind. Hoher Platzverbrauch. Ganzzahlige lineare Programmierung: Leistungsfähiges Werkzeug für optimale Lösungen. Gute Formulierungen können viel Know-how erfordern. Kann rechenintensiv sein. KIT Institut für Theoretische Informatik 486
Zusammenfassung Vor- und Nachteile generischer Optimierungsmethoden Lokale Suche: Flexibel und einfach. Langsam, aber oft gute Lösungen für schwierige Probleme. Hill climbing: einfach, aber leidet an lokalen Optima. Simulated Annealing und Tabu Search: Leistungsfähig, aber langsam. Tuning kann unschön werden. Evolutionäre Algorithmen: Ähnliche Vor- und Nachteile wie lokale Suche. Durch geschl. Vermehrung potentiell mächtiger, aber auch langsamer und schwieriger, gut hinzukriegen. Weniger zielgerichtet. KIT Institut für Theoretische Informatik 487
Werbeblock Mehr dazu in Algorithmische Methoden für schwere Optimierungsprobleme, voraussichtlich wieder im WS 2016/17 I Heuristiken I Metaheuristiken I Approximationsalgorithmen I Online-Algorithmen KIT Institut für Theoretische Informatik 488
Kap. 13: Parallele Algorithmen Motivation Warum sollte man parallele Algorithmen verwenden? KIT Institut für Theoretische Informatik 489
Kap. 13: Parallele Algorithmen Motivation Warum sollte man parallele Algorithmen verwenden? I (Fast) Alle Rechner sind heute parallel (technische Gründe) I Verkürzung der Rechenzeit I Hoher Speicherbedarf [http://hdimagegallery.net/multi+core+ processor?image=1238315886, 03.07.2015] KIT Institut für Theoretische Informatik 489
Parallele Algorithmen Anwendungen eine Auswahl I Numerische Simulationen I Wetter- und Klimavorhersage I Ingenieurwissenschaften I Geologie I Naturwissenschaften I... KIT Institut für Theoretische Informatik 490
Parallele Algorithmen Anwendungen eine Auswahl I Numerische Simulationen I Wetter- und Klimavorhersage I Ingenieurwissenschaften I Geologie I Naturwissenschaften I... I Diskrete Algorithmen I Biologie I Informatik I... KIT Institut für Theoretische Informatik 490
Parallele Algorithmen Anwendungen eine Auswahl I Numerische Simulationen I Wetter- und Klimavorhersage I Ingenieurwissenschaften I Geologie I Naturwissenschaften I... I Diskrete Algorithmen I Biologie I Informatik I... I Konkrete Beispiele: I Suchmaschinen: PageRank I Bild- und Videoverarbeitung: Filtern KIT Institut für Theoretische Informatik 490
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: Verteiltes Rechnersystem: KIT Institut für Theoretische Informatik 491
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: I Mehrere Rechenelemente Verteiltes Rechnersystem: I Mehrere Rechenelemente KIT Institut für Theoretische Informatik 491
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: I Mehrere Rechenelemente I Physisch nah beieinander Verteiltes Rechnersystem: I Mehrere Rechenelemente I Physisch nicht nah beieinander KIT Institut für Theoretische Informatik 491
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: I Mehrere Rechenelemente I Physisch nah beieinander I Verschaltet durch sehr schnelle Verbindung Verteiltes Rechnersystem: I Mehrere Rechenelemente I Physisch nicht nah beieinander I Verschaltet durch eher langsame Verbindung KIT Institut für Theoretische Informatik 491
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: I Mehrere Rechenelemente I Physisch nah beieinander I Verschaltet durch sehr schnelle Verbindung I Speicher: I gemeinsam (shared memory) I lokal pro Rechenelement, verteilt (non-shared memory) Verteiltes Rechnersystem: I Mehrere Rechenelemente I Physisch nicht nah beieinander I Verschaltet durch eher langsame Verbindung KIT Institut für Theoretische Informatik 491
Rechnertypen Versuch einer Kategorisierung Paralleles Rechnersystem: I Mehrere Rechenelemente I Physisch nah beieinander I Verschaltet durch sehr schnelle Verbindung I Speicher: I gemeinsam (shared memory) KIT Institut für Theoretische Informatik 491
Gemeinsamer Speicher (shared memory) I Kommunikation durch Lesen/Schreiben vom/in gemeinsamen Speicher I Realität ist viel komplizierter (Speicherhierarchie!) KIT Institut für Theoretische Informatik 492
Rechenmodell Parallel Random Access Machine (PRAM) I p (sequentielle) Prozessoren (processing elements, PEs) I Gemeinsamer globaler Speicher I Synchroner Takt KIT Institut für Theoretische Informatik 493
Rechenmodell Parallel Random Access Machine (PRAM) I p (sequentielle) Prozessoren (processing elements, PEs) I Gemeinsamer globaler Speicher I Synchroner Takt I Globaler Speicher kann prinzipiell von allen Prozessoren gleichzeitig benutzt werden (lesend / schreibend) I Evtl. Einschränkungen hinsichtlich gleichzeitiger Benutzung derselben Speicherstelle I Single Instruction Multiple Data (SIMD) I feinkörnig (niedriger Quotient aus Kommunikationskosten und Berechnungskosten) KIT Institut für Theoretische Informatik 493