TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TP HỒ CHÍ MINH
KHOA KHOA HỌC MÁY TÍNH
BÁO CÁO ĐỀ TÀI MÔN TOÁN CHO MÁY TÍNH
Đề tài : PHÂN TÍCH VÀ THIẾT KẾ THUẬT GIẢI CHO BÀI
TOÁN “NGƯỜI DU LỊCH”
GV: PGS. TS Nguyễn Phi Khứ
HV: Dương Thị Xuân Thoại
Mã số: CH1301061
TP Hồ Chí Minh, 2013
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TP HỒ CHÍ MINH
KHOA KHOA HỌC MÁY TÍNH
Đề tài : PHÂN TÍCH VÀ THIẾT KẾ THUẬT GIẢI CHO BÀI TOÁN
“NGƯỜI DU LỊCH”
GV: PGS. TS Nguyễn Phi Khứ
HV: Dương Thị Xuân Thoại
Mã số: CH1301061
TP Hồ Chí Minh, 2013
Mục Lục
1. Giới thiệu bài toán 1
2. Lịch sử bài toán TSP 1
3. Mô tả bài toán TSP 3
4. Phân loại bài toán 3
Đối xứng và bất đối xứng 3
Với khoảng cách là metric 3
Với khoảng cách không là metric 4
5. Các giải thuật giải bài toán TSP 4
Các giải thuật để tìm lời giải chính xác 4
Heuristic và các giải thuật xấp xỉ 5
6. Thuật giải Heuristic 7
7. Ứng dụng nguyên lý Greedy vào giải bài toán TSP 7
8. Đánh giá thuật giải Heuristic của thuật toán 9
9. Một số ví dụ minh hoạ 11
Mục lục hình
Hình 1 – Mô hình đồ thị của bài toán TSP 3
Hình 2 – Mô hình ban đầu 8
Hình 3 – Mô hình các bước chọn lựa đường đi 9
Hình 4 – Ví dụ 1 12
Hình 5 – Ví dụ 2 12
Hình 6 – Ví dụ 3 13
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 1
1. Giới thiệu bài toán
i du lch (Travelling Salesman problem (TSP)) là mt bài toán khá ni
ti vc t hc nghiên cu trong lý thuyt khoa hc máy tính. Ni
dung ca c phát bit danh sách các thành ph và
khong cách gia chúng , nhim v là phn nht có th mà ch i
thành ph n.
c lt v toán hm 1930 và là mt
trong s nhc nghiên cc t hp thc
s dt s c tm chí bài toán là
thuc lp NP khó , mng rt l thc tìm kim c th c
bin vì vy mng hp ca bài toán vi khong chc nghìn thành ph c
gii quyt.
TSP có mt vài ng dng thm chí trong dng thc nguyên thu cp k
hoch , logistic , và sn xut các microchip. t hit bài
toán con trong rt nhic phân tích gen trong sinh hc. Trong nhng ng
dng này, khái nim thành ph có th m hàn trên bng
mch, các mnh DNA trong gen, và khái nim khong cách có th biu din bi thi gian du
lch hay giá thành , hay gi so sánh gia các mnh DNA vi nhau. Trong nhiu
ng dng, các hn ch truyn thi hn tài nguyên hay gii hn thi gian thm chí
còn làm cho bài toán tr
Trong lý thuyt c phc tp tính toán, phiên bn quynh ca bài toán TSP
thuc lp NP-complete . Vì vy không có gai thut hiu qu nào cho vic gii bài toán TSP.
Hay nói cách khác , gii gian chy ti nht cho bt ký gii thut nào cho bài toán
i s ng thành ph, vì vy thm chí nhing hp vi vài
gii mt cách chính xác.
2. Lịch sử bài toán TSP
Ngun gc ci du ln nay vàng. Mt cun sách cho
i du lch t cp ti v và bao gm vài ví d v c
qua Thy s a đựng ý nghĩa toán học nào
Vấn đề toán học liên quan tới bài i du lc nhn trong nhng
800 bi nhà toán hc ireland W. R. Hamilton và nhà toán hi Anh Thomas
Kirkman. Trò chIcosian Game ca Hamilton là m vui d tìm chu trình
Hamilton. Dng tng quát cc nghiên c bi các nhà toán hc sut nhng
i hKarl Menger ng
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 2
xét gii thut brute-force và quan sát thy tính không ta heuristic da trên láng ging
gn nht.
Hassler Whitney i hc Princeton University là ngu i du
lch cho bài toán .
Trong nh nên ngày càng ph bin trong khoa hc
châu Âu và M. Nhc k George Dantzig, Delbert
Ray Fulkerson và Selmer M. Johnson ti RAND Corporation Santa Monica, nhi
nguyên tuyn tính và phát tric ct cho li
gii ca nó. Vi nhc mi này h c mt thí d ca bài toán vi 49
thành ph xây dng mt cách tng minh rn
a. Trong nhng thp k tic nghiên cu bi rt nhiu nhà nghiên
c t toán hc , khoa hc máy tính , hóa hc ,vt lý và nhng khoa hc khác.
Richard M. Karp ch ra rng bài toán chu trình Hamiltonian thuc lp NP-
complete ra tính NP khó (NP-hardness ) cu này gii thích
mt cách khoa h phc tp tính toán ca vic tìm li gii t
Nhiu thành tc trong sut nhi thp k 1970 và 1980, khi
Grötschel, Padberg, Rinaldi và nhi khác c gng gii mt cách chính xác mt th
hin ca bài toán vi 2392 thành ph, s dc ct và branch-and-bound.
Trong nh Applegate, Bixby, Chvátal
trình Concorde c s dng nhiu trong vic gin nay .
t tp các th hin ca
bài toán TSP vi nhi c s dng bi nhiu nhóm nghiên cu
so sánh kt quc dài ti
i th hin ca bài toán TSP lên ti 33,810 thành ph c ly ra t bài
toán xây dng layout cho microchip, cho ti nay vn là th hin ln nht trong các th hin
TSPLIB .Nhiu th hin khác vi hàng triu thành ph , li gic có th chng minh
nm sai khác 1% so vi li gii t
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 3
3. Mô tả bài toán TSP
Hình 1 – Mô hình đồ thị của bài toán TSP
TSP có th th nh c th ng vi các
thành ph và các cng vng ni gia các thành ph, chiu dài ca mt
cng vi khoang cách gia 2 thành ph. Mt
th và mt li gii ta bài toán là chu trình Hamilton ngn
nht.
th th , vì vy mi cp cc ni bi các cnh.
n hóa bài toán vì vic tìm chu trình Hamilton trong m th là
d. Các bài toán mà không phi 2 thành ph c ni vi nhau có th c chuyn
th bng cách thêm nhng c dài ln gia cách thành ph này ,
nhng cnh s không xut hin trong chu trình t
4. Phân loại bài toán
Đối xứng và bất đối xứng
i xng khong cách gia các thành ph o ng, vì vy
th biu din th ng. S i xng này làm gim 1 na s li gii có th.
Trong bài toán bi xng , khong cách t thành ph n thành ph khác không nht
thit phi bng khoc li, thm chí có th không có kt ni theo
chic li. Vì vy graph biu din bài toán bi x th ng. Ly ví d
ng mt chiu trong giao thông chng hn.
Với khoảng cách là metric
Trong bài toán metric TSP khong cách gia các thành ph phi thu kin ca bt
ng thu này có th phát biu bng ni trc tip t n B không
bao gi A ti B mà qua C trung gian
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 4
Nhng chiu dài ct metric trong tnh . Khi các thành ph
m trên tm hình, nhiu hàm khong cách t nhiên là các metric ví
d
Trong bài toán Euclidian TSP khong cách gia 2 thành ph là khong cách Euclide
ging.
Trong bài toán Rectilinear TSP khong cách gia 2 thành ph là tng hai t x và
y ca chúng. c gi là khong cách Manhattan hay city-block
metric.
Trong maximum metric, khong cách gia 2 thành ph là max c chênh lêch ta
x và y ca chúng.
Hai metric cui xut hin trong ving mp các h trong mch in.
ng tnh t th nht ri ti t kia, vì vy thi
gian di chuyn ti mm mi là tng c ng di chuyng
vi mày mà chnh c 2 t cùng 1 lúc vì vy th di chuyn ti mm mi
quynh bi di chuy
Với khoảng cách không là metric
Khong cách không tha mãn bng thc tam giác phát sinh trong nhinh
tuyn. Ví d trong mt kiu vn tch bng máy bay có th c dù
khong cách di chuy
5. Các giải thuật giải bài toán TSP
Các giải thuật để tìm lời giải chính xác
Li gii trc tip nht có th là th tt c các hoán v và xem hoán v nào là tt nht ( dùng
brute-force) . Thi gian chy cho cách tip cn này là O(n!), vì vy cách tip cn này thm
chí không th thc hin vi ch 20 thành ph .Mt trong s nhng ng dng mt
ca quy hong là gii thu phc tp O(n
2
2
n
) và yêu cu không gian b nh là
Ci thin t cho cách gii thut trên là h. Ví d, thm chí là rt khó tìm
mt gii thut chính xác cho bài toán TSP ch phc tp O(1.9999
n
)
.
Nhng cách tip cn khác bao gm
Rt nhiu gii thut branch-and-bound, có th s d gii các bài toán TSP vi
khong 40-60 thành ph.
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 5
Các gii thut ci thin dn dn s dng k thut ghi nh li ca linear programming.
Có th làm vic tt cho khong 200 thành ph.
Thc hin branch-and-bound và cut cho các bài toán c th c s
d gii quyt các bài toán vi s ng ln thành ph. Cách tip c
gi k lc hin ti gii quyc bài toán TSP vi 85,900 thành ph.
Li gii chính xác cho bài toán vi 15,112 thành ph c t TSPLIB
2001 s dc lát c xut bi George Dantzig, Ray Fulkerson, và Selmer
Johnson 1954, da trên linear programming. c thc hin
trong mng máy tính gm 110 b vi x lý ti hc Rice University và Princeton
University. Tng thi 22.6 lý
t 500 MHz. Vào tháng 5-2004, i du lt c 24,978 thành ph
thc gii quyng ngn nht vào khong 72,500 kilomet c
tìm thc chng minh rn
Vào tháng 3- 2005, i du lch vi 33,810 m trong 1 mc gii
quyt s dung công c Concorde TSP Solver: ng t
c tìm thc chng khi lng tính
toán mt khong 15.7 CPU (Cook et al. 2006). 2006 mt bài toán vi
85,900 c gii quyt bi Concorde TSP Solver, và mt khong 136
CPU .
Heuristic và các giải thuật xấp xỉ
Rt nhiu heuristics và gii thut xp x, có th i gii t
xut. c hii có th tìm li gii cho bài toán cc ln (hàng triu thành
ph) trong khong thi gian chp nhc vi li gii xp x ch khác 2-3% so vi li gii
t
Mt vài kic tìm ra.
Heuristics xây dựng
Gii thut láng ging gn nht nearest neighbour (NN) (hay còn gi là gii thut tham lam
greedy algorithm) i du lch chn thành ph gn nhn di
chuyn tip theo. Gii thun và hiu qu . Cho
khong N thành ph phân b ngu nhiêu trên mt phng trung bình gii thui
gii có chiu dài xp x 1.25 * ln chiu dài c
Tuy nhiên, có nhiu cách sp xc bit các thành ph làm cho gii thu
i t nht (Gutin, Yeo, and Zverovich, 2002). bài toán TSP
i xng và bi xng (Gutin and Yeo, 2007).
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 6
Gt heuristic mMatch Twice and Stitch (MTS) (Kahng, Reda 2004.
MTS y tính hiu qu n so vi nhng heuristic xây dng hin ti . MTS
thc hin hai ln khp tun t , mà ln khp th c thc hin sau khi xóa tt c các cnh
ca ln khp th nh a ra tp tt c
i cùng
Cải tiến từng bước
Chuyển cặp, hay heuristic Lin-Kernighan.
K thut chuyn cp hay '2-opt' bao gm vic lp li vic xóa 2 cnh và thay chúng bng hai
cnh khác nn to bi cnh b xóa tng di ngng hc
bit cc k-opt.
k-opt heuristic
Ly mng l
nhng mnh còn l không có hai mng i vi nhau (không nm
u cui ca 2 mnh vi nhau s t. n
t nhiu. Mu cui có th c ni
ti 2k 2 m khác có th: trong s 2k tng s u cui có th, tr ra u
cui ca m n hóa 2k thành ph TSP có th gii s dng
tìm t hp tt nht ca các mu. K thut k-opt ng hp riêng
ca k thuât V-opt hay variable-opt . K thut ph bin ca k-opt là 3-opt, c gii thiu
bi Shen Lin ca Bell Labs 1965. Có mng hc bit ca 3-opt khi mà
cách cnh là có th không nht thim chung (hai trong s các cnh k vi
nhau). Trong thc t, có th c nhng phát tri ca k thut 2-opt không
nht thit phi s dng 3-opt bgn cách gii hn 3-changes n hp riêng vi hai
ci vi nhau. K thuc gi là 2.5-opt nm gia 2-opt và 3-opt, hiu
theo c a chng li gic và th c li gii.
V'-opt heuristic
K thut variable-opt method gi, tông quát hóa ca k-opt k thut.
Trong khi k thut k-opt t s long c nh (k) cnh t u k thut
variable-opt t s ng cnh c nh. Thay vì vy nó phát trin tp này khi
quá trình tìm kim tip tc. c ni tic Lin-
Kernighan . Shen Lin và Brian Kernighan lu tiên c ca h
y nhát cho vic gii du lch trong sut hai thp
k . Nhng k thut tiên tic phát trin ti Bell Labs cui nh1980 bi
David Johnson i nghiên cu ca ông. Nhc gi là
Lin-Kernighan-Johnson xây dc Lin-Kernighan , ng t tabu
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 7
search và evolutionary computing. K thu Lin-Kernighan technique mang li kt qu
m bo ít nht là bn so vi 3-opt. c Lin-Kernighan-Johnson tính mt
Lin-Kernighan , t bin (xóa ít nht 4 cnh
và ni lc v-opt i ). t
bi di chuyi cc b local minimum ). K
thut V-t trong s nhng heuristic mnh cho bài toán và có th gii
quyng hc bing bài toán TSP
không phi metric mà nhng heuristic khác không gii quyc.
6. Thuật giải Heuristic
7. Ứng dụng nguyên lý Greedy vào giải bài toán TSP
Phát biu li bài toán: Hãy tìm mt hành trình i du lch qua n m (thành
ph) khác nhau, mi m qua mt ln và tr v m xut phát sao cho tng chiu dài
n ng cn là ngn nht. Gi s rng có ng ni trc tip t gia hai m
(thành ph) bt k.
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 8
Bài toán này có th c mô hình hoá nh mt th vô ng có trng s, trong
mi thành ph là mt nh ca th còn ng gia các thành ph là các cnh ni.
Khong cách gia hai thành ph là dài cnh. là vn cc tiu hoá vi m u và
m cui là cùng mt nh sau khi th ht các nh còn li mt ln. Mô hình này
ng là mt th y ( gia mi cp nh u có cnh). Nu không có ng gia hai
thành ph thì có th thêm mt cnh vi dài ln vào th mà không nh ng n
kt qu ti sau cùng.
Mt cách gii gin và ng cho kt qu t i tt là dùng mt thut gii
Heuristic ng dng nguyên lý Greedy. Ý ng ca thut gii là:
T m khi u, ta lit kê tt c quãng ng t m xut phát cho n n thành
ph ri chn ng ngn nht.
ã n mt thành ph, chn n thành ph k tip cng theo nguyên tc
trên. Ngha là lit kê tt c ng t thành ph ta ng n nhng thành ph ch
n. Chn con ng ngn nht. Lp li quá trình này cho n khi không còn thành ph
nào .
Bn có th quan sát hình sau thy c quá trình chn la. Theo nguyên lý
Greedy, ta ly tiêu chun hành trình ngn nht ca bài toán làm tiêu chun cho chn la cc
b. u mong mun, khi trên ng ngn nht thì cui cùng ta s có mt hành
trình ngn nht. u này không phi lúc nào cng úng. Vi u kin trong hình thì thut
gii cho ta mt hành trình có chiu dài là 14 trong khi hành trình ti u là 13. Kt qu ca
thut gii ng hp này ch lch v so vi kt qu ti u. Trong khi
ó, phc tp ca thut gii Heuristic này ch là O(n
2
).
Hình 2 – Mô hình ban đầu
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 9
Hình 3 – Mô hình các bước chọn lựa đường đi
Các c ca thut toán:
c 1: Chn mt nh bt u V.
c 2: T nh hin hành chn cnh ni có chiu dài nh nht n các nh ch
ving th. du ã ving th nh va chn.
c 3: Nu còn nh ch ving th thì quay li c 2.
c 4: Quay li nh V.
8. Đánh giá thuật giải Heuristic của thuật toán
Input: Ma trn nxn (n là s m (thành ph) cn qua)
Output: Chu trình ng ngn nht qua tt c các m (thành ph))
Basic operation:
-Duyt nh.
-So sánh tìm min các cnh ni nh hin ti và các nh ch qua.
Thut toán:
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 10
Mng 1 chii nh
Ki
For(i=0; i<n; i++) phc tp xu nht là n, tt nht
{ // là 1
If(v[i]==a)
Return true
}
Return false
Sau khi kinh, nng cách t nh hin tn
nh mnh xut phát. Khi to khong cách d=max.
For(int i=0; i<n; i++)
{
Ki
If(khong cách t
{
If(khong cách t n i < khong cách d)
{
nh min là i;
Cp nht khong cách nh nht d= khong cách t n i;
}
}
}
phc tp xu nht c
2
.
Tìm chu trình Hamilton xut phát t nh c và xut ra hành trình c
e=x;
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 11
v[0]=x;
for(int i=1;i<n;i++)
{
nh có khong cách nh nht t nh k tip
v[i]=next
e=next
}
v[n]=x;
Ta có chu trình t t c nh c th và tr v x.
m: Thut toán Heuristic cho bài toán i du lch có phc tp O(n
2
) tt
h rt nhiu so vi thut toán ti (có phc tp O(n!)).
c m: thut gii có nhng hn ch, ch cho ra li gii chính xác.
Kt lun: Thut gii Heuristic cho bài toán i du lch tuy ch ra c li
gii chính xác cho bài toán, nh nó cho ra mt li gii có th chp nhn c vi phc
tp thp h nhiu so vi thut toán ti u.
9. Một số ví dụ minh hoạ
Ch trình vit bng ngôn ng C# 2005. Ch trình s c th (ma trn) t file
Graph.txt và xut ra kt qu. th nhp vào phi là th y nu không phi thì không
xut ra chu trình Hamilton. Ngc li, thì xut ra chu trình Hamilton.
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 12
Hình 4 – Ví dụ 1
Hình 5 – Ví dụ 2
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 13
Hình 6 – Ví dụ 3
MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 14
Tài Liệu Tham Khảo:
- Thut gii heuristic, tác gi: m
- vi.wikipedia.org/wiki/Đường_đi_Hamilton
- So sánh các gii thut song song metaheuristic trong vic gii các bài toán TSP
- Giáo trình Lý thuyt th, tác gi: Nguyn Thanh Hùng, Nguyn c Ngha
- vi.wikipedia.org/wiki/Bài_toán_i_bán_hàng
- en.wikipedia.org/wiki/Travelling_salesman_problem
- Heuristics for the Traveling Salesman Problem _ Christian Nilsson,
University ,
- Fast A* Heuristics for Solving the Travelling Salesman Problem