Szczególne przypadki komiwojażera

Data ostatniej modyfikacji:
2011-07-1
Autor: 
Krzysztof Omiljanowski
pracownik IM UWr
Dział matematyki: 
kombinatoryka
Poziom edukacyjny: 
gimnazjum
szkoła średnia z maturą
szkoła profilowana zawodowa
szkoła wyższa

    Wędrówki po siedmiokącie foremnym






Jest wiele sposobów obejścia wszystkich punktów A1, A2, ... A7.
Interesować nas będą drogi, czyli takie wędrówki, w których chodzimy od wierzchołka do wierzchołka i każdy z nich odwiedzamy dokładnie raz, np. A1A3A2A5A7A4A6.
Rozważać będziemy też cykle, czyli drogi obchodzące wszystkie wierzchołki i zakończone powrotem do punktu wyjścia, np. A1A4A2A6A3A7A5A1.

Nietrudno zgadnąć, że startując z A1, mamy dwie najkrótsze drogi: A1A2A3A4A5A6A7 oraz A1A7A6A5A4A3A2. Są rzeczywiście najkrótsze, bo wędrujemy po najkrótszych odcinkach łączących wierzchołki siedmiokąta foremnego.

Tak samo jest z najkrótszymi cyklami (patrz obok).

Pokazana na rysunku jest faktycznie najdłuższa, bo wędrówka odbywa się tylko po najdłuższych przekątnych siedmiokąta foremnego.
Jest jeszcze jedna najdłuższa droga z A1. Jaka?

Podobnie jest z najdłuższymi cyklami (patrz obok).

 

    Wędrówki pomiędzy 10 punktami na prostej

Na prostej rozważamy 10 punktów leżących tak, jak na rysunku poniżej. Umawiamy się, że w czasie wędrówki chodzimy od punktu do punktu, ignorując pozostałe, tzn. np. w pewnym etapie - kroku, idąc od A5 do A7 przechodzimy obok A6, nie zauważając go. Aby na obrazku trasa była cały czas widoczna, rysujemy każdy etap nieco wyżej od poprzednich. To przejście wyżej jest tylko konwencją rysunku, nie liczy się do długości wędrówki.

 
                   
                   
                   

Pokazane obok: nie są ani najdłuższe, ani najkrótsze.

Nietrudno zgadnąć, że jest A1A2A3A4A5A6A7A8A9A10 oraz A10A9A8A7A6A5A4A3A2A1.

Pokazany obok jest jednym z wielu. Oto przykłady innych najkrótszych cykli: A1A2A3A5A6A8A10A9A7A4A1,   A3A1A2A5A8A10A9A7A6A4A3. Wszystkich najkrótszych cykli jest 2560 = 10 . 28.

Dużo trudniej jest znaleźć przykłady najdłuższych cykli. Jeden z nich pokazano powyżej . Jeszcze trudniej uzasadnić, że jest on faktycznie najdłuższy. Poniżej właśnie tym zajmiemy się dokładniej.

Obserwacja 1
W dowolnym cyklu ponad środkiem odcinka A6A7 możemy przechodzić z lewa na prawo i z prawa na lewo; przy czym:
- z lewa na prawo przechodzimy nie więcej niż 6 razy, bo tyle jest co najwyżej punktów wyjścia,
- z lewa na prawo przechodzimy nie więcej niż 4 razy, bo tyle jest co najwyżej punktów dojścia,
- z prawa na lewo przechodzimy nie więcej niż 4 razy, bo tyle jest co najwyżej punktów wyjścia,
- z prawa na lewo przechodzimy nie więcej niż 6 razy, bo tyle jest co najwyżej punktów dojścia.
Podsumowując, odcinek A6A7 możemy przechodzić co najwyżej 8 razy, przy czym nie więcej niż 4 razy z lewa na prawo i nie więcej niż 4 razy z prawa na lewo.

Obserwacja 1'
W dowolnym cyklu ponad środkiem odcinka AiAi+1 możemy przechodzić z lewa na prawo i z prawa na lewo (powiemy w_prawo_krok i w_lewo_krok), przy czym:
- w_prawo_kroków jest nie więcej niż i, bo jest co najwyżej i początków w_prawo_kroków,
- w_prawo_kroków jest nie więcej niż 10-i, bo jest co najwyżej tyle końców w_prawo_kroków,
- w_lewo_kroków jest nie więcej niż 10-i, bo jest co najwyżej tyle początków w_lewo_kroków,
- w_lewo_kroków jest nie więcej niż i, bo jest co najwyżej i końców w_lewo_kroków.
Podsumowując, odcinek AiAi+1 możemy przechodzić co najwyżej 2.min{i, 10-i} razy, przy czym nie więcej niż min{i, 10-i} razy z lewa na prawo i nie więcej niż min{i, 10-i} razy z prawa na lewo.

Obserwacja 2
Dowolny cykl ma długość nie większą niż
  2A1A2 + 4A2A3 + 6A3A4 + 8A4A5 + 10A5A6 + 8A6A7 + 6A7A8 + 4A8A9 + 2A9A10.

Zatem pokazany poprzednio (i obok) cykl, jest jednym z najdłuższych.

A jak wyglądają pozostałe najdłuższe cykle?

Obserwacja 3
W dowolnym cyklu, jeśli:
- któryś w_lewo_kroków lub w_prawo_kroków nie przechodzi nad środkiem odcinka A5A6, to cykl ten nie jest najdłuższy (jest krótszy od najdłuższych co najmniej o długość A5A6),
- w każdym w_lewo_kroku i w każdym w_prawo_kroku przechodzimy nad środkiem odcinka A5A6, to cykl ten jest najdłuższy.

Zatem wszystkie najdłuższe cykle wypiszemy, pisząc na przemian punkty z dwóch grup: {A1A2A3A4A5} i {A6A7A8A9A10}; innymi słowy, gdy w każdym kroku (i w_prawo_kroku, i w_lewo_kroku) przechodzić będziemy ponad środkiem odcinka A5A6. Tych najdłuższych cykli jest 2.(5!)2 = 28800.

Badanie najdłuższych dróg zaczniemy od banalnej uwagi.

Obserwacja 4
Dowolną drogę można przedłużyć do cyklu, dodając krok od ostatniego do pierwszego punktu drogi.

Obserwacja 5
Dowolna droga ma długość nie większą niż
  d = 2A1A2 + 4A2A3 + 6A3A4 + 8A4A5 + 9A5A6 + 8A6A7 + 6A7A8 + 4A8A9 + 2A9A10.

Jest tak faktycznie, bo przedłużając drogę, dostajemy (dłuższy) cykl. Jeśli ten cykl nie jest jednym z najdłuższych, to na podstawie Obserwacji 3 ma długość nie większą niż d. Jeśli jest jednym z najdłuższych, to w każdym kroku, więc i w tym kroku dodanym do drogi, przechodzi nad odcinkiem A5A6, więc długość drogi nie przekracza d.

Można już zatem opisać wszystkie najdłuższe drogi.

Obserwacja 6
Droga jest najdłuższa, gdy zaczyna się i kończy w zbiorze { A5, A6} i w każdym kroku (i w_prawo_kroku, i w_lewo_kroku) przechodzi nad środkiem odcinka A5A6.

Zatem pokazana poprzednio (i obok) droga, jest jedną z najdłuższych. Jest ich 2.(4!)2 = 1152.

Uwaga 7
Zauważmy, że wśród dróg od A1 do A10 najdłuższymi są te (i tylko te), w których w każdym kroku (i w_prawo_kroku, i w_lewo_kroku) przechodzi się nad środkiem odcinka A5A6, np. A1A6A2A7A3A8A4A9A5A10. Bowiem uzupełniając takie drogi w_lewo_krokiem A10A1, dostajemy najdłuższe cykle. Takich najdłuższych dróg jest (4!)2 = 576.

Uwaga 8
Powyższe rozważania łatwo można uogólnić na sytuację z dowolną parzystą liczbą punktów na prostej. (Szczegóły pomijamy.)

Uwaga 9
Badanie sytucji z nieparzystą liczbą punktów na prostej jest nieco trudniejsze. Zachęcamy do zbadania przypadku 9 punktów. (Szczegóły pomijamy.)
Podpowiedź 1. W pewnym sensie można zignorować środkowy punkt A5, dorzucając go jako 'przystanek' w pewnym w_lewo_kroku lub w_prawo_kroku.
Podpowiedź 2. Najtrudniejsze jest zbadanie najdłuższych dróg. Mają one długość
2A1A2 + 4A2A3 + 6A3A4 + 8A4A5 + 8A5A6 + 6A6A7 + 4A7A8 + 2A8A9 - min{A4A5,A5A6}

 

    Wędrówki po ośmiokącie foremnym





Badanie cykli i dróg wiodących przez wszystkie wierzchołki ośmiokąta foremnego wydaje się analogiczne do badań dla siedmiokąta foremnego. Tak jest faktycznie (patrz odpowiedzi obok) z wyjątkiem badania najdłuższych cykli. Skąd bierze się tu jakaś istotna zmiana? Poniżej spróbujemy to prześledzić.

Zacznijmy od najdłuższych dróg. Ta pokazana obok jest faktycznie jedną z najdłuższych, bo biegnie przez wszystkie 4 najdłuższe przekątne, a pozostałe 3 kroki są wzdłuż przekątnych o długościach największych wśród wszystkich pozostałych przekątnych.

Uzupełnienie tej drogi krokiem A8A1 daje cykl. NIE JEST TO NAJDŁUŻSZY CYKL.

DLACZEGO?

Można 'zmusić' komputer, by zbadał wszystkie 7! cykli startujących (i kończących się) w A1 i obliczał ich długości, wybierając wśród nich największe. Poniżej widać efekt. Cyklu z rysunku nie ma wśród najdłuższych.

147263851 -> długość = 15.086554390135441
147385261 -> długość = 15.086554390135441
148527361 -> długość = 15.086554390135441
152748361 -> długość = 15.086554390135443
158362741 -> długość = 15.086554390135441
162583741 -> długość = 15.086554390135443
163725841 -> długość = 15.086554390135441
163847251 -> długość = 15.086554390135441

Powyższe obliczenia nie odpowiadają na pytanie 'dlaczego', a jedynie na pytanie 'jak jest'. Od razu odnotujmy: NIE WIEM 'DLACZEGO?'.

Zadziwiające jest, że te najdłuższe cykle przechodzą tylko przez dwie najdłuższe przekątne ośmiokąta. Pomagając sobie komputerem, można sprawdzić, że dla 2n-kątów foremnych, dla n=3,4,5,6,7,8,9,10 też tak jest.

Obesrwacja komputerowa
Ustalmy n=3,4,5,6,7,8,9,10 i wierzchołki 2n-kąta foremnego. Wśród cykli obchodzących wierzchołki tego 2n-kąta foremnego jest 2n najdłuższych startujących z ustalonego wierzchołka. Wszystkie one biegną przez dwie najdłuższe przekątne, a pozostałe kroki mają długości równe drugiej co do długości przekątnej tego 2n-kąta.

Czy tak jest dla DOWOLNEGO n?

Potrafię uzasadnić następujące obserwacje.

Obserwacja 10.
Ustalmy n - dowolną liczbę naturalną większą niż 3 i wierzchołki 2n-kąta foremnego wpisanego w koło o promieniu 1. Nazwijmy kolejne wierzchołki kolejnymi liczbami naturalnymi 1, 2, 3, ..., 2n. Wtedy:
  a)  cykl 1(n+1)2(n+2)3(n+3)...n(n+n)1 ma długość 2n+(n-1).2cos(pi/(2n)) + 2sin(pi/(2n)),
  b)  2n+(n-1).2cos(pi/(2n)) + 2sin(pi/(2n))   <   2.2+(2n-2).2cos(pi/(2n)),
  c)  istnieje 2n cykli o długości   2.2+(2n-2).2cos(pi/(2n)),
  d)  cykle o krokach tylko dwóch długości: 2 i 2cos(pi/(2n)) mają dokładnie 2 kroki dlugości 2,
  e)  różnica między długościami najdłuższych cykli a cyklami takimi jak w c) maleje do zera wraz ze zrostem n.

Uzasadnienia a), b) i e) nie są zbyt pasjonujące. Są na tyle żmudne, że pomijamy tu szczegóły.
Uzasadnienie punktu c) nie jest trudne. Wystarczy kodować cykle jak na poniższych rysunkach.

        

Natomiast poniższy rysunek przedstawia strukturę połączeń wierzchołków 10-kąta foremnego. Odcinki pionowe reprezentują połączenia najdłuższe (wzdłuż najdłuższych przekątnych). Pozostałe linie reprezentują połączenia przekątnymi długości największej wśród pozostałych przekątnych. Za pomocą takiego schematu można (dość zawile) uzasadnić podpunkt d).

 

    A gdzie tu komiwojażer?

Nazwa 'problem komiwojażera' dotyczy zagadnienia znalezienia najkrótszej drogi (lub cyklu) wiodących przez zadane punkty (niekoniecznie przez punkty płaszczyzny). Jak widać, w powyższych kilku szczególnych sytuacjach udało się wskazać najkrótsze drogi i cykle.
Jednak w pełnej ogólności to zagadnienie wygląda na 'beznadziejne' - nie jest dotychczas znany efektywny algorytm wyznaczania takich dróg (efektywny, to mniej więcej znaczy tyle, co oszczędny, czyli taki, by jego działanie nie sprowadzało się do analizowania wszystkich n! możliwych dróg). Co więcej, są podejrzenia, że nie ma takiego algorytmu i nigdy nie będzie.

Może wydawać się że algorytm

'w każdym kroku idź do najbliższego nieodwiedzonego wcześniej punktu'
jest optymalny. Działa on poprawnie (tzn. daje najkrótszą drogę) w przypadku obchodzenie wierzchołków wielokąta foremnego, jednak ogólnie nie jest poprawny. Zobacz, jaką drogę uzyskamy w ten sposób, startując z A1.
Droga A1A3A4A5...A21A2 jest mniej więcej dwukrotnie dłuższa od drogi A1A2A3A4A5...A21.

Gdyby jednak istniał całkiem ogólny i szybki algorytm znajdowania najkrótszej drogi i najkrótszego cyklu, to niemal ten sam algorytm dawałby rozwiązanie zagadnienia szukania najdłuższej drogi i najdłuższego cyklu. Wynika to z następującej obserwacji.

Obserwacja 11
Ustalmy pewnien 'świat punktów' (Ai, di,j), tj. skończoną kolekcję punktów i odległości pomiędzy nimi (di,j oznacza odległość punktów Ai, Aj).
Niech M oznacza liczbę radykalnie większą od wszystkich liczb di,j (np. M = 4max{di,j} ). Rozważmy 'nowy świat punktów' (Ai, ei,j) złożony z tych samych punktów jednak z nowymi odległościami. Niech nową odległością różnych punktów Ai, Aj będzie liczba e i, j = M - di,j.
Wtedy najdłuższa droga w 'świecie' (Ai, di,j) jest najkrótszą drogą w 'świecie' (Ai, ei,j).
To samo dotyczy cykli.

Zilustrujemy, jak wyobrażać sobie 'nowy świat' punktów, na przykładzie, w którym 'stary świat', to 10 punktów na prostej.

Niech M = 4.d1,10 = 4.A1A10. Wyobraźmy sobie (bo trudno to narysować), że odcinek A1A10 jest grzbietem zeszytu, a na poszczególnych kartkach tego zeszytu narysowane są prostokąty. Kartek jest tyle, co różnych par punktów (czyli 45). Na kartce odpowiadającej parze A3A8 narysowany jest prostokąt o jednym z boków A3A8 i o obwodzie równym M. Na pozostałych kartkach jest analogicznie.
Teraz trzeba 'zapominać'. Zapomnijmy więc o wnętrzach prostokątów i o wszystkich odcinkach AiAj. Pozostaną tylko punkty A1, A2,...,A10 i części obwodów prostokątów. Właściwie 'nowy świat' jest już gotowy. Zobaczmy to na przykładzie. Od A3 do A8 można dojść po pozostałych, nieusuniętych odcinkach. Długość najkrótszej takiej trasy od A3 do A8 reprezentuje nową odległość tych punktów, liczbę e3,8.

Na koniec dodajmy: gdy nie jest znane rozwiązanie optymalne, trzeba zadowolić się rozwiązaniami 'w miarę dobrymi'. Matematyka próbuje dawać jakieś rozwiązania, o których wiadomo, że są 'w przybliżeniu dobre'. W takim sensie można odczytać rezultat sformułowany w Obserwacjach 10c) i 10e). Nie wiadomo, czy wskazane tam cykle są najdłuższe, ale jeśli nie są, to ich długości różnią się niewiele od optymalnych.
A może ktoś z Państwa znajdzie optymalne rozwiązanie?

Powrót na górę strony