Das Traveling Salesman Problem (TSP) Problembeschreibung: Gegeben sind n Städte und Abstände zwischen ihnen. Ein Handlungsreisender (traveling salesman) muss auf einer Tour all diese Städte einmal besuchen. Der Handlungsreisender startet und beendet die Tour in ein und derselben Stadt. Die Aufgabe besteht darin, eine Permutation (Reihenfolge) dieser Städte zu finden, welche die Gesamtlänge der Tour minimiert. Im Allgemeinen ist es unmöglich, alle Permutationen einer Tour zu berechnen. Betrachtet man z.B. eine Tour mit 12 Städten: Wenn eine Berechnung 0.01 sec CPU Zeit benötigt: 12! Berechnungen benötigen 4 790 016 sec ~ 55 Tage 11 h CPU Zeit Das Traveling Salesman Problem (TSP) TSP ist eines der bekanntesten kombinatorischen Probleme. Es gibt viele verschiedene Algorithmen zur Lösung dieses Problems, aber alle Algorithmen benötigen eine Berechnungszeit, die exponentiell bezüglich der Problemgröße n wächst. Ob es einen besseren Algorithmus gibt, ist ein bis heute noch ungelöstes Problem. Es ist empfehlenswert, keine Zeit in die Suche eines besseren Algorithmus zu verwenden. Die Problemklasse P Die Problem Klassen N und NP werden in der Komplexitätstheorie (Teildisziplin der Mathematik) untersucht. Für Algorithmen zu kombinatorischen Problemen wird die Laufzeit der Algorithmen als Funktion der Größe n der Eingabe gemessen. Wenn die Laufzeit höchstens wie ein Polynom nk (für eine positive ganze Zahl k) wächst, dann gehört das Problem zu der Klasse P. P steht für die Problemklasse der in polynomialer Zeit mit einem deterministischen Algorithmus lösbaren Probleme. Die Problemklasse NP Die Probleme der Klasse NP sind schwieriger. Für diese Probleme ist es nur möglich, eine Lösung zu erraten und in einer vernünftigen (polynomialen) Zeit zu entscheiden, ob diese Lösung korrekt, d.h. optimal, ist oder nicht. Solche Algorithmen werden nichtdeterministisch genannt. NP steht für die Problemklasse der in polynomialer Zeit mit einem nichtdeterministischen Algorithmus lösbaren Probleme. Die Klasse NP enthält eine große Menge praktischer Probleme, für die effiziente Algorithmen von vielen Forschern gesucht werden, aber keiner konnte bisher einen solchen Algorithmus finden. Für spezielle Probleme existieren trickreiche Algorithmen. Diese Lösungen haben oft nur theoretischen Wert und können nicht auf praktische, zusammengesetzte komplexe Aufgaben angewendet werden. In vielen praktischen Fällen ist es ausreichend, eine geeignete Lösung, nicht notwendig die beste zu wissen. Zum Beispiel existiert ein Algorithmus für das Problem TSP, der eine Tour in polynomialer Zeit berechnet ( n3 ), die höchstens 1,5 mal länger als die optimale Tour ist. Der Branch & Bound Algorithmus Dieser Algorithmus setzt voraus, dass der Lösungsraum eine Baumstruktur hat, so dass eine vollständige Suche in der Menge aller Möglichkeiten effizient möglich ist. Jeder Knoten dieses Baumes hat eine untere Grenze (lower bound) für die Länge aller Touren, die sich unterhalb dieses Knotens befinden. Ein Knoten wird durch eine reduzierte Distanztabelle und die untere Grenze beschrieben. Der Eintrag -1 in der Distanztabelle bedeutet, dass die Kante unendliche Länge hat und deshalb für die Tour nicht in Frage kommt. Soweit es möglich ist, werden Kanten gespeichert, die in der zugehörigen Tour vorkommen. Der Branch & Bound Algorithmus Der Schritt Beschränken 6 10 6 9 0 1 0 0 neue reduzierte Distanztabelle Um die untere Grenze für einen Knoten zu bestimmen, wird in jeder Zeile das Minimum berechnet. Diese Minimum wird von alle Elementen dieser Zeile subtrahiert. Das wird für alle Zeilen und Spalten ausgeführt. Diese Transformation ändert nicht die Lösung. Die untere Grenze ist die Summe dieser minimalen Einträge: Untere Grenze = (6 + 10 + 6 + 9) + (0 + 1 + 0 + 0) Die zu den Einträgen 0 gehörende Kanten werden weiter untersucht. Branch & Bound Algorithmus für das TSP der Schritt Verzweigen Knoten 1 Knoten 2 mit (5,1) Die Kante (5,1) hat in der reduzierten Distanztabelle die Länge 0. Knoten 3 ohne (5,1) Diese Tabelle zum Knoten 2 hat an der Stelle (5,1) den Eintrag –1 (unendlich). Das verhindert, dass diese Kante in einer folgenden Teillösungen verwendet wird. Reduzierte Distanztabelle In dieser Tabelle ist die 5. Zeile und die 1. Spalte gestrichen, da die Kante (5,1) bereits ausgewählt ist und in den folgende Teillösungen nicht noch einmal vorkommen darf. Die Kante (5,1) wird in der Spalte successors der Tabelle Tree gespeichert. Der Branch & Bound Algorithmus Knoten 1 Knoten 2 mit (5,1) Knoten 3 ohne (5,1) Knoten 6 mit (2,1) Knoten 7 ohne (2,1) Die Menge der entstehenden Daten kann enorm wachsen. In schlechtesten Fall werden ale Knoten verzweigt. Martin Aigner: Diskrete Mathematik. Vieweg Studium, 1996, S. 180-182. Uwe Schöning: Algorithmen - kurz gefasst. Spektrum Akademischer Verlag, 1997, S. 197-202. Dynamische Programmierung für das TSP Um das Problem mit der Größe n zu lösen, zerlegt man das Problem in mehrere Teilprobleme mit kleinerer Größe. Alle Teilprobleme werden gelöst und in eine Tabelle ways geschrieben. Bellmannsches Optimalitätsprinzip: Eine optimale Lösung des Problems ist die Zusammensetzung von optimalen Lösungen aller Teilprobleme. Wenn eine optimale Tour in der Stadt 1 startet und zur Stadt k führt, dann muss die Tour vom k nach 1 zurück über alle Städte {2,...,n} \ {k} ebenfalls optimal sein. Dynamische Programmierung für das TSP Bezeichnen wir mit g(i,S) die Länge der kürzesten Tour, die in der Stadt i beginnt, in der Stadt 1 endet und durch alle Städte der Menge S führt. Die Lösung des TSP ist offensichtlich g(1, {2,...,n}). { g(i,S) = d(i,1), wenn S keine Stadt enthält, min{ d(i,j) + g( j, S \ {j} ): jS }, wenn S wenigstens eine Stadt enthält. i S Uwe Schöning: Algorithmen - kurz gefasst. Spektrum, Akademischer Verlag, 1997, S. 97-99. 1 Dynamische Programmierung für das TSP Für 10 Städte müssen alle Teilmengen von {2,3,...,10} erzeugt werden. Die Tabelle ways für alle Werte der Funktion g(i,S) hat 29 = 512 Zeilen 0-Menge S 1-Menge S (9 mal) 2-Menge S (36 mal) 3-Menge S (84 mal) g(10,{2,3,4,5}) TSP als ein lineares Optimierungsproblem 1 4 2 Kante (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 3 Integer-Variable x a b{0,1} für die Eckennummern a, b mit a<b Dieses Verfahren ist für höchsten 9 Städte praktikabel. TSP als ein Lineares Optimierungsproblem Länge der Tour = d(a,b) * x a b Jede Stadt muss besucht werden: b: b a Elimination von Zyklen: (Mehrfache Zyklen) aS aS x ab = 2 x ab 2 bS bS für alle a. für alle S {1,...,n}. Hill Climbing für das TSP Lokale Suche: Interative Verbesserung einer Lösung durch Austauschen von 2 Kanten. x x+1 1 y+1 x y Austausch für x+1 1 y+1 y x + 1 y - 1: 1,..., x, x+1, x+2, ..., y, y+1,... 1,..., x, y, y-1, ..., x+1, y+1, ... Hill Climbing für das TSP Globales Optimum Lokales Optimum Startlösung Das Problem des lokalen Optimums kann durch verschiedene Startlösungen vermieden werden.