53. Sformułować i porównać problemy znalezienia marszruty komiwojażera, cyklu Eulera i cyklu Hamiltona.
Drodzy Koledzy, Drogie Koleżanki ! W związku z tym, ze poprzednie pytanie dotyczyło marszruty komiwojażera pozwolicie...wicie...rozumide....że sobie SHIFT-INS coś... o tu....
Sformułowanie problemu marszruty komiwojażera:
Jeśli dany jest graf G, który jest niezorientowany ( czyli bez „szczalek” ), pełny ( czyli nie ma wolnych strzelców) i posiada koszty na swoich krawędziach, to problem marszruty'komiwojażera polega era taki ni znalezieniu drogi, któr3 odwiedzałaby wszystkie wierzchołki grafu i posiadała najmniejszy koszt. Ważne jest aby,w wyniku marszruty komiwojażera powstał cykl o początku i końcu w punkcie wyjścia. No ! Otóż pewni jesteśmy, że aby móc utworzyć trasę komiwojażera to włączając kolejne wierzchołki do trasy nie możemy powodować zamknięcia cyklu i nie możemy powodować, że stopień wierzchołka po włączeniu do cyklu ( stopień, czyli liczba kresek prz>' wierzchołku ) był >2 1 Są lo warunki jakie spełnić musimy tworząc trasę komiwojażera.
Dla rozwiązania tego problemu można się. posłużyć algorytmem heurystycznym lub algorytmem typu „sprawdź wszystkie możliwości”, ( który' zaprezentowany został w pytaniu 52 ).
Dziękuję.
Sformułowanie problemu znajdowania cyklu Eulera:
Jeśli dany jest graf G, niezorientowany (jak wyżej ) i pełny, to problem znalezienia cyklu Eulera to po prosru problem znalezienia cyklu, który odwiedza wszystkie wierzchołki i przechodzi przez wszystkie krawędzie grafu, ale tylko jeden raz przez jedną krawędź. Warunkiem istnienia oczywiście pełnego cyklu jest jego stan i koniec w tym samym wierzchołku. Aby tworzyć cykl Eulera graf na którym pracujemy niusi posiadać wierzchołki o stopniach parzystych, większych od 0. Jest to warunek konieczny i wystarczający do tego ab)' dany graf mógi zostać opisany cyklem Eulera. Istnieją algorytmy o czasie 0(cj. gdzie „e” to Ib. krawędzi w grafie, tworzące cykl Eulera.
Dla rozwiązania tego problemu można się posłużyć algorytmem który zostanie zaprezentowany za momencik
Sformułowanie problemu znajdowania cyklu Hamiltona:
Jeśli dany jest graf G. niezorientowany (jak wyżej ) i pełny to problem znalezienia cyklu Hamiltona to pc prostu problem znalezienia cyklu, który odwiedza wszystkie wierzchołki’ grafu. Ważne jest aby cyk zaczynał sic i kończył w- tyrii samym 'wierzchołku i pi^cuiiodz.cnia cyklem Hamiltona przez gra:
każdy wierzchołek odwiedzany był tylko jeden raz. Nie można w jednoznaczny sposób powiedzieć jakie warunki musi spełniać graf aby dało się na jego podstawie utworzyć cykl Hamiltona. Dlatego też w celu uzyskania odpowiedzi należy’ po prostu przeprowadzić próbę utworzenia takiego cyklu. Jeśli ona się nic powiedzie to znaczyy żc na danym grafk: nic można utworzyć takiego cyklu. Co chyba oyio oczywiste. Alga rytm znajdowania cykli Eulera: (zaczerpnięty z: „alg - sir. danych = programy " - A*. Wirlh)
// Lim źr/oencji to inaczej lista krawędzi wychodzących z danego wierzchołka, jakby nie szio po ludzku... begi r.
< = 0;
: <=e;
= dowolny wierzchołek grafu;
STOS <*v; while STOSOO do
v:ss:ciyz(STCS) ( v jesz szczyzowy— ele-nenter. 5losu }; iż inc f v] <>C then
u:= pierwszy wierzchołek listy inc[v); stos" <= u;
u Z.CZ1 ! !
Cegc
(usuwanie krawędzi (u, v) z grafu); inc(v}:=inc(vj-{u); inc;u):-inc(u)- (v VM ! ! Tak podaje nJLrth, a nie iłć
eise
zchołka szosu)
v <= STOS; (crzer.iesler.ie szczytowego wie; CI <= v { do szosu C£ }; end if; and while; end [p*zogram}
LLDZJZ ::: Próboudsra. I!" RaDCX "I!