Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic và phương thức tìm kiếm cụ thể đã được biết đến vì vậy một vài trường hợp của bài toán với khoảng chục nghìn thành
Trang 1TRƯỜ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
Trang 2
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
Trang 3Mụ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
Trang 4
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
Trang 5Trang 1
1 Giới thiệu bài toán
Bài toán người du lịch (Travelling Salesman problem (TSP)) là một bài toán khá nổi tiếng trong lĩnh vực tối ưu tổ hợp được nghiên cứu trong lý thuyết khoa học máy tính Nội dung của nó khá đơn giản , nó được phát biểu như sau : Cho một danh sách các thành phố và khoảng cách giữa chúng , nhiệm vụ là phải tìm đường đi ngắn nhất có thể mà chỉ thăm mỗi thành phố đúng 1 lần
Bài toán được lần đầu tiên đưa ra như một vấn đề toán học vào năm 1930 và là một trong số những bài toán được nghiên cứu chuyên sâu trong lĩnh vực tổ hợp thời đó Nó được
sử dụng như một sự đánh giá cho nhiều phương thức tối ưu khác nhau Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic và phương thức tìm kiếm cụ thể đã được biết đến vì vậy một vài trườ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ủa nó như lập kế hoạch , logistic , và sản xuất các microchip Thay đổi đi chút ít nó xuất hiện như một bài toán con trong rất nhiều lĩnh vực như việ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ể thay đổi thành khách hàng, các điể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ống như sự 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ống như giớ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ở nên khó hơn
Trong lý thuyết của độ phức tạp tính toán, phiên bản quyết đị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ống như thời gian chạy tồi nhất cho bất ký giải thuật nào cho bài toán TSP tăng theo hàm mũ với số lượng thành phố, vì vậy thậm chí nhiều trường hợp với vài trăm thành phố cũng đã mất vài năm CPU để giải một cách chính xác
2 Lịch sử bài toán TSP
Nguồn gốc của bài toán người du lịch đến nay vẫn chưa rõ ràng Một cuốn sách cho người du lịch từ năm 1832 đã đề cập tới vấn đề và bao gồm vài ví dụ về các đường đi từ Đức
qua Thụy sỹ nhưng không chứa đựng ý nghĩa toán học nào
Vấn đề toán học liên quan tới bài toán người du lịch đã được nhắc đến trong những
năm 1800 bởi nhà toán học ireland W R Hamilton và nhà toán học người Anh Thomas Kirkman Trò chơi Icosian Game của Hamilton là một trò đố vui dựa trên cơ sở tìm chu trình Hamilton Dạng tổng quát của bài toán TSP được nghiên cứ bởi các nhà toán học suốt những năm 1930 ở đại học Harvard, đáng chú ý là Karl Menger người đã định nghĩa bài toán, xem
Trang 6MSHV: 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ối ưu của heuristic dựa trên láng giếng gần nhất
Hassler Whitney ở đại học Princeton University là ngừời đầu tiên đặt tên người du
lịch cho bài toán không lâu sau đó
Trong những năm 1950 và 1960 , bài toán trở nên ngày càng phổ biến trong khoa học
ở châu Âu và Mỹ Những đóng góp đáng chú ý được kể đến như George Dantzig, Delbert Ray Fulkerson và Selmer M Johnson tại RAND Corporation ở Santa Monica, những người
đã trình bày bài toán như bài toán số nguyên tuyến tính và phát triển phương thức cắt cho lời giải của nó Với những phương thức mới này họ đã giải đượ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ối ưu và chứng minh rằng không còn đường đi nào ngắn hơn nữa Trong những thập kỷ tiếp theo, bài toán đượ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 năm 1972 chỉ ra rằng bài toán chu trình Hamiltonian thuộc lớp NP-complete, và qua đó chỉ ra tính NP khó (NP-hardness ) của bài toán TSP Điều này giải thích một cách khoa học cho độ phức tạp tính toán của việc tìm lời giải tối ưu cho bài toán
Nhiều thành tựu đã đạt được trong suốt những năm cuối thập kỷ 1970 và 1980, khi Grötschel, Padberg, Rinaldi và những ngườ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ụng phương thức cắt và branch-and-bound
Trong những năm 1990 Applegate, Bixby, Chvátal, và Cook đã phát triển chương
trình Concorde mà đã được sử dụng nhiều trong việc giải các bài toán TSP cho đến nay
Gerhard Reinelt đã công bố thư viện TSPLIB vào năm 1991, đó là một tập các thể hiện của bài toán TSP với nhiều độ khó khác nhau, và đã được sử dụng bởi nhiều nhóm nghiên cứu khác nhau để so sánh kết quả Năm 2005, Cook và những người khác đã tính được độ dài tối
ưu cho chu trình vớ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ải tìm được có thể chứng minh nằm sai khác 1% so với lời giải tối ưu
Trang 7Trang 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ể được mô hình như một đồ thị , các đỉnh của đồ thị tương ứng với các thành phố và các cạnh thì tương ứng với đường nối giữa các thành phố, chiều dài của một cạnh tương ứng với khoang cách giữa 2 thành phố Một đường đi trong bài toán TSP là một chu trình Hamilton trên đồ thị và một lời giải tối ưu của bài toán là chu trình Hamilton ngắn nhất
Thường thì đồ thị là đồ thị đầy đủ , vì vậy mọi cặp cạnh đều được nối bởi các cạnh Đây là bước đơn giản hóa bài toán vì việc tìm chu trình Hamilton trong một đồ thị đầy đủ là
dễ Các bài toán mà không phải 2 thành phố nào cũng được nối với nhau có thể được chuyển đổi thành đồ thị đầy đủ bằng cách thêm những cạnh 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ối ưu
4 Phân loại bài toán
Trong bài toán đối xứng khoảng cách giữa các thành phố là như nhau theo 2 hướng, vì vậy
đồ thị biểu diễn là đồ thị vô hướ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ất đối xứng , khoảng cách từ thành phố này đến thành phố khác không nhất thiết phải bằng khoảng cách theo hướng ngược lại, thậm chí có thể không có kết nối theo chiều ngược lại Vì vậy graph biểu diễn bài toán bất đối xứng là đồ thị có hướng Lấy ví dụ
mô hình đường một chiều trong giao thông chẳng hạn
Trong bài toán metric TSP khoảng cách giữa các thành phố phải thỏa mãn điều kiện của bất
đẳng thức tam giác Điều này có thể phát biểu bằng đường nối trực tiếp từ A đến B không bao giờ dài hơn đường đi từ A tới B mà qua C trung gian
Trang 8MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 4
Những chiều dài cạnh này định nghĩa một metric trong tập các đỉnh Khi các thành phố được xem như những điểm trên tấm hình, nhiều hàm khoảng cách tự nhiên là các metric ví
dụ như :
Trong bài toán Euclidian TSP khoảng cách giữa 2 thành phố là khoảng cách Euclide giữa hai điểm tương ứng
Trong bài toán Rectilinear TSP khoảng cách giữa 2 thành phố là tổng hai tọa độ x và
y của chúng Metric này thườ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ủa độ chênh lêch tọa
độ x và y của chúng
Hai metric cuối xuất hiện trong việc định hướng một máy mà đào tập các hố trong mạch in Manhattan metric tương ứng tới máy căn chỉnh tọa độ thứ nhất rồi tới tọa độ kia, vì vậy thời gian di chuyển tới một điểm mới là tống cả 2 hướng di chuyển Maximum metric tương ứng với mày mà chỉnh cả 2 tọa độ cùng 1 lúc vì vậy thời gian để di chuyển tới một điểm mới quyết định bởi di chuyển dài hơn
Khoảng cách không thỏa mãn bất đắng thức tam giác phát sinh trong nhiều bài toán định tuyến Ví dụ trong một kiểu vận tải, như du lịch bằng máy bay có thể nhanh hơn mặc dù khoảng cách di chuyển là xa hơn
5 Các giải thuật giải bài toán TSP
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ới đây nhất
của quy hoạch động là giải thuật có độ phức tạp O(n22n) và yêu cầu không gian bộ nhớ là hàm mũ
Cải thiện tốc độ cho cách giải thuật trên là hầu như không thể 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ạy trong độ 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ụng để giải các bài toán TSP với khoảng 40-60 thành phố
Trang 9Trang 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ể , đây là phương thức sử dụng để giải quyết các bài toán với số lượng lớn thành phố Cách tiếp cận này đang giữ kỷ lục hiện tại giải quyết đượ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 đã được tìm ra năm
2001 sử dụng phương thức lát cắt đề xuất bởi George Dantzig, Ray Fulkerson, và Selmer Johnson vào năm 1954, dựa trên linear programming Quá trình tính toán đã được thực hiện trong mạng máy tính gồm 110 bộ vi xử lý tại đại học Rice University và Princeton
University Tổng thời gian tính toán tương đương với 22.6 năm trong một máy đơn vi xử lý tốc độ 500 MHz Vào tháng 5-2004, bài toán người du lịch thăm tất cả 24,978 thành phố ở thụy điển đã được giải quyết : đoạn đường ngắn nhất vào khoảng 72,500 kilomet đã được tìm thấy và đã được chứng minh rằng không có đường đi nào ngắn hơn
Vào tháng 3- 2005, bài toán người du lịch với 33,810 điểm trong 1 mạch in đã được giải
quyết sử dung công cụ Concorde TSP Solver: đoạn đường tối ưu dài 66,048,945 đơn vị đã
được tìm thấy và đã được chứng minh không có đường đi nào ngắn hơn tổng khối lượng tính toán mất khoảng 15.7 năm CPU (Cook et al 2006) Vào tháng 4 năm 2006 một bài toán với
85,900 điểm cũng đã được giải quyết bởi Concorde TSP Solver, và mất khoảng 136 năm
CPU
Rất nhiều heuristics và giải thuật xấp xỉ, có thể đưa ra nhanh chóng lời giải tốt đã được đề xuất Các phương thức hiện đạ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ận được với lời giải xấp xỉ chỉ khác 2-3% so với lời giải tối ưu
Một vài kiểu heuristic đã đượ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) để cho người du lịch chọn thành phố gần nhất chưa thăm trong lần di chuyển tiếp theo Giải thuật này nhanh chóng đưa ra một đường đi ngắ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ật này đưa ra lời giải có chiều dài xấp xỉ 1.25 * lần chiều dài của đường đi tối ưu
Tuy nhiên, có nhiều cách sắp xếp đặc biệt các thành phố làm cho giải thuật NN đưa ra
đường đi tồi tệ nhất (Gutin, Yeo, and Zverovich, 2002) Điều này đúng cho cả bài toán TSP đối xứng và bất đối xứng (Gutin and Yeo, 2007)
Trang 10MSHV: CH1301061_Dương Thị Xuân Thoại
Trang 6
Gần đây một heuristic mới được đưa ra ,Match Twice and Stitch (MTS) (Kahng, Reda 2004 MTS đã cho thấy tính hiệu quả hơn hẳ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ứ 2 được thực hiện sau khi xóa tất cả các cạnh của lần khớp thứ nhất, để đưa ra tập tất cả các chu trình Sau đó chu trình được đóng lại để đưa ra đường đi cuối cùng
Cải tiến từng bước
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ối đoạn tạo bởi cạnh bị xóa tạo thành đường di ngắn hơn Đây là trường hợp đặc biệt của phương thức k-opt
k-opt heuristic
Lấy một đường đi và xóa k cạnh đôi một không có điểm chung Xây đựng lại đường đi từ những mảnh còn lại để không có hai mảnh đường đi nào lối với nhau (không nối hai điểm đầu cuối của 2 mảnh với nhau sẽ tạo thành đường đi khép kín) Điều này làm đơn giản
hóabài toán TSP thành bài toán đơn giản hơn rất nhiều Mỗi điểm đầu cuối có thể được nối
tới 2k − 2 điểm khác có thể: trong số 2k tổng số điểm đầu cuối có thể, trừ ra hai điểm đầu cuối của mảnh đang xem xét Bài toán đơn giản hóa 2k thành phố TSP có thể giải sử dụng
brute force để tìm tổ hợp tốt nhất của các mảnh ban đầu Kỹ thuật k-opt là trườ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 vào năm 1965 Có một trường hợp đặc biệt của 3-opt khi mà cách cạnh là có thể không nhất thiết không có điểm chung (hai trong số các cạnh kề với nhau) Trong thực tế, có thể đạt được những phát triển đáng kể 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 thành trườn hợp riêng với hai cạnh xóa đi nối với nhau Kỹ thuật này được gọi là 2.5-opt nằm giữa 2-opt và 3-opt, hiểu theo cả 2 nghĩa của chất lượng lời giải đạt được và thời gian để tìm được lời giải
V'-opt heuristic
Kỹ thuật variable-opt method giống như , nhưng là sự tông quát hóa của k-opt kỹ thuật Trong khi kỹ thuật k-opt xóa đi một số lựong cố định (k) cạnh từ đường đi ban đầu kỹ thuật variable-opt không xóa đi một số lượ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 Phương thức nổi tiếng trong gia đình này là phương thức Lin-Kernighan Shen Lin và Brian Lin-Kernighan lần đầu tiên đưa ra phương thức của họ năm 1972
và nó là heuris tic đáng tin cậy nhát cho việc giải bài toán người du lịch trong suốt hai thập
kỷ Những kỹ thuật tiên tiến hơn được phát triển tại Bell Labs cuối những năm 1980 bởi David Johnson và đội nghiên cứu của ông Những phương thức này , đôi khi được gọi là Lin-Kernighan-Johnson xây dựng trên phương thức Lin-Kernighan , thêm ý tưởng từ tabu