Traveling Salesman Problem (TSP)

Werbung
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} ): jS }, 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)
aS

aS
x ab = 2

x ab  2
bS
bS
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.
Herunterladen