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!