TSP problem

advertisement
Problem komiwojażera
Problem trudny obliczeniowo:

Algorytmy dokładne (szukanie rozwiązania optymalnego może trwać dłużej)

Algorytmy przybliżone (heurystyki): szybkie, nie zawsze doprowadzają do
rozwiązania optymalnego.
Algorytm dokładny (z rodziny algorytmów podziału i ograniczeń, branch and bound)
(Little’a)
A
∞
1
4
5
2
A
B
C
D
E
B
2
∞
3
7
3
C
1
6
∞
4
5
D
3
5
8
∞
2
E
4
7
2
1
∞
Procedura A: Zredukować macierz – by w każdym wierszu i w każdej kolumnie było
przynajmniej jedno 0: odejmowanie od wierszy minimalnego elementu, a potem od kolumn
minimalnego elementu. Suma odjętych wartości jest wartością redukcji.
Procedura B (wyznaczenie elementu o maksymalnym żalu): wyznaczenie dla każdego
zerowego elementu macierzy sumę minimum z wiersza (poza danym elementem) i minimum z
kolumny (poza danym elementem), wyznaczenie elementu, dla którego ta suma jest
maksymalna.
1. bieżący wierzchołek macierz: macierz zredukowana: A(0) – szczyt drzewa, aktualne
ograniczenie: wartości redukcji, aktualna długość trasy: nieskończoność.
2. Wyznaczyć w bieżącym wierzchołku element o maksymalnym żalu
3. Narysować dwóch potomków bieżącego wierzchołka: jeden odpowiada trasom
zawierającym element o maksymalnym żalu, drugi – trasom nie zawierającym tego elementu
4. Dla pierwszego potomka: eliminujemy wiersz i kolumnę odpowiadajże wybranemu
elementowi, zabraniamy cykli, redukujemy macierz, dodajemy wartość redukcji do ograniczenia
rodzica, otrzymując ograniczenie potomka
5. Dla drugiego potomka: blokujemy zabronioną trasę, redukujemy macierz, dodajemy
wartość redukcji do ograniczenia rodzica, otrzymując ograniczenie potomka
6. Jeśli w którymś z niezamkniętym wierzchołków końcowych jest pełna trasa, zapisujemy
jej długość (aktualna długość trasy), jeśli jest mniejsza od aktualnej długości trasy i zamykamy ten
wierzchołek.
7. Jeśli istnieje wierzchołek końcowy niezamknięty, w którym ograniczenie jest niższe niż
aktualna długość trasy, wybieramy ten, w którym to ograniczenie jest najmniejsze. Wracamy do
kroku 3. W przeciwnym przypadku koniec.
Odp.
A0/8
BA
nBA
A1/8
AC
A2/12
nAC
DE
A3/8
CE
A5/13
nDE
A4/13
A5/15
A7/12
nCE
A6/14
BD
nBD
A9/12
EA
nEA
A10/1
A11/1
2
7
A12/15
A
∞
3
4
5
4
A
B
C
D
E
B
3
∞
2
2
1
C
4
2
∞
1
2
D
5
2
1
∞
3
E
4
1
2
3
∞
Heurystyki
1. Heurystyka najbliższego sąsiada
2. Najlepszego włączenia
3. Algorytm dwuoptymalny: tworzymy trasę, dla każdej pary łuków niesąsiadujących (i,k)
i (k,l) zastępujemy je łukami (i,l) i (k,l), aż otrzymamy lepszą trasę, na niej powtarzamy to samo.
Algorytmy genetyczne
1. Populacja (Adam i Ewa)
2. Określona pojemność planety, jeśli za dużo osobników, niektórzy giną
3. Rodzice mają potomków
4. Najczęściej słabsi giną, ale nie zawsze
5. mutacje
Potomkowie: część genów od jednego rodzica, część od drugiego
38
3: 0011
8: 0100
Potomkowie: miejsce krzyżowania 3:
0010 - 2
0101 – 9
Mutacja 0011 na m.3 - 0001
Dla komiwojażera: kod – dowolny ciąg o tylu elementach, ile jest punktów do
odwiedzenia, np. 23541
Kodowanie trasy 12345(1)
23541: 5
2354: 51
354: 511
54: 5112
5: 51121
Odkodowywanie 51121:
23451: 1
2345: 12
345: 123
54: 1234
5: 12345
Inne kodowania: trasa 12345
2
Z1
3
Z2
4
Z3
5
Z4
1
5
Dzieci pobierają zamiennie odcinki od jednego rodzica i drugiego, a jeśli to jest
niemożliwe, połączenie jest generowane losowo.
Download