Tải bản đầy đủ (.pdf) (18 trang)

Tiểu luận môn TOÁN CHO MÁY TÍNH PHÂN TÍCH VÀ THIẾT KẾ THUẬT GIẢI CHO BÀI TOÁN NGƯỜI DU LỊCH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (755.38 KB, 18 trang )




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 lch (Travelling Salesman problem (TSP)) là mt bài toán khá ni
ti vc t hc nghiên cu trong lý thuyt khoa hc máy tính. Ni
dung ca c phát bit danh sách các thành ph và
khong cách gia chúng , nhim v là phn nht có th mà ch i

thành ph n.
c lt v toán hm 1930 và là mt
trong s nhc nghiên cc t hp thc
s dt s c tm chí bài toán là
thuc lp NP khó , mng rt l thc tìm kim c th c
bin vì vy mng hp ca bài toán vi khong chc nghìn thành ph c
gii quyt.
TSP có mt vài ng dng thm chí trong dng thc nguyên thu cp k
hoch , logistic , và sn xut các microchip. t hit bài
toán con trong rt nhic phân tích gen trong sinh hc. Trong nhng ng
dng này, khái nim thành ph có th m hàn trên bng
mch, các mnh DNA trong gen, và khái nim khong cách có th biu din bi thi gian du
lch hay giá thành , hay gi so sánh gia các mnh DNA vi nhau. Trong nhiu
ng dng, các hn ch truyn thi hn tài nguyên hay gii hn thi gian thm chí
còn làm cho bài toán tr 
Trong lý thuyt c phc tp tính toán, phiên bn quynh ca bài toán TSP
thuc lp NP-complete . Vì vy không có gai thut hiu qu nào cho vic gii bài toán TSP.
Hay nói cách khác , gii gian chy ti nht cho bt ký gii thut nào cho bài toán
i s ng thành ph, vì vy thm chí nhing hp vi vài
  gii mt cách chính xác.
2. Lịch sử bài toán TSP
Ngun gc ci du ln nay vàng. Mt cun sách cho
i du lch t  cp ti v và bao gm vài ví d v  c
qua Thy 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 lc nhn trong nhng
800 bi nhà toán hc ireland W. R. Hamilton và nhà toán hi Anh Thomas
Kirkman. Trò chIcosian Game ca Hamilton là m vui d tìm chu trình
Hamilton. Dng tng quát cc nghiên c bi các nhà toán hc sut nhng
 i hKarl Menger ng
MSHV: CH1301061_Dương Thị Xuân Thoại


Trang 2

xét gii thut brute-force và quan sát thy tính không ta heuristic da trên láng ging
gn nht.
Hassler Whitney  i hc Princeton University là ngu i du
lch cho bài toán .
Trong nh nên ngày càng ph bin trong khoa hc
 châu Âu và M. Nhc k  George Dantzig, Delbert
Ray Fulkerson và Selmer M. Johnson ti RAND Corporation  Santa Monica, nhi
 nguyên tuyn tính và phát tric ct cho li
gii ca nó. Vi nhc mi này h c mt thí d ca bài toán vi 49
thành ph  xây dng mt cách tng minh rn
a. Trong nhng thp k tic nghiên cu bi rt nhiu nhà nghiên
c t toán hc , khoa hc máy tính , hóa hc ,vt lý và nhng khoa hc khác.
Richard M. Karp  ch ra rng bài toán chu trình Hamiltonian thuc lp NP-
complete ra tính NP khó (NP-hardness ) cu này gii thích
mt cách khoa h phc tp tính toán ca vic tìm li gii t
Nhiu thành tc trong sut nhi thp k 1970 và 1980, khi
Grötschel, Padberg, Rinaldi và nhi khác c gng gii mt cách chính xác mt th
hin ca bài toán vi 2392 thành ph, s dc ct và branch-and-bound.
Trong nh Applegate, Bixby, Chvátal
trình Concorde c s dng nhiu trong vic gin nay .
 t tp các th hin ca
bài toán TSP vi nhi c s dng bi nhiu nhóm nghiên cu
 so sánh kt quc  dài ti
i th hin ca bài toán TSP lên ti 33,810 thành ph c ly ra t bài
toán xây dng layout cho microchip, cho ti nay vn là th hin ln nht trong các th hin 
TSPLIB .Nhiu th hin khác vi hàng triu thành ph , li gic có th chng minh
nm sai khác 1% so vi li gii 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 vi các
thành ph và các cng vng ni gia các thành ph, chiu dài ca mt
cng vi khoang cách gia 2 thành ph. Mt
 th và mt li gii ta bài toán là chu trình Hamilton ngn
nht.
 th  th  , vì vy mi cp cc ni bi các cnh.
n hóa bài toán vì vic tìm chu trình Hamilton trong m th  là
d. Các bài toán mà không phi 2 thành ph c ni vi nhau có th c chuyn
 th  bng cách thêm nhng c dài ln gia cách thành ph này ,
nhng cnh s không xut hin trong chu trình t
4. Phân loại bài toán
 Đối xứng và bất đối xứng
i xng khong cách gia các thành ph o ng, vì vy
 th biu din  th ng. S i xng này làm gim 1 na s li gii có th.
Trong bài toán bi xng , khong cách t thành ph n thành ph khác không nht
thit phi bng khoc li, thm chí có th không có kt ni theo
chic li. Vì vy graph biu din bài toán bi x th ng. Ly ví d
ng mt chiu trong giao thông chng hn.
 Với khoảng cách là metric
Trong bài toán metric TSP khong cách gia các thành ph phi thu kin ca bt
ng thu này có th phát biu bng ni trc tip t n B không
bao gi  A ti B mà qua C trung gian


MSHV: CH1301061_Dương Thị Xuân Thoại

Trang 4

Nhng chiu dài ct metric trong tnh . Khi các thành ph
m trên tm hình, nhiu hàm khong cách t nhiên là các metric ví
d 
 Trong bài toán Euclidian TSP khong cách gia 2 thành ph là khong cách Euclide
ging.
 Trong bài toán Rectilinear TSP khong cách gia 2 thành ph là tng hai t x và
y ca chúng. c gi là khong cách Manhattan hay city-block
metric.
 Trong maximum metric, khong cách gia 2 thành ph là max c chênh lêch ta
 x và y ca chúng.
Hai metric cui xut hin trong ving mp các h trong mch in.
ng tnh t th nht ri ti t kia, vì vy thi
gian di chuyn ti mm mi là tng c ng di chuyng
vi mày mà chnh c 2 t cùng 1 lúc vì vy th di chuyn ti mm mi
quynh bi di chuy
 Với khoảng cách không là metric
Khong cách không tha mãn bng thc tam giác phát sinh trong nhinh
tuyn. Ví d trong mt kiu vn tch bng máy bay có th c dù
khong 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
Li gii trc tip nht có th là th tt c các hoán v và xem hoán v nào là tt nht ( dùng
brute-force) . Thi gian chy cho cách tip cn này là O(n!), vì vy cách tip cn này thm
chí không th thc hin vi ch 20 thành ph .Mt trong s nhng ng dng mt
ca quy hong là gii thu phc tp O(n
2

2
n
) và yêu cu không gian b nh là

Ci thin t cho cách gii thut trên là h. Ví d, thm chí là rt khó tìm
mt gii thut chính xác cho bài toán TSP ch phc tp O(1.9999
n
)
.

Nhng cách tip cn khác bao gm
 Rt nhiu gii thut branch-and-bound, có th s d gii các bài toán TSP vi
khong 40-60 thành ph.
MSHV: CH1301061_Dương Thị Xuân Thoại

Trang 5

 Các gii thut ci thin dn dn s dng k thut ghi nh li ca linear programming.
Có th làm vic tt cho khong 200 thành ph.
 Thc hin branch-and-bound và cut cho các bài toán c th c s
d gii quyt các bài toán vi s ng ln thành ph. Cách tip c
gi k lc hin ti gii quyc bài toán TSP vi 85,900 thành ph.
Li gii chính xác cho bài toán vi 15,112 thành ph  c t TSPLIB 
2001 s dc lát c xut bi George Dantzig, Ray Fulkerson, và Selmer
Johnson 1954, da trên linear programming. c thc hin
trong mng máy tính gm 110 b vi x lý ti hc Rice University và Princeton
University. Tng thi 22.6  lý
t 500 MHz. Vào tháng 5-2004, i du lt c 24,978 thành ph 
thc gii quyng ngn nht vào khong 72,500 kilomet c
tìm thc chng minh rn 

Vào tháng 3- 2005, i du lch vi 33,810 m trong 1 mc gii
quyt s dung công c Concorde TSP Solver: ng t 
c tìm thc chng khi lng tính
toán mt khong 15.7  CPU (Cook et al. 2006). 2006 mt bài toán vi
85,900 c gii quyt bi Concorde TSP Solver, và mt khong 136 
CPU .
 Heuristic và các giải thuật xấp xỉ
Rt nhiu heuristics và gii thut xp x, có th i gii t
xut. c hii có th tìm li gii cho bài toán cc ln (hàng triu thành
ph) trong khong thi gian chp nhc vi li gii xp x ch khác 2-3% so vi li gii
t
Mt vài kic tìm ra.
 Heuristics xây dựng
Gii thut láng ging gn nht nearest neighbour (NN) (hay còn gi là gii thut tham lam
greedy algorithm)  i du lch chn thành ph gn nhn di
chuyn tip theo. Gii thun và hiu qu . Cho
khong N thành ph phân b ngu nhiêu trên mt phng trung bình gii thui
gii có chiu dài xp x 1.25 * ln chiu dài c
Tuy nhiên, có nhiu cách sp xc bit các thành ph làm cho gii thu
i t nht (Gutin, Yeo, and Zverovich, 2002).  bài toán TSP
i xng và bi xng (Gutin and Yeo, 2007).
MSHV: CH1301061_Dương Thị Xuân Thoại

Trang 6

Gt heuristic mMatch Twice and Stitch (MTS) (Kahng, Reda 2004.
MTS y tính hiu qu n so vi nhng heuristic xây dng hin ti . MTS
thc hin hai ln khp tun t , mà ln khp th c thc hin sau khi xóa tt c các cnh
ca ln khp th nh a ra tp tt c 
i cùng

 Cải tiến từng bước
 Chuyển cặp, hay heuristic Lin-Kernighan.
K thut chuyn cp hay '2-opt' bao gm vic lp li vic xóa 2 cnh và thay chúng bng hai
cnh khác nn to bi cnh b xóa tng di ngng hc
bit cc k-opt.
 k-opt heuristic
Ly mng l
nhng mnh còn l không có hai mng i vi nhau (không nm
u cui ca 2 mnh vi nhau s t. n
t nhiu. Mu cui có th c ni
ti 2k  2 m khác có th: trong s 2k tng s u cui có th, tr ra u
cui ca m n hóa 2k thành ph TSP có th gii s dng
 tìm t hp tt nht ca các mu. K thut k-opt ng hp riêng
ca k thuât V-opt hay variable-opt . K thut ph bin ca k-opt là 3-opt, c gii thiu
bi Shen Lin ca Bell Labs  1965. Có mng hc bit ca 3-opt khi mà
cách cnh là có th không nht thim chung (hai trong s các cnh k vi
nhau). Trong thc t, có th c nhng phát tri ca k thut 2-opt không
nht thit phi s dng 3-opt bgn cách gii hn 3-changes n hp riêng vi hai
ci vi nhau. K thuc gi là 2.5-opt nm gia 2-opt và 3-opt, hiu
theo c a chng li gic và th c li gii.
 V'-opt heuristic
K thut variable-opt method gi,  tông quát hóa ca k-opt k thut.
Trong khi k thut k-opt t s long c nh (k) cnh t u k thut
variable-opt t s ng cnh c nh. Thay vì vy nó phát trin tp này khi
quá trình tìm kim tip tc. c ni tic Lin-
Kernighan . Shen Lin và Brian Kernighan lu tiên c ca h 
y nhát cho vic gii du lch trong sut hai thp
k . Nhng k thut tiên tic phát trin ti Bell Labs cui nh1980 bi
David Johnson i nghiên cu ca ông. Nhc gi là
Lin-Kernighan-Johnson xây dc 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 li kt qu
m bo ít nht là bn so vi 3-opt. c Lin-Kernighan-Johnson tính mt
Lin-Kernighan , t bin (xóa ít nht 4 cnh
và ni lc v-opt i ). t
bi  di chuyi cc b  local minimum ). K
thut V-t trong s nhng heuristic mnh cho bài toán và có th gii
quyng hc bing bài toán TSP
không phi metric mà nhng heuristic khác không gii quyc.
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 biu li bài toán: Hãy tìm mt hành trình i du lch  qua n m (thành
ph) khác nhau, mi m  qua mt ln và tr v m xut phát sao cho tng chiu dài
n ng cn  là ngn nht. Gi s rng có ng ni trc tip t gia hai m
(thành ph) bt 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 mt  th vô ng có trng s, trong 
mi thành ph là mt nh ca  th còn ng  gia các thành ph là các cnh ni.
Khong cách gia hai thành ph là  dài cnh.  là vn  cc tiu hoá vi m u và
m cui là cùng mt nh sau khi th ht các nh còn li  mt ln. Mô hình này
ng là mt  th y  ( gia mi cp nh u có cnh). Nu không có ng gia hai
thành ph thì có th thêm mt cnh vi  dài  ln vào  th mà không nh ng n
kt qu ti  sau cùng.
Mt cách gii  gin và ng cho kt qu t i tt là dùng mt thut gii
Heuristic ng dng nguyên lý Greedy. Ý ng ca thut gii là:
T m khi u, ta lit kê tt c quãng ng t m xut phát cho n n thành
ph ri chn  ng ngn nht.
ã  n mt thành ph, chn  n thành ph k tip cng theo nguyên tc
trên. Ngha là lit kê tt c ng t thành ph ta  ng n nhng thành ph ch
 n. Chn con ng ngn nht. Lp li quá trình này cho n khi không còn thành ph
nào  .
Bn có th quan sát hình sau  thy c quá trình chn la. Theo nguyên lý
Greedy, ta ly tiêu chun hành trình ngn nht ca bài toán làm tiêu chun cho chn la cc

b. u mong mun, khi  trên ng ngn nht thì cui cùng ta s có mt hành
trình ngn nht. u này không phi lúc nào cng úng. Vi u kin trong hình thì thut
gii cho ta mt hành trình có chiu dài là 14 trong khi hành trình ti u là 13. Kt qu ca
thut gii ng hp này ch lch  v so vi kt qu ti u. Trong khi
ó,  phc tp ca thut gii 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 ca thut toán:
c 1: Chn mt nh bt u V.
c 2: T nh hin hành chn cnh ni có chiu dài nh nht n các nh ch
ving th.  du ã ving th nh va chn.
c 3: Nu còn nh ch ving th thì quay li c 2.
c 4: Quay li nh V.
8. Đánh giá thuật giải Heuristic của thuật toán
Input: Ma trn nxn (n là s m (thành ph) cn  qua)
Output: Chu trình ng  ngn nht qua tt c các m (thành ph))
Basic operation:
-Duyt nh.
-So sánh tìm min các cnh ni nh hin ti và các nh ch  qua.
Thut toán:
MSHV: CH1301061_Dương Thị Xuân Thoại


Trang 10

Mng 1 chii nh
Ki
For(i=0; i<n; i++)  phc tp xu nht là n, tt nht
{ // là 1
If(v[i]==a)
Return true
}
Return false
Sau khi kinh, nng cách t nh hin tn
nh mnh xut phát. Khi to khong cách d=max.
For(int i=0; i<n; i++)
{
Ki
If(khong cách t 
{
If(khong cách t n i < khong cách d)
{
nh min là i;
Cp nht khong cách nh nht d= khong cách t n i;
}
}
}
 phc tp xu nht c
2
.
Tìm chu trình Hamilton xut phát t nh c và xut 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ó khong cách nh nht t nh k tip
v[i]=next
e=next
}
v[n]=x;
Ta có chu trình t t c nh c th và tr v x.
 m: Thut toán Heuristic cho bài toán i du lch có  phc tp O(n
2
) tt
h rt nhiu so vi thut toán ti  (có  phc tp O(n!)).
c m: thut gii có nhng hn ch, ch cho ra li gii chính xác.
Kt lun: Thut gii Heuristic cho bài toán i du lch tuy ch  ra c li
gii chính xác cho bài toán, nh nó cho ra mt li gii có th chp nhn c vi  phc
tp thp h nhiu so vi thut toán ti u.
9. Một số ví dụ minh hoạ
Ch trình vit bng ngôn ng C# 2005. Ch trình s c  th (ma trn) t file
Graph.txt và xut ra kt qu.  th nhp vào phi là  th y  nu không phi thì không
xut ra chu trình Hamilton. Ngc li, thì xut 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:
- Thut gii heuristic, tác gi: m
- vi.wikipedia.org/wiki/Đường_đi_Hamilton
- So sánh các gii thut song song metaheuristic trong vic gii các bài toán TSP
- Giáo trình Lý thuyt  th, tác gi: Nguyn Thanh Hùng, Nguyn c Ngha
- 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

×