Verzweigen und beschränken WS13-14

Aus ProgrammingWiki
< AuK
Archivierte Version vom 2013-10-26T10:39:48+00:00. Aktuelle Version

Inhaltsverzeichnis

Autoren
Hannes Kretschmer
Julian Hilsberg

Bewerten, auswählen und expandieren

Anwendung auf das Rucksackproblem

Das Rundreiseproblem

Problemstellung

Ein Geschäftsmann (auch Handlungsreisender) muss bei einer Rundreise n vorgegebene Städte besuchen. Er startet in einer dieser Städte, besucht nacheinander alle anderen Städte und kehrt am Ende in seine Ausgangsstadt zurück.
Das Optimierungsproblem besteht jetzt darin, die Rundreise so zu planen, dass ihre Gesamtlänge minimal wird. Die Entfernung zwischen den einzelnen Paaren von Städten sind angegeben, z.B. in einer Tabelle oder Matrix. Das Problem ist auch bekannt unter dem Namen Travelling Salesman Problem (TSP).

Einteilung

Das Rundreiseproblem gehört in die Kategorie der NP-vollständigen Problemen. Für solche Probleme ist kein effizienter Algorithmus bekannt. Es wird aber angenommen, dass jeder deterministische Algorithmus zur exakten Lösung mindestens exponentiell viele Rechenschritte braucht. Ein mathematischer Beweis für diese Vermutung existiert aber bis heute nicht. Für spezielle Formen des TSP und zur Berechnung von Näherungslösungen sind aber viele effiziente Algorithmen bekannt.

Praxis

Einsätze in der Praxis:

 
  • Verkehrsplanung
  • Logistik
  • Entwurf Integrierter Schaltungen
  • Naiver Algorithmus

    Die wahrscheinlich offensichtlichste Lösung liegt darin sich alle Rundreisen generieren zu lassen und dann die mit dem kürzesten Weg auszuwählen. Für n Städte gibt es aber insgesamt (n-1)! verschiedene Rundreisen. Der Aufwand allein für die Erstellung ist exponentiell, wie sich mit der Stirlingschen Formel zeigen lässt:

    n! = \sqrt{2*\pi*n}*\left(\frac{n}{e}\right)^n*\left(1+\frac{1}{12n}+\frac{1}{288n^2}+\mathcal{O}\left(\frac{1}{n^3}\right)\right)

    S3juhils_Tsp6.png

    Bereits für 10 Städte gibt es 362.880 mögliche Rundreisen, für 13 sind es dann 479.001.600 mögliche Rundreisen.
    Nun muss man noch die kürzeste Rundreise finden, was durch Entfernungsmatrizen möglich ist. Möchte man nun das TSP mit vilen Städten (großem n) lösen, bedarf es einer anderen Lösungsstrategie.

    Lösung mit Verzweigen und beschränken