HEINZ NIXDORF INSTITUT Heuristiken Universität Paderborn Algorithmen und Komplexität …. sind Algorithmen, die exakte Lösungen für Probleme berechnen, „in der Praxis“ „häufig“ sehr schnell sind, aber typischerweise sehr schlechte worst case Laufzeit haben. Beispiele: - Backtracking - Branch & Bound - Lokale Verbesserung (Genetische Algorithmen, Simulated Annealing, …….) Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Backtracking Universität Paderborn Algorithmen und Komplexität ….findet Anwendung bei Problemen, deren Lösungen aus vielen Komponenten zusammengesetzt sind. Bsp : 3 SAT : Lösung: (a1, …, an) 2 {0,1}n HC : Lösung: Knotenfolge (1, v2, …, vn) Erste Idee: „erschöpfende Suche“ (exhaustive search) Durchsuche systematisch alle Lösungen durch Tiefen- oder Breitensuche im Suchbaum. 3 SAT: Binärer Baum der Tiefe n ! HC : n-ärer Baum der Tiefe n ! oder (etwas schlauer) Baum mit Graden n-1, n-2, n-3, … ! 2n Blätter nn Blätter (n-1)! Blätter. Worst Case und Best Case: O(2n) bzw. O(nn) bzw. O (n!) Friedhelm Meyer auf der Heide 2 HEINZ NIXDORF INSTITUT Idee des Backtracking Universität Paderborn Algorithmen und Komplexität Führe Tiefensuche aus, versuche frühzeitig an einem Knoten zu erkennen, ob unter ihm noch eine zulässige Lösung liegt, d.h.: ob die durch den Knoten beschriebene Teillösung zur Gesamtlösung vervollständigt werden kann. Falls nicht, gehe gar nicht erst in den Subbaum hinein, sondern gehe eine Kante rückwärts im Baum (backtrack)). Friedhelm Meyer auf der Heide 3 HEINZ NIXDORF INSTITUT Backtrack-Regeln für 3-SAT Universität Paderborn Algorithmen und Komplexität Frage: Wann ist Teillösung (a1, …, ai, x, x, …, x) für eine 3SAT-Formel garantiert nicht zur Gesamtlösung erweiterbar? Antwort: Wenn die belegten Variablen bereits mindestens eine Klausel falsch macht. Bsp. : enthält Klausel (x1 Ç :x2 Ç x5) und Teillösung ist (0,1,1,00, x x … x) Frage: Wann ist Teillösung garantiert zur Gesamtlösung erweiterbar? Antwort: Wenn die belegten Variablen bereits in jeder Klausel je mindestens ein Literal wahr macht. [Einfache Variante des Davis-Putnam Algorithmus] Friedhelm Meyer auf der Heide 4 HEINZ NIXDORF INSTITUT Backtrackregeln für HC Universität Paderborn Algorithmen und Komplexität Teillösung: Weg (1,v1, …, vi, * … *) Frage: Wann ist (1, v1, …, vi) garantiert nicht zu HC erweiterbar? Antwort: Falls G \ {1, v1 …, vi-1 , vi} nicht zusammenhängend ist (weiter Kriterien sind hier möglich.) Friedhelm Meyer auf der Heide 5 HEINZ NIXDORF INSTITUT Brand & Bound Universität Paderborn Algorithmen und Komplexität ….. ist „Backtracking für Optimierungsprobleme“. Beispiel TSP: Gegeben: vollständiger Graph G mit Kantengewichten d(i,j) Gesucht : Rundreise 1, v1 … vn-1 mit minimaler Länge. Beobachtung: Da G vollständig ist, ist jede der (n-1)! möglichen Rundreise zulässig. Idee: Durchlaufe G wieder mit Tiefensuche, berechne an jeden Knoten untere Schranken LB für die Länge der kürzesten Rundreise, die mit dieser Teillösung T erreichbar ist. d.h.: Berechne Zahl LB, so dass jede Rundreise, die Erweiterung von T ist, Länge mindestens LB hat. Führe Backtrack durch, falls LB > beste bisher gefundene Lösung Friedhelm Meyer auf der Heide 6 HEINZ NIXDORF INSTITUT Untere Schranke bei TSP Universität Paderborn Algorithmen und Komplexität Teillösung 1, v1 … vi, Länge D Betrachte G‘ = G \ {1, v1, … vi} sei d‘ = Länge der kürzesten Kante {1,j} , j {v1 … vi} d‘‘ = Länge der kürzesten Kante {vi, j}, j 2 {1, v1 … vi-1} für l {1, v1 … vi}: dl = Summe der beiden kürzesten Kanten inzident zu l in G‘. Beh: Jede Rundreise die 1, v1 …vi enthält, hat Länge LB = Friedhelm Meyer auf der Heide 7