Ich verstehe, dass die 3-Opt-Heuristik zur Lösung des Problems des Handlungsreisenden darin besteht, drei Kanten aus einem Diagramm zu entfernen und drei weitere hinzuzufügen, um die Tour erneut abzuschließen. Ich habe jedoch viele Artikel gesehen, in denen erwähnt wird, dass es beim Entfernen von drei Kanten nur noch zwei Möglichkeiten gibt, die Tour neu zu kombinieren - dies macht für mich keinen Sinn.
Zum Beispiel habe ich ein Papier [1] gefunden, in dem steht:
Der 3-Opt-Algorithmus funktioniert auf ähnliche Weise, aber anstatt zwei Kanten zu entfernen, entfernen wir drei. Dies bedeutet, dass wir zwei Möglichkeiten haben, die drei Pfade wieder zu einer gültigen Tour1 zu verbinden (Abbildung 2 und Abbildung 3). Eine 3-Opt-Bewegung kann tatsächlich als zwei oder drei 2-Opt-Bewegungen angesehen werden.
Ich zähle jedoch 3 verschiedene Möglichkeiten, um die Tour wieder zu verbinden. Was fehlt mir hier?
Kann mich jemand nach Möglichkeit mit einem Algorithmus für 3-opt verknüpfen? Ich versuche nur, es zu verstehen, aber ich habe noch keine klaren Algorithmen gefunden: Alle Ressourcen, die ich finde, sagen einfach "drei Kanten entfernen, sie wieder verbinden". Das ist es, was irgendwie vage ist.
Hier sind die 3 Touren, die mir nach dem Entfernen von drei Kanten als 3-Opt-Moves erscheinen.
- Heuristik für das Problem des Handlungsreisenden von C. Nilsson
Antworten:
Sie haben die Fußnote verpasst - diese Methoden beinhalten "nicht, dass die Verbindungen mit einem einzelnen 2-Opt-Zug identisch sind". Tatsächlich gibt es in nur zwei Permutationen ohne Fixpunkte (auch als Störungen bezeichnet ), nämlich und . Im Allgemeinen reicht es für eine opt-Bewegung aus, Permutationen ohne feste Punkte zu berücksichtigen, da diejenigen mit festen Punkten -Züge sind.S3 (123) (132) k t (k−t)
Der Algorithmus für die lokale Suche mit opt ist wie folgt. Beginnen Sie mit einer ersten Lösung, beispielsweise der von Christofides 'Algorithmus. Versuchen Sie wiederholt, es zu verbessern, indem Sie eine Option ausführen: Wählen Sie Kanten aus und verbinden Sie sie auf andere Weise wieder (diesmal ist es in Ordnung, wenn die Verschiebung auch eine Bewegung für einige ), was zu einer kürzeren Tour führt .k k k ℓ ℓ<k
Die Art und Weise, wie dies implementiert wird, besteht darin, alle Sätze von Kanten und alle Arten des erneuten Verbindens der Kanten, möglicherweise in einer intelligenten Reihenfolge, zu durchlaufen und den Längenunterschied zu berechnen (es besteht lediglich keine Notwendigkeit, die Länge der gesamten Tour neu zu berechnen die unterschiedliche Länge, die anstelle von ); Wenn eine Verbesserung festgestellt wird, wechseln wir und wiederholen von Anfang an. Wir machen so weiter, bis wir stecken bleiben.k O(k) O(n)
Eine andere Variante besteht darin, immer alle Möglichkeiten auszuprobieren und die zu verwenden, die zur besten Verbesserung führt. Es gibt auch andere Varianten, die Sie wahrscheinlich in der Literatur finden können.
quelle
Nehmen wir an, wir haben 3 Punkte A, B und C. Zuerst tauschen wir (A, B) und dann können wir nur (B, C) oder (A, C) tauschen. Auf diese Weise haben wir nur zwei verschiedene Möglichkeiten.
quelle
Ich konnte 4 3-Opt-Züge finden (die nicht 2-Opt sind): Wenn ich der Sechseck-Tour eine Nummerierung von 123456 (beginnend am oberen linken Scheitelpunkt) geben würde, hätten die anderen Touren Nummern von 125634, 124365, 126534 und 125643 , die eine Teilmenge der Störung von 12 sind [3456] (wobei 3456 gestört wird).
quelle