300 likes | 405 Views
Kombinatorische Suche Felix Potthoff Seminar „Parallel Programming and Parallel Algorithms “ Prof. Dr. Herbert Kuchen Institut für Praktische Informatik Westfälische Wilhelms-Universität Münster 12.01.2010. Agenda. Einführung Grundlagen Motivation Speed- up Divide and Conquer ( DaC )
E N D
Kombinatorische SucheFelix PotthoffSeminar „Parallel Programmingand Parallel Algorithms“Prof. Dr. Herbert KuchenInstitut für Praktische InformatikWestfälische Wilhelms-Universität Münster12.01.2010
Agenda Einführung Grundlagen Motivation Speed-up DivideandConquer (DaC) Sequentieller „Divide-and-Conquer“-Algorithmus Parallele „Divide-and-Conquer“ Varianten Backtracking Sequentieller „Backtrack“-Algorithmus Parallele „Backtracking“ Varianten Distributed TerminationDetection Alpha-Beta-Suche Sequentielle „Alpha-Beta-Suche“ Parallele „Alpha-Beta-Suche“ Zusammenfassung
Kombinatorische Suche Kombinatorische Suche Prozess Eine oder mehr optimale oder suboptimale Lösung zu finden In einem definierten Problembereich Weitreichendes Einsatzgebiet Datenbanken Experten Kontroll-Systeme Routenplanung Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Motivation Parallele Architekturen Multicore-prozessoren, Hyper-threading Shared Memory Hardware immer günstiger Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Such-Methodologien DivideandConquer BranchandBound Backtracking Spiel-Baum-Suchen Mini-Max-Suche Alpha-Beta-Suche Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Speed-Up Speed-up (Beschleunigung) N Prozessoren Speed-up = N? Nein! Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Agenda Einführung Grundlagen Motivation Speed-up DivideandConquer (DaC) Sequentieller „Divide-and-Conquer“-Algorithmus Parallele „Divide-and-Conquer“ Varianten Backtracking Sequentieller „Backtrack“-Algorithmus Parallele „Backtracking“ Varianten Distributed TerminationDetection Alpha-Beta-Suche Sequentielle „Alpha-Beta-Suche“ Parallele „Alpha-Beta-Suche“ Zusammenfassung Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Einleitung DivideandConquer Aufteilen in Teilprobleme Lösen mit DaC Weitere Teilprobleme möglich Kombinieren zur Lösung Anwendungsgebiete: Sortier-Algorithmen Quicksort Mergesort … Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Quicksort Algorithmus Parameter: A – Das zu sotierende Array links - Startposition rechts - Endposition Quicksort(A, links, rechts) iflinks < rechtsthen seperator Partition(A, links, rechts) Quicksort(A, links, seperator – 1) Quicksort(A, seperator, rechts) end if Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Quicksort Beispiel Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung Parameters: A – Das Array zum Sortieren links - Startposition rechts - Endposition Quicksort(A, links, rechts) iflinks < rechtsthen seperator Partition(A, links, rechts) Quicksort(A, links, seperator – 1) Quicksort(A, seperator, rechts) end if
Parallele Ausführung- Multiprozessor Original- und Teil-Probleme in zentralem Speicher Effiziente Arbeitslastverteilung Bottleneck Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Parallele DaC Variante – Multicomputer(1) Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung Teil-Probleme im Speicher eines Prozessors Effiziente Arbeitslastverteilung Overhead für Verteilung Kombination
Parallele DaC Variante – Multicomputer(2) Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung Verteilen der Teil-Probleme auf die Speicher der Prozessoren Höherer Speed-up möglich Gleichmäßige Arbeitslastverteilung schwieriger
Agenda Einführung Grundlagen Motivation Speed-up DivideandConquer (DaC) Sequentieller „Divide-and-Conquer“-Algorithmus Parallele „Divide-and-Conquer“ Varianten Backtracking Sequentieller „Backtrack“-Algorithmus Parallele „Backtracking“ Varianten Distributed TerminationDetection Alpha-Beta-Suche Sequentielle „Alpha-Beta-Suche“ Parallele „Alpha-Beta-Suche“ Zusammenfassung Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Einleitung Backtracking Kind-Knoten generieren Beliebigen Kind-Knoten wählen Kind-Knoten mit gleicher Technik bearbeiten Rekursion abbrechen, wenn: Alle Kind-Knoten besucht Sackgasse Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Anwendung Backtracking Lösung 4-Queens-Problem [PW04] N-Queens 4-Queens Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
BacktrackingSuchbaum Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Paralleles Backtracking Einen Teil-Baum für jeden Prozessor Problem Unausgeglichene Teilbäume Besuch unnötiger Knoten Lösung Bei erster Lösung stoppen Nachrichten Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Distribution terminationdetection Laufzeitfehler Nachrichten gleichzeitig Dijkstra‘s „Distribution terminationdetection“ Stellt sicher, dass sich keine Nachricht im System befindet Successoring Prozessor, Token Farbe Nachrichtenzähler Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Successorring Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
DDS Abbruchbedingungen Token wieder am Ausgangspunkt Nachrichtenzähler des Token 0 Farbe des Tokens weiß Nachrichtenzähler des Anfangsprozessor 0 Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Zusammenfassung Backtracking DFS Lineare Speichernutzung Effektive Arbeitslastverteilung als Grundproblem Zuteilung vieler Teilbäume als Potentielle Lösung Distributed terminationdetection Einführung - DaC- Backtracking- A-BSuche - Zusammenfassung
Agenda Einführung Grundlagen Motivation Speed-up DivideandConquer (DaC) Sequentieller „Divide-and-Conquer“-Algorithmus Parallele „Divide-and-Conquer“ Varianten Backtracking Sequentieller „Backtrack“-Algorithmus Parallele „Backtracking“ Varianten Distributed TerminationDetection Alpha-Beta-Suche Sequentielle „Alpha-Beta-Suche“ Parallele „Alpha-Beta-Suche“ Zusammenfassung Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung
Alpha-Beta-Suche Spielbäume Abschneiden (Pruning) Alpha und Beta Unter- und Obergrenze Such-Fenster Kategorisierung der Knoten Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Alpha-Beta-Pruning Einführung - DaC- Backtracking - A-BSuche - Zusammenfassung
Pruning Best-case Effektiv besuchte Knoten-Anzahl reduziert von b auf Perfekt geordneter Spielbaum Worst-case Alle Knoten Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung
Parallele Alpha-Beta-Suchen(1) Parallele Aspiration Search Suchbereich auf Prozessoren verteilt Mehr Prozessoren Kleinere Suchbereiche Größeres Pruning Potential Maximum Speedup 5 oder 6 Unabhängig von Prozessoren-Anzahl Parallele Sub-Tree-Evaluation Such-Overhead Kommunikations-Overhead Priorisieren der Suche von Teilbäumen Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung
Parallele Alpha-Beta-Suchen(2) Distributed TreeSearch Zuteilungsstrategie für Prozessoren Typ-1-Knoten Alle Prozessoren zum Kind-Knoten am weitesten links Typ-2 oder Typ-3-Knoten, sowie Ober-und Untergrenzen Neuer Prozess pro Knoten Mindestens einen Prozessor pro Prozess Erneute Zuteilung Effektive Verteilung der Arbeitslast Mitsenden von Alpha- und Beta-Werten Reduziert Such-Overhead Vergrößert Kommunikations-Overhead Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung
Agenda Einführung Grundlagen Motivation Speed-up DivideandConquer (DaC) Sequentieller „Divide-and-Conquer“-Algorithmus Parallele „Divide-and-Conquer“ Varianten Backtracking Sequentieller „Backtrack“-Algorithmus Parallele „Backtracking“ Varianten Distributed TerminationDetection Alpha-Beta-Suche Sequentielle „Alpha-Beta-Suche“ Parallele „Alpha-Beta-Suche“ Zusammenfassung Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung
Zusammenfassung Vielzahl von Entscheidungs- und Optimierungsprobleme Verschiedene Methodologien parallel ausführbar Effektive Arbeitslast Kommunikation Implizit durch Struktur Speed-up reduziert Kommunikations-Overhead Such-Overhead Einleitung - DaC- Backtracking - A-BSuche - Zusammenfassung