Wydaje mi się dziwne, że TSP zaprzecza możliwości powtarzania się miast. Celem tego podróżującego sprzedawcy jest pójść jak najszybciej i odwiedzić wszystkie miasta, prawda? Co jeśli szybsze jest podróżowanie przez miasto, w którym już byłeś?
Wydaje mi się dziwne, że TSP zaprzecza możliwości powtarzania się miast. Celem tego podróżującego sprzedawcy jest pójść jak najszybciej i odwiedzić wszystkie miasta, prawda? Co jeśli szybsze jest podróżowanie przez miasto, w którym już byłeś?
Odpowiedzi:
Nie ma znaczenia dokładnie, jak go zdefiniujesz, ponieważ jest to tylko sposób modelowania rzeczywistego problemu. W TSP masz po prostu zestaw miast i koszty podróży między nimi. Nie wyklucza to możliwości, że w rzeczywistej sytuacji, w której modelujesz, najlepsza trasa między B i C może przebiegać przez A. Jeśli tak, to tak, trasa modelowana jako ABCA w TSP może bardzo dobrze naprawdę wiąże się z przejechaniem dodatkowego czasu A w drodze z B do C, ale takie szczegóły są wyabstrahowane w modelu TSP.
Zgadzam się, że ograniczenie wygląda dziwnie i w wielu praktycznych sytuacjach nie ma znaczenia. Jak zauważył David w swojej odpowiedzi, jeśli możesz sam zmienić modelowanie, to tak naprawdę nie ma to znaczenia. Ale biorąc pod uwagę niemodyfikowalną instancję, zrobi to różnicę, ponieważ ogólny TSP z tym ograniczeniem nie jest możliwy do przybliżenia w ramach żadnego stałego czynnika, podczas gdy rozluźnienie ograniczenia pojedynczej wizyty wydaje się przybliżać w ramach współczynnika 2 (nawet jeśli nie jest metryczny ). O ile mi coś nie umknie, za pomocą standardowych argumentów możesz najpierw zbudować drzewo rozpinające o minimalnym rozmiarze (na przykład koszt), a następnie odwiedź to drzewo za pomocą techniki euler tour. Oczywiście całkowity koszt wycieczki jest wtedy (dwa razy na każdej krawędzi). Przeciwnie, jeśli istniała wycieczka o koszcie mniejszym niż, to ta trasa może być wykorzystana do ustalenia MST kosztu mniejszego niż , co jest sprzecznością.
Biorąc pod uwagę każdą trasę z powtórzeniami, możesz wymyślić krótszą trasę, która nie powtórzy żadnego miasta. Rozważmy na przykład prezentację formularza
Może to być najkrótsza droga do przechodzi przez , ale jest to już zamknięte w krawędzi . Możesz wymyślić wzmiankę o nie jako „przechodzenie” ale raczej „zatrzymanie się” . Musisz tylko zatrzymać się na raz, choć możesz przejść kilka razy.
Rzeczywiste algorytmy dla TSP mogłyby mieć ten etap „przyjmowania skrótów”, na przykład algorytm Christofidesa. Zobacz na przykład ten opis lub to krótsze konto .
Nie ma na to ogólnej odpowiedzi, z wyjątkiem „ludzie nie są głupi”. Zastosują rozwiązanie odpowiednie do ich sytuacji. Rzadko ludzie są zainteresowani samym problemem sprzedawcy w podróży. W klasycznym przypadku, sprzedawca z prawdziwego świata byłby bardziej zainteresowany problemem maksymalizacji dochodów w danym okresie w ramach określonego zestawu ograniczeń. W tym przypadku problemu całkowity przebyty dystans jest tylko jednym z wielu różnych czynników, które wpływają na znalezienie optymalnej odpowiedzi.
Jeśli dozwolone są powtórzenia, po prostu przejrzyj wszystkie połączenia X -> A -> Y, a jeśli jest on krótszy niż X -> Y, to zamień długość X -> Y na długość X -> A -> Y i rozwiązuj powstały problem za pomocą standardowego algorytmu. Myślę, że musisz powtarzać proces wymiany, dopóki nie zostaną wprowadzone żadne zmiany, ponieważ jeśli znajdziesz krótsze połączenie X -> Y, może to oznaczać, że teraz X -> Y -> Z jest krótszy niż X -> Y.
Śledź, które połączenia zostały zmienione, przejrzyj połączenia w rozwiązaniu, a jeśli rozwiązanie zawiera X -> Y, zamień to na X -> A -> Y.
PS. Myślę, że mój pomysł jest świetny, ale w tej chwili nie jestem pewien, czy jest poprawny. Ponieważ X -> A -> Y zamiast X -> Y to nie tylko skrót, obejmuje także miasto A.