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

18 385 1
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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 [...]... ) Kỹ thuật V-opt được xem như một trong số những heuristic mạnh cho bài toán và có thể giải quyết các trường hợp đặc biệt, như bài toán chu trình Hamilton và những bài toán TSP không phải metric mà những heuristic khác không giải quyết được 6 Thuật giải Heuristic Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán Nó thể hiện cách giải bài toán với các đặc tính sau: Thường tìm được lời giải. .. điểm: thuật giải có những hạn chế, chưa cho ra lời giải chính xác Kết luận: Thuật giải Heuristic cho bài toán người du lịch tuy chưa đưa ra được lời giải chính xác cho bài toán, nhưng 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ơn nhiều so với thuật toán tối ưu 9 Một số ví dụ minh hoạ Chương trình viết bằng ngôn ngữ C# 2005 Chương trình sẽ đọc đồ thị (ma trận) từ file Graph.txt và. .. tốt (nhưng không chắc là lời giải tốt nhất) Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người Có nhiều phương pháp để xây dựng một thuật giải Heuristic, trong đó người ta thường dựa vào một số nguyên lý cơ bản... bước của thuật giải 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 cho người du lịch đi qua n điểm (thành phố) khác nhau, mỗi điểm đi qua một lần và trở về điểm xuất phát sao cho tổng chiều dài đoạn đường cần đi là ngắn nhất Giả sử rằng có con đường nối trực tiếp từ giữa hai điểm (thành phố) bất kỳ Trang 7 MSHV: CH1301061_Dương Thị Xuân Thoại Bài toán này... từ đỉnh x cho trước và xuất ra hành trình cần đi: e=x; Trang 10 MSHV: CH1301061_Dương Thị Xuân Thoại v[0]=x; for(int i=1;i . 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. 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. 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ứ

Ngày đăng: 23/05/2015, 01:36

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan