2 Grfy hmiltonowski, prolm komiwojr lgorytm optymlny
3 Grfy hmiltonowski Df. Cykl (rog) Hmilton jst to ykl (rog), w którym ky wirzhołk grfu wystpuj okłni rz. Grf jst hmiltonowski (półhmiltonowski), o il posi ykl (rog) Hmilton. Przykł Grf hmiltonowski Grf półhmiltonowski Grf ni jst ni hmiltonowski ni półhmiltonowski
4 Grfy hmiltonowski Tw. (Or, 19) Jli G jst grfm prostym o n 3 wirzhołkh i g(u) + g(v) n l kj pry nissinih wirzhołków u i v, to grf G jst hmiltonowski. Dowó: Złómy, istnij grf G o ponyh złonih l ni jst hmiltonowski. Momy złoy, G posi rog Hmilton v 1 v 2... v n orz {v 1,v n } E(G). St wynik, g(v 1 ) + g(v n ) n to oznz, istnij inks i tki, {v 1,v i } E(G) orz {v i-1, v n } E(G), o pokzno n rysunku. To prowzi o sprzznoi, gy v 1 v 2... v i-1 v n v n-1... v i v 1 jst yklm Hmilton. v 1 v 2 v 3 v i-1 v i v n-2 v n-1 v n
Grfy hmiltonowski Wniosk (Dir, 192) Jli G jst grfm prostym o n 3 wirzhołkh i g(u) n/2 l kgo wirzhołk v, to G jst hmiltonowski. Dowó: Wynik z poprznigo twirzni, gy g(u) + g(v) n l kj pry (równi nissinih) wirzhołków. Uwg Prolm polgjy n stwirzniu zy ny grf G jst hmiltonowski jst NP-zupłny. Oznz to, ni s znn fktywn (ziłj w zsi wilominowym) lgorytmy rozwizuj tn prolm. Ni jst równi znn twirzni poj wrunki konizn i osttzn n to, y G ył hmiltonowski.
Prolm komiwojr Dny jst ziór mist. Komiwojr h owizi wszystki mist (k okłni rz) i powrói o punktu wyji. Prolm polg n znlziniu njkrótszj trsy o tj włsnoi. Zfiniujmy powyszy prolm w jzyku torii grfów. Nih zi ny grf płny G. Zkłmy, z k krwzi i jst skojrzon jj wg (ługo) oznzn lj przz w i. Rozwiznim prolmu komiwojr jst tki ykl Hmilton, którgo sum wg krwzi jst minimln. Przykł 2 7 8 3 8 4 Σ = 2 9
7 Prolm komiwojr Uwgi prolm komiwojr jst NP-truny, o oznz, ni s znn lgorytmy o wilominowj złoonoi olizniowj rozwizuj tn prolm (przypuszzlni tki ni istnij) w prkty jstmy zmuszni posługiw si wilominowymi lgorytmmi przylionymi, tzn. tkimi, któr szyko znjuj rozwizni, któr jst w przyliniu równ optymlnmu Przykł Jnym z moliwyh lgorytmów okłnyh jst sprwzni wszystkih moliwyh ykli Hmilton i wyrni njkrótszgo. W tkigo poji jst to, liz ykli jst zyt u, gy l n-wirzhołkowgo grfu wynosi (n!)/2. St, jli ysponujmy komputrm sprwzjym milion prmutji n skun, to: n = 1 ilo ykli = (1!)/2 = 18144 zs oliz = 1.8 s n = 2 ilo ykli = (2!)/2 1 18 zs oliz 4 tys. lt
8 Histori prolmu komiwojr Gorg Dntzig, Ry Fulkrson i Slmr Johnson (194) zprzntowli optymln rozwizni prolmu komiwojr l 49 mrykskih mist.
9 Histori prolmu komiwojr Prg i Rinli (1987) olizyli optymln rozwizni l 32 punktów
7 Histori prolmu komiwojr Rozwizni ojmuj 1349 mist mrykskih, uzyskn w 1998 roku.
71 Prolm komiwojr lgorytm optymlny ni jst znny n wilominowy optymlny lgorytm l tgo prolmu i jst mło prwopoon, tki lgorytm w ogól istnij omówiony lj lgorytm polg n przszukiwniu łj przstrzni rozwiz pozs oliz n io uktulnin jst oln oszowni n ługo optymlnj trsy, ziki zmu wimy, któryh rozwiz ziowyh n pwno ni si rozszrzy n rozwizni optymln i z oliz mon pomin rozwmy przypk nio ogólnijszy, w którym ny jst n wjiu oiony grf skirowny
72 Drzwo przszukiw Df. Drzwo przszukiw finiujmy jko zkorznion rzwo, którgo ky wirzhołk opowi pwnmu poziorowi rozwiz. Poziory rozwiz opowij synom wzł wynikj z sposou poziłu zioru rozwiz oj. Uwg: Dl prolmu komiwojr przyjmujmy nstpuj post rzw przszukiw: ky wirzhołk opowi rozwizniom prolmu, któr zwirj pwn łuki i jnozni innyh wyrnyh łuków ni zwirj (np. pwnmu wirzhołkowi opowij optymln trsy zwirj łuki (,),(,h) orz ni zwirj łuków (,),(,) i (,) ) Ky wzł m wóh synów. Po wyrniu nowgo łuku, jn z synów opowi rozwizniom o ogrniznih nłoonyh w oju orz zwirjyh, ntomist rugi ni zwirjyh.
73 Oszowni oln Uwg: Pozs rlizji lgorytmu (tzn. pozs trwrsowni rzw przszukiw) pmitmy wrto njlpszgo znlziongo otyhzs rozwizni. Oznzmy j przz min_sol. Uwg: Z kym wirzhołkim v rzw przszukiw jst zwizn zminn LB. Jst to liz, któr stnowi oszowni oln n wrto kgo rozwizni nlgo o tgo wirzhołk. Wówzs: jli LB > min_sol, to wimy, ni wrto przszukiw porzw zkorzniongo w wirzhołku v, jli LB = min_sol, to porzwo y mo zwir rozwizni orównuj otyhzsowmu njlpszmu. Jli zni polg n wyznzniu owolngo rozwizni optymlngo, to ni przszukujmy porzw zkorzniongo w wirzhołku v jli LB < min_sol, to nly przszukiw porzwo zkorznion w v (y mo ni ł).
74 Rukj mirzy Lmt Jli M jst mirz ssiztw grfu G, to: o owolngo yklu Hmilton nly okłni jn lmnt z kgo wirsz M i okłni jn z kj kolumny jli o wszystkih lmntów w wyrnym wirszu (kolumni) ojmimy stł, to ługo kgo yklu Hmilton jst o mnijsz o ługoi tgo smgo yklu, lz prz ojim stłj jli o wirszy i kolumn wilokrotni ojmimy stł tk,y ky wirsz i kolumn zwirły o njmnij jno zro, to sum ojtyh liz stnowi oln oszowni optymlngo rozwizni. Df. Pros ojmowni stłyh o wirszy (kolumn) mirzy ssiztw nzywmy rukj. Wniosk Jli łuk (i,j) nly o optymlnj trsy komiwojr znlzionj n postwi zrukownj mirzy ssiztw, to (i,j) nly rowni o optymlnj trsy w wyjiowym grfi.
7 Algorytm rukji prour Ru( M ) gin r := ; for i := 1 to n o gin min_row := njmnijszy lmnt w i-tym wirszu; if ( min_row > ) thn gin ojmij min_row o kgo lmntu w wirszu i; r := r + min_row; n n; for i := 1 to n o gin min_ol := njmnijszy lmnt w i-tj kolumni; if ( min_ol > ) thn gin ojmij min_ol o kgo lmntu w wirszu i; r := r + min_ol; n n; rturn r; n Zminn: M mirz ssiztw rozmiru n r sum ojtyh wrtoi o wirszy i kolumn (jk wynik z poprznigo lmtu, jst to oln oszowni n ługo yklu w M)
7 Przykł rukji M = 24 13 42 11 33 19 28 1 44 41 2 28 31 3 42 1 21 18 3 28 14 11 31 1 9 8 11 13 2 r = 11 + + + 13 + 2 + 8 = 8 St, o wrtoi LB potomków wzł omy 8 18 3 28 14 11 23 2 1 8
77 Krytrium wyoru łuku prourfineg( M, r, ) gin mx := 1; for i := 1 to n o for j := 1 to n o if M[i,j] = thn gin min_r := wrto njmnijszgo lmntu w wirszu i z pominiim M[i,j]; min_ := wrto njmnijszgo lmntu w kolumni j z pominiim M[i,j]; if min_r + min_ > mx thn gin mx := min_r + min_; (r,) := (i,j); n n; rturn mx; n Zminn: M mirz ssiztw n rozmir M (r,) łuk o poziłu zioru rozwiz Uwg: Ay utworzy potomków w rzwi przszukiw, wyirmy tki łuk, który powouj njwikszy wzrost olngo oszowni w prwym porzwi. Wrto, o któr wzroni LB wyznzmy w zminnj mx.
78 Wyór łuku - przykł min_r+min_=+3=8 2+=2 Zrukow. M += = 18 3 28 14 11 23 2 1 1+11=12 +1=1 3+=8 o poziłu zioru rozwiz wyirmy łuk (,) lwy potomk opowi wszystkim rozwizniom (yklom) zwirjym łuk (,) prwy potomk zwir wszystki rozwizni z (,)
79 Tworzni lwgo syn 1. złómy, wyrno łuk (,) w lu utworzni potomków wirzhołk v, 2. lwy syn zwir wówzs ziór rozwiz o tyh smyh ogrniznih, o w przypku v orz otkowo zwirjyh łuk (,), 3. oznz to, momy zmnijszy rozmir mirzy ssiztw o 1 poprzz usunii -tgo wirsz i -tj kolumny, 4. koljn uproszzni mirzy polg n zlokowniu łuku (,) tzn. lmnt mirzy n prziiu -tgo wirsz i -tj kolumny przyjmuj wrto niskozono,. lokujmy równi łuk, który tworzy ykl wrz z łukmi onymi poprznio o rozwizni,. wrto LB wylizmy oj o wrtoi LB oj liz r wylizon w prourz Ru
8 Lwy syn - przykł Dl wzł wyjiowgo v (tutj korz rzw) LB(v)= Zrukow. M = 18 3 28 14 11 23 2 1 (usunii wirsz i kolumny ) 28 23 2 (zlokowni łuku (,)) Wrto oszowni olngo LB(v l ) l lwgo potomk wynosi ztm LB(v)+r = +8 23 2 (lokowni łuków tworzyh ykl z otyhzs wyrnymi ) 23 2
81 Tworzni prwgo syn 1. złómy, wyrno łuk (,) w lu utworzni potomków wirzhołk v, 2. prwy syn zwir wówzs ziór rozwiz o tyh smyh ogrniznih, o w przypku v orz otkowo ni zwirjyh łuku (,), 3. lokujmy wi łuk (,) poprzz wpisni wrtoi niskozono n prziiu -tgo wirsz i -tj kolumny w mirzy ssiztw 4. ni nstpuj zmnijszni rzu mirzy ssiztw w tym przypku. wrto LB wylizmy oj o wrtoi LB oj liz r wylizon w prourz Ru orz wrto wrto mx wylizon w prourz FinEg
82 Prwy syn - przykł Dl wzł wyjiowgo r (tutj korz rzw) LB(r)= Zrukow. M = 18 3 28 14 11 (zlokowni łuku (,)) 23 2 1 Wrto oszowni olngo LB(r p ) l prwgo potomk wynosi ztm LB(r) + r + mx = + 8 + 12 = 92 18 3 28 14 11 23 2 1
83 Wrunki ko rkurnji Przypk 1: wrto LB w wirzhołku v jst wiksz lu równ o njlpszgo znlziongo otyhzs rozwizni. Wówzs rzwo zkorznion w v ni jst przszukiwn. Przypk 2: M jst stopni 2. M on wówzs jn z wóh posti: + + M = lu M =. + + Ztm z wzglu n post mirzy ni m wyoru o o tgo jki łuki nly włzy o koowgo rozwizni. Jli kolumny opowij wirzhołkom w,x ntomist wirsz u,v to: jli M[u,w] =, to o yklu komiwojr nl łuki (u,w), (v,x) jli M[u,x] =, to o yklu komiwojr nl łuki (v,w), (u,x)
84 Algorytm prour TrvrsTr( M, C, LB ) gin r := Ru( M ); if LB + r < min_sol thn if C = n 2 thn gin ołz w łuki o C i uktulnij min_sol orz zpmitj now rozwizni jli jst lpsz o otyhzsowyh; n ls gin mx := FinEg( M,, ); TrvrsTr( M *, C {(,)}, LB + r ); if LB + r + mx < min_sol thn gin M[,] := +; TrvrsTr(M,C, LB + r ); M[r,] := ; n n; otwórz mirz M o posti sprz rukji; n Zminn: M mirz ssiztw C krwzi nl o yklu LB wrto olngo oszowni l ngo wzł M * powstj z M poprzz usunii -tgo wirsz, -tj kolumny i zlokowni łuku (,) i łuków tworzyh ykl z C {(,)} min_sol inijlni równ +
8 Przykł M = 9 22 23 42 13 21 24 29 14 31 28 3 29 3 38 34 2 LB= r = 3 mx=34 LB=3 r = 3 mx= LB=7 r = LB=3 r = mx=41 min_sol =7 (,) 1 19 18 19 (,) 2 1 29 21 LB+r+mx = 3+3+=7> min_sol=7 (,) 3++41 > min_sol LB=9 r = 34 mx=23 9 1 18 14 19 19 9+34 > min_sol 8 14 2 1 7 29 21 9+34+23> min_sol M mirz wyjiow (prz rukj), ntomist w wszystkih potomkh pokzno mirz po rukji
8 Złoono Czs ziłni proury Ru wynosi O(n 2 ) Czs ziłni proury FinEg wynosi O(n 3 ) Zpmitni i otworzni mirzy to oprj rzu O(n 2 ) Zpmitywni nowgo njlpszgo rozwizni w zsi O(n) Oznz to, rlizj lgorytmu TrvrsTr w ori jngo wzł wymg zsu O(n 3 ) Złoono łgo lgorytmu mon oszow ztm przz O(f(n)n 3 ), gzi f(n) jst liz wzłów rzw poszukiw owiznyh przz prour TrvrsTr. Liz wykonnyh oliz zly o konkrtnyh nyh wjiowyh i w psymistyznym przypku jst wykłniz.