Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann 18.12.2008 Numerische Methoden und Algorithmen in der Physik Christian Autermann 1/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Numerische Methoden und Algorithmen in der Physik Christian Autermann 2/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Übersicht Einführung NP-vollständige Probleme Literaturliste Einleitung NP-Vollständigkeit Beispiel MST und Euler-/Hamiltonkreis Traveling Salesman Numerische Methoden und Algorithmen in der Physik Christian Autermann 3/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Informationen Material: Stroustrup: The C++ Programming Language, 3rd edition http://www.mathematik.uni-marburg.de/∼cpp/ B. Stroustrup: C++ In-depth Series A. Koenig, B. E. Moo: Accelerated C++ Press et al: Numerical Recipes, 3rd edition T. H. Cormen et al: Introductions to Algorithms, 2nd edition http://wwwiexp.desy.de/studium/lehre/numalg/ Numerische Methoden und Algorithmen in der Physik Christian Autermann 4/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP-vollständige Probleme Übersicht Bei der Entwicklung von Algorithmen wird in der Regel versucht die „Kosten”, also die Laufzeitabängigkeit und z.B. den Speicherbedarf zu reduzieren. Alle bisher betrachteten Algorithmen waren mit mindestens polynomischem Aufwand lösbar. D.h. bei einem input der Größe n verhielt sich die Laufzeit höchstens wie O(nk ), wobei k eine beliebige Konstante ist. Gilt dies für alle Probleme? Numerische Methoden und Algorithmen in der Physik Christian Autermann 5/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP-vollständige Probleme Die Antwort ist Nein! Beispiel: Turing’s „Halting Problem” Betrachte Algorithmus A, der bestimmen soll, ob ein Algorithmus B(~k) für alle möglichen inputs ki ein Ergebnis liefert, also in endlicher Zeit beendet wird. Einen solchen Algorithmus A kann es nicht geben (Turing). Beweis Siehe z.B. Wikipedia Numerische Methoden und Algorithmen in der Physik Christian Autermann 6/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP Vollständigkeit Eine bestimmte Klasse von Problemen nennt man NP-vollständig. Es ist bis heute unbekannt, ob diese Probleme in polynomischem Aufwand gelösst werden können. Es kann gezeigt werden, dass wenn ein NP-vollständiges Problem mit polynomischen Aufwand gelöst werden kann, dann können alle NP-vollständigen Probleme mit O(nk ) Aufwand gelöst werden. Bisher ist weder ein solcher Algorithmus entwickelt worden, noch ist bewiesen, dass ein solcher Algorithmus nicht existieren kann. → 1 Million Dollar Preisgeld für die Be- oder Widerlegung (Clay Mathematics Institute). Numerische Methoden und Algorithmen in der Physik Christian Autermann 7/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP-vollständige Probleme Definition P: Klasse aller Probleme die durch Algorithmen mit polynomischen Aufwand O(nk ) gelöst werden können. NP: Klasse aller Probleme, für die eine Lösungshypothese mit polynomischen Aufwand getestet werden kann. Es ist also offenbar P ⊆ NP. NPC : (NP-vollständig) Klasse der Probleme, für die ein Algorithmus mit polynomischen Aufwand nicht bekannt ist. Es gilt NPC ⊆ NP. Falls ein Element A gefunden wird, für das gilt A ∈ P und A ∈ NPC , dann gilt P = NP und NPC = 0. Numerische Methoden und Algorithmen in der Physik Christian Autermann 8/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP-Vollständigkeit Generelles Bei der Entwicklung eines Algorithmus für ein spezielles Problem kann es nützlich sein zuerst zu prüfen, ob das Problem NP-vollständig ist. In diesem Fall sucht man besser direkt nach einer guten approximativen Lösung, als nach einem schnellen Algorithmus, der das Problem löst. Numerische Methoden und Algorithmen in der Physik Christian Autermann 9/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Nachweis auf NP-Vollständigkeit Man zeigt das ein Problem NP-vollständig ist, in dem man z.B. zeigt das es durch einen Reduktionsalgorithmus R mit polynomischen Aufwand auf ein neues Problem umgeformt werden kann, dass bekanntermaßen NP-vollständig ist. Im Umkehrschluss gilt, dass ein polynomischer Algorithmus A durch einen polynomischen Reduktionsalgorithmus R zu einem neuen Algorithmus mit polynomischen Aufwand wird. Die Klasse der polynomischen Algorithmen ist also offenbar abgeschlossen. Numerische Methoden und Algorithmen in der Physik Christian Autermann 10/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman NP-vollständige Probleme Beispiel für ein NP-vollständiges Problem Die Frage ob eine Aussagenlogik (siehe z.B. Schaltlogik oben) erfüllbar ist, d.h. für bestimmte Bedingungen (Startwerte) wahr ist, ist nur mit exponentiellen Aufwand beantwortbar und damit NP-vollständig. Für obiges Problem müssen alle 23 Startwertmöglichkeiten getestet werden. Numerische Methoden und Algorithmen in der Physik Christian Autermann 11/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Übersicht Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Minimal Spanning Trees Eulerkreis Problem Hamiltonkreis Problem Traveling Salesman Numerische Methoden und Algorithmen in der Physik Christian Autermann 12/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Beispiele für ähnliche aber P bzw. NP-vollständige Probleme Minimal spanning trees (Minimaler Spannbaum) verbindet alle Punkte eines Graphen mit dem kürzest möglichen Wegenetz. Durch einen Punkt dürfen beliebig viele Wege führen. Ein Eulerzug enthält jede Kante eines gegebenden Graphen Kreises exakt einmal. (Der Eulerzug oder Eulerkreis wird offen genannt, wenn der Start- und Endknoten nicht identisch sind). Es existieren effiziente (linear), exakte Lösungsverfahren. Ein Hamiltonkreis ist ein geschlossener Kreis, der alle Knoten des Graphen enthält (und keinen Knoten zweimal durchläuft oder überschreitet). Es ist ein fundamentales NP-vollständiges Problem der Graphentheorie. Numerische Methoden und Algorithmen in der Physik Christian Autermann 13/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Minimal spanning trees Minimaler Spannbaum Für eine Menge von Punkten soll das kürzest mögliche Wegenetz gefunden werden, das alle Punkte verbindet. Beispiel: Eine Menge von Häusern soll miteinander vernetzt werden, es wird kein Wert auf Redundanz gelegt, aber die Kosten (also die Länge des Netzes) sollen so gering wie möglich sein. Es existieren Algorithmen, deren Aufwand O(K ln P) bzw. O(K + P ln P) ist, wobei P die Anzahl der Punkte und K die Zahl der möglichen erlaubten Kanten ist. Numerische Methoden und Algorithmen in der Physik Christian Autermann 14/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Minimal spanning trees Minimaler Spannbaum Die grau unterlegten Wege bilden einen Minimalen Spannbaum mit Gewicht 37. Der MST ist nicht eindeutig, in diesem Beispiel könnte man die Kante b → c mit Gewicht 8 durch die Kante a → h mit Gewicht 8 ersetzen. Numerische Methoden und Algorithmen in der Physik Christian Autermann 15/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Minimal spanning trees Der folgende Algorithmus gehöhrt zu der Klasse der gierigen Algorithmen; der Greedy Algorithmus wählt in jedem Schritt den Nachfolgezustand, der zu diesem Zeitpunkt den größten Gewinn verspricht. Pseudocode: Generische MST Implementation MST(Graph G) Baum A = 0 while A noch kein Minimaler Spannbaum ist Suche Kante (u,v) die ’sicher’ ist A = A + (u,v) return A A ist zu jedem Zeitpunkt ein Abschitt eines Minimalen Spannbaumes. In diesem Sinne ist eine Kante (u,v) “sicher”, wenn auch A+(u,v) ⊆ MST ist. Das verbleibende Problem ist, eine sichere Kante zu finden! Numerische Methoden und Algorithmen in der Physik Christian Autermann 16/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Minimal spanning trees Pseudocode: Kruskal Algorithmus Kruskal-MST(Graph G) for jeden Punkt v in G do Definiere elementaren Cluster C(v) Erstelle Liste K aller Kanten, sortiert nach Gewicht Baum A = 0 while A weniger als n-1 Kanten hat (oder Anzahl C > 1) Kante (u,v) = K[0] Lösche Element 0 aus K if C(v) != C(u) then Erweitere A um die Kante (v,u) Kombiniere C(v) und C(u) zu einem Cluster return Baum A Es werden nach und nach Minimale Teil-Spannbäume angelegt. Schleifen werden vermieden, indem nur unabhängige Cluster kombiniert werden. Numerische Methoden und Algorithmen in der Physik Christian Autermann 17/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Minimal spanning trees (1) (2) (3) (4) (5) (6) Numerische Methoden und Algorithmen in der Physik Christian Autermann 18/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Eulerkreisproblem Eine Menge von Kanten soll zu einem zusammenhängenden Zug verbunden werden. Beispiel: Das Haus vom Nikolaus 5 @ @ @ 3 @ @4 @ @ @ @ 1 @ @ @2 Dieses Problem ist offenbar lösbar, ein (offener) Eulerkreis ist z.B. 1 → 3 → 5 → 4 → 3 → 2 → 4 → 1 → 2. Numerische Methoden und Algorithmen in der Physik Christian Autermann 19/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Eulerkreisproblem Das Königsberger Brückenproblem Das Problem geht zurück auf Leonhard Euler, der 1736 einen Rundweg über die sieben Pregel Brücken in Königsberg suchte, so dass jede nur einmal überschritten werden muss. Wie lautet die Lösung? Bzw. warum ist es nicht lösbar? Numerische Methoden und Algorithmen in der Physik Christian Autermann 20/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Eulerkreisproblem Königsberger Brückenproblem 3 •P P 2 • • PP PP PP 4 P • 1 Numerische Methoden und Algorithmen in der Physik Christian Autermann 21/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Eulerkreisproblem Königsberger Brückenproblem 3 •P P 2 • PP PP PP 4 P • • 1 Dieses Problem ist nicht lösbar! Euler bewies 1736, dass höchstens zwei Knoten mit einer ungeraden Anzahl von Kanten existieren dürfen, damit ein Eulerzug gefunden werden kann. Der Zug ist ein Eulerkreis, wenn es keine ungeraden Knoten gibt. Numerische Methoden und Algorithmen in der Physik Christian Autermann 22/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Eulerkreisproblem Algorithmus von Fleury (1883) 1 Starte an einem Knoten mit ungerade Zahl von Kanten, falls solcher nicht existiert, dann wähle einen beliebigen Knoten 2 Wähle für den aktuellen Knoten eine Kante, die den Graph nicht in zwei Teile teilt, ausser wenn keine Alternative existiert 3 Der Endpunkt der Kante ist der neue aktuelle Knoten. Gehe zu (2) falls noch nicht benutzte Kanten existieren. Das Ergebnis ist ein Eulerkreis, wenn keine ungeraden Knoten existieren bzw. ein Eulerzug. Der Algorithmus ist von der Ordnung O(N 2 ), es existieren auch lineare Algorithmen. Numerische Methoden und Algorithmen in der Physik Christian Autermann 23/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Hamiltonkreisproblem Es soll nun eine Menge von Knoten miteinander zu einem geschlossenen Zug verbunden werden. Im Gegensatz zum Eulerkreis ist das Hamiltonkreisproblem NP-vollständig und damit wesentlich schwieriger zu lösen, obwohl es auf den ersten Blick sehr ähnlich ist. Beispiel: Hamilton hat ein mathematisches Spiel auf einem Dodekaeder beschrieben, bei dem ein Spieler einen Wegabschnitt aus fünf Punkten vorgibt, den ein anderer Spieler vervollständigen muss. Numerische Methoden und Algorithmen in der Physik Christian Autermann 24/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Hamiltonscher Dodekaeder Finde einen geschlossenen Weg, der alle Punkte verbindet. Numerische Methoden und Algorithmen in der Physik Christian Autermann 25/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Übersicht Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Lösungen des TSP Approximation mit MST Approximation mit Simulierter Abkühlung Numerische Methoden und Algorithmen in der Physik Christian Autermann 26/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Traveling Salesman Problem Beispiel für ein NP-vollständiges Problem Das wohl bekannteste Beispiel für NP-Vollständigkeit ist das Problem des Handlungsreisenden (TSP), ein Spezialfall eines Hamiltonkreises, nämlich der mit dem kürzesten Weg: Eine Anzahl N von Städten soll besucht, und schließlich zum Ausgangspunkt zurückgekehrt werden. Dabei soll die Anzahl der zurückzulegenden Kilometer (bzw. die Kosten) minimiert werden. Es gibt keine exakte Lösung mit Aufwand O(nk ) für irgendein k. Der „brutale Algorithmus” der einfach alle Möglichkeiten testet, braucht O(N!), andere optimiertere Algorithmen brauchen “nur” etwa O(n2 2n ) Schritte. Der aktuelle Rekord liegt bei 85900 Städten, um die exakte Lösung zu bestimmen wurden 135 CPU Jahre benötigt. Numerische Methoden und Algorithmen in der Physik Christian Autermann 27/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Traveling Salesman Problem Approximation Große NP-vollständige Probleme werden approximativ gelöst. Der Approximationsalgorithmus ist dabei polynomisch zeitabhängig. Die Genauigkeit des Algorithmus in bezug auf die exakte Lösung sei durch (1 + ) parametrisiert, wobei > 0. Man spricht von einem voll polynomischen Approximationsalgorithmus, falls das Laufzeitverhalten sowohl in bezug auf die Größe des inputs N, als auch in bezug auf 1/ polynomisch ist, k also von der Ordnung O( Nj ) für irgendein j und k. Numerische Methoden und Algorithmen in der Physik Christian Autermann 28/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Traveling Salesman Problem Dreiecksungleichung Die Dreiecksungleichung lautet: s(u → w ) ≤ s(u → v ) + s(v → w ) (1) Der direkte Weg ist immer kürzer als ein Umweg. Wird dies nicht vorausgesetzt, also werden z.B. die Kosten eines Wegs nicht rein geometrisch berechnet, sondern z.B. durch Zustand der Strasse, Steigung, Gegend, etc zusätzlich gewichtet, dann ist das Traveling Salesman Problem auch approximativ für =const nicht mehr polynomisch lösbar. Numerische Methoden und Algorithmen in der Physik Christian Autermann 29/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Traveling Salesman Problem Nächster Nachbar Methode Eine einfache Methode ist die, iterativ den jeweils nächsten Nachbar (im Sinne von kürzester Entfernung) zu der Tour hinzuzufügen, bis alle Punkte besucht wurden. Diese Methode ist beliebig schlecht, u.a. weil bis zum Schluss nicht berücksichtig wurde, dass zum Startpunkt zurückgekehrt werden muss. Weitere Methoden: Minimal Spanning Trees (→ Übung), Christofides-Heuristik (höchstens Faktor 1.5 schlechter als ideale Lösung), Post-Optimierungsverfahren, Abstrakte lokale und globale Suchverfahren, wie z.B. Simulierte Abkühlung (→ Übung). Numerische Methoden und Algorithmen in der Physik Christian Autermann 30/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Ein Minimaler Spannbaum (MST) ist ein Graph, der alle Punkte durch das kürzeste Wegenetz verbindet, dabei allerdings verschiedene Punkte mehrfach kreuzen kann. Mit Hilfe eines MST kann eine Tour für den Handlungsreisenden gefunden werden, die höchstens um den Faktor 2 länger ist als die ideale Tour, der Laufzeitaufwand des Algorithmus ist O(n2 ln n) (wenn die Dreiecksungleichung gilt). Minimal Spanning Trees (MST) 1 Erzeuge einen minimalen Spannbaum für den zugrundeliegenden Graphen 2 Verdopple jede Kante im resultierenden Spannbaum 3 Wähle einen beliebigen Startknoten und folge den Kanten des verdoppelten Spannbaums im Sinne eines Eulerkreises. Bereits besuchte Knoten werden dabei durch die direkte Kante zum folgenden Knoten übersprungen, sofern es sich nicht um den letzten Knoten des Kreises handelt. Numerische Methoden und Algorithmen in der Physik Christian Autermann 31/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman (1): Ausgangsverteilung der acht zu besuchenden Städte Numerische Methoden und Algorithmen in der Physik Christian Autermann 32/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman (2): Der Minimale Spannbaum für die zu besuchenden Städte. Numerische Methoden und Algorithmen in der Physik Christian Autermann 33/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman (3): Verdoppelung der Kanten. Wähle einen beliebigen Startknoten und folge den Kanten des verdoppelten Spannbaums im Sinne eines Eulerkreises. Bereits besuchte Knoten werden dabei durch die direkte Kante zum folgenden Knoten übersprungen, sofern es sich nicht um den letzten Knoten des Kreises handelt. Numerische Methoden und Algorithmen in der Physik Christian Autermann 34/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman (4): Resultierende MST-Tour. Numerische Methoden und Algorithmen in der Physik Christian Autermann 35/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman (5): Die ideale Lösung ist in diesem Beispiel nur um 23% kürzer. Numerische Methoden und Algorithmen in der Physik Christian Autermann 36/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Simulierte Abkühlung (simulated annealing) Grundidee: Nachbildung eines Abkühlungsprozesses: langsame Abkühlung sorgt dafür, dass die Moleküle ausreichend Zeit haben, sich zu ordnen und stabile Kristalle zu bilden. Dadurch wird ein energiearmer Zustand, nahe am Optimum erreicht Einfache Anwendung: 1 wähle zufälligen Schritt d zwischen [−δ, δ] mit u = x + d 2 wenn E (u) < E (x) wähle x = u 3 sonst: wähle x = u mit Wahrscheinlichkeit (x p(u) ∼exp(− E (u)−E ) T 4 erniedrige langsam T und die maximale Schrittweite δ Numerische Methoden und Algorithmen in der Physik Christian Autermann 37/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Simulierte Abkühlung Grundlage: Metropolisalgorithmus Akzeptiere immer Schritte bergab und manchmal Schritte bergauf (engl.: Metropolis-Hastings algorithm Metropolis et. al. 1953) Eigenschaften der Simulierten Abkühlung: findet globale Minima auch für kombinatorische Probleme anwendbar z.B. Handlungsreisendenproblem wenn Schrittrichtung zufällig, fast immer falsch bei mehrdimensionalen Räumen viele Funktionsauswertungen gutes Abkühlungsschema muss wolhüberlegt sein oder empirisch gefunden werden Numerische Methoden und Algorithmen in der Physik Christian Autermann 38/ 39 Einführung NP-vollständige Probleme MST und Euler-/Hamiltonkreis Traveling Salesman Simulierte Abkühlung Anwendung auf das Problem des Handlungsreisenden Die Energie E des Systems ist gegeben durch die Kosten, also die absolute Länge der aktuellen Tour. Dies soll minimiert werden. Der Zustand des Systems x beschreibt die Reihenfolge, in der die Punkte oder Städte angefahren werden sollen. Der neue Zustand u kann also die Reihenfolge x sein, wobei ein Teilabschnitt δ ⊂ x z.B. in umgekehrter Richtung befahren wird, oder an eine andere Stelle in x verschoben wird. Numerische Methoden und Algorithmen in der Physik Christian Autermann 39/ 39