Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
380,17 KB
Nội dung
Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH BÀI THU HOẠCH MÔN THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ Đề tài: BÀI TOÁN NGƯỜI DU LỊCH GVHD: Đỗ Văn Nhơn Học viên thực hiện: Lê Chí Cảnh – CH1301081 TP. H Chí Minh, tháng 10 năm 2014 Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM Mục lục Contents Phần mở đầu Lý do thực hiện và mục tiêu của đề tài Trong cuộc sống của chúng ta việc tìm ra một hành trình di chuyển qua các địa điểm ít ốn chi phí nhất là một bài toán kinh điển trong lĩnh vực khoa học. Lời giải tìm có giá trị lớn trong hoạt động thực tiễn của con người, giúp chúng ta di chuyển nhanh hơn, và tiết kiệm chi phí hơn. Tuy nhiên tính đến thời điểm hiện tại thì vẫn chưa có giải thuật hiệu quả nào cho việc giải bài toán này. Trong phạm vi bài thu hoạch này, em sẽ đưa ra một giải pháp để giải Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM quyết một bài toán tìm đường đi với chi phí ngắn nhất cho người du lịch (tiếng Anh: travelling salesman problem – TSP ). Bố cục bài thu hoạch Bài thu hoạch gm có 4 chương như sau: Chương 1: Tổng quan về bài toán người du lịch Chương 2: Phát biểu bài toán người du lịch và các thuật giải liên quan Chương 3: Thuật giải đề nghị: trình bày chi tiết thuật giải để giải quyết bài toán người du lịch Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM Chương 4: Đánh giá thuật giải và kết quả dự kiến CHƯƠNG 1: TỔNG QUAN BÀI TOÁN NGƯỜI DU LỊCH Lịch sử bài toán Bài toán người du lịch [1] (tiếng Anh: travelling salesman problem - TSP) là một bài toán NP-khó thuộc thể loại tối ưu rời rạc hay tổ hợp được nghiên Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM cứu trong vận trù học hoặc lý thuyết khoa học máy tính. Bài toán được phát biểu như sau. Cho trước một danh sách các thành phố và khoảng cách giữa chúng, tìm chu trình ngắn nhất thăm mỗi thành phố đúng một lần. Bài toán được nêu ra lần đầu tiên năm 1930 và là một trong những bài toán được nghiên cứu sâu nhất trong tối ưu hóa. Nó thường được dùng làm thước đo cho nhiều phương pháp tối ưu hóa. Mặc dù bài toán rất khó giải trong trường hợp tổng quát, có nhiều phương pháp giải chính xác cũng như heuristic đã được tìm ra để giải quyết một số trường hợp có tới hàng chục nghìn thành phố. Ngay trong hình thức phát biểu đơn giản nhất, bài toán TSP đã có nhiều ứng dụng trong lập kế hoạch, hậu cần, cũng như thiết kế vi mạch. Trong lý thuyết độ phức tạp tính toán, phiên bản quyết định của TSP (cho trước độ dài L, xác định xem có tn tại hay không một chu trình đi qua mỗi đỉnh đúng một lần và có độ dài nhỏ hơn L) thuộc lớp NP-đầy đủ. Do đó, có nhiều khả năng là thời gian xấu nhất của bất kì thuật toán nào cho TSP đều tăng theo cấp số nhân với số thành phố. 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-đầy đủ. Vì vậy không có giải 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 xấu 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. Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM CHƯƠNG 2: PHÁT BIỂU BÀI TOÁN NGƯỜI DU LỊCH VÀ CÁC THUẬT GIẢI LIÊN QUAN 2.1. Phát biểu bài toán Cho trước một tập của các thành phố và các chi phí đi lại giữa mỗi cặp thành phố, bài toán người du lịch , hoặc viết tắt trong tiếng anh là TSP, là để tìm ra chi phí thấp nhấp để đến thăm tất cả các thành phố trong tập ban đầu và trở về điểm bắt đầu của bạn. Trong điều kiện tiêu chuẩn, thì chúng ta quy định chi phí đi lại là đối xứng theo nghĩa là đi du lịch từ thành phố X đến thành phố Y chi phí cũng giống như đi du lịch từ Y đến X. Bài toán người du lịch có thể được mô hình hoá như một đ thị vô hướng có trọng số, trong đó mỗi thành phố là một đỉnh của đ thị còn đường đi giữa các thành phố là mỗi cách. Khoảng cách giữa hai thành phố là độ dài cạnh. Đây là vấn đề cực tiểu hoá với điểm đầu và điểm cuối là cùng một đỉnh sau khi thăm hết các đỉnh còn lại đúng một lần. Mô hình này thườ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 hưởng đến kết quả tối ưu sau cùng. 2.2. Thuật giải tìm kiếm địa phương Local Search Kĩ thuật tìm kiếm địa phương [2] (local search) thường được áp dụng để giải các bài toán tìm lời giải tối ưu. Phương pháp như sau: • Xuất phát từ một phương án nào đó. • Áp dụng một phép biến đổi lên phương án hiện hành để được một phương án mới tốt hơn phương án đã có. Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM • Lặp lại việc áp dụng phép biến đổi lên phương án hiện hành cho đến khi không còn có thể cải thiện được phương án nữa. Thông thường một phép biến đổi chỉ thay đổi một bộ phận nào đó của phương án hiện hành để được một phương án mới nên phép biến đổi được gọi là phép biến đổi địa phương và do đó ta có tên kĩ thuật tìm kiếm địa phương. Ta có thể vận dụng kĩ thuật tìm kiếm địa phương để giải bài toán tìm đường đi ngắn nhất của người giao hàng (TSP). • Xuất phát từ một chu trình nào đó. • Bỏ đi hai cạnh có độ dài lớn nhất không kề nhau, nối các đỉnh lại với nhau sao cho vẫn tạo ra một chu trình đủ. Tiếp tục quá trình biến đổi trên cho đến khi nào không còn cải thiện được phương án nữa và kết luận. 2.3. Phương pháp tham lam (Greedy, một thuật giải Heuristic) Tìm nghiệm của bài toán tối ưu thường đòi hỏi chi phí lớn về thời gian tính toán và không gian bộ nhớ (ví dụ như bài toán TSP). Tuy nhiên trong nhiều trường hợp ta chỉ tìm được một nghiệm đủ tốt, khá gần với nghiệm tối ưu là đạt yêu cầu, nhất là khi có hạn chế về mặt thời gian và bộ nhớ. Phương pháp tham lam xây dựng các thuật toán giải các bài toán tối ưu dựa trên tư tưởng tối ưu cục bộ theo một chiến lược tư duy kiểu con người, nhằm nhanh chóng đạt đến một lời giải "tốt". Có một số thuật toán dựa trên tư tưởng của phương pháp tham lam thực sự tìm được phương án tối ưu (chẳng hạn thuật toán Kruscal tìm cây khung cực tiểu), còn lại đa số các thuật toán dựa trên phương pháp tham lam thường là thuật toán gần đúng, chỉ cho một lời giải xấp xỉ lời giải tối ưu. Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM Một số chiến lược tham lam Phương pháp tham lam tìm nghiệm tối ưu dựa trên các chiến lược tối ưu cục bộ của con người. Trước khi trình bày những thuật giải tham lam cho những bài toán cụ thể, chúng tôi đề cập đến hai chiến lược tối ưu cục bộ cơ bản: - Chọn cái tốt nhất trước (còn gọi là "chọn miếng ngon trước". Đây là lí do vì sao phương pháp này được gọi là "tham lam" hay "tham ăn"). - Cải tiến cái đang có thành cái tốt hơn. 1. Chiến lược thứ nhất thường được áp dụng khi xây dựng dần từng thành phần của nghiệm tối ưu. Thuật giải sẽ đánh giá các lựa chọn theo một tiêu chuẩn nào đó và sắp xếp từ nhỏ đến lớn ri tiến hành chọn theo trình tự đó. 2. Chiến lược thứ hai thường bắt đầu bằng một hay một vài phương án. Sau đó, bằng một số cách thức nào đó, các phương án được điều chỉnh để có giá trị tốt hơn. Quá trình điều chỉnh sẽ dừng lại khi không điều chỉnh được thêm hoặc sự cải thiện rất nhỏ hoặc hết thời gian cho phép… Phần lớn các thuật toán hiện nay áp dụng cho bộ dữ liệu lớn được thiết kế theo chiến lược này: chẳng hạn tìm kiếm leo đi, giải thuật di truyền… 2.4. Thuật giải Iterated Local Search Ý tưởng đơn giản của thuật giải này được đề xuất lần đầu tiên bởi Baxter vào năm 1981 [3] , nhưng cho đến năm 1998, Stützle mới chính thức phổ biến thuật giải và đặt tên là Lặp tìm kiếm cục bộ Iterated Local Search (gọi tắt là ILS). ILS là một phương pháp Metaheuristic, hay chính xác hơn là một trong những Metaheuristic dựa trên Local Search, vì nó yêu cầu cần có sẵn một thuật giải Local Search. Ý tưởng là khi các thuật giải Local Search bị dừng lại tại một lời giải tối ưu cục bộ s*, thì một phương thức lặp cho phép sử dụng lại Local Search này cho lời giải s’ được tạo bởi bước làm nhiễu perturbation trên s*, điều này giúp thuật giải thoát ra khỏi tối ưu cục bộ. Việc làm nhiễu perturbation được kiểm soát thông qua history nhằm tạo ra những lời giải đầu vào tốt hơn cho Local Search, làm tăng khả năng tìm được lời giải cải thiện chất lượng hơn lời giải tối ưu cục bộ. Tại mỗi lần lặp, những history trước đó, có thể là những thông tin về lời giải tối ưu cục bộ trước đó, sẽ không được sử dụng lại. Từ lời giải tối thiểu cục bộ s*, ta áp dụng perturbation tạo thành lời Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM giải s’ khác. Sau đó áp dụng thuật giải Local Search, ta tìm ra lời giải s*’ có thể tốt hơn s*. Gọi s0 là lời giải khởi tạo của bài toán, và s* là lời giải tối ưu cục bộ sau khi áp dụng thuật giải Local Search. Ta sẽ lặp lại các bước sau cho đến khi đạt điều kiện dừng. Điều kiện dừng của thuật giải ILS có thể là số lần lặp tối đa hoặc thời gian lặp tối đa cho phép. Các bước như sau: - Bước 1: Perturbation (tạm dịch là bước nhiễu loạn): làm thay đổi lời giải s* dựa trên thông tin history tạo ra lời giải mới s’. - Bước 2: Local Search (bước tìm kiếm cục bộ): áp dụng thuật giải tìm kiếm cục bộ cho lời giải đầu vào s’, tìm ra s*’ là lời giải tối ưu cục bộ tiếp theo. - Bước 3: AcceptanceCriterion (bước chọn lời giải): nếu s*’ thoả tiêu chuẩn chọn thì s*’ sẽ trở thành lời giải đầu vào cho vòng lặp tiếp theo, nếu không lời giải đầu vào vẫn sẽ là s*. Có nhiều tiêu chí để chọn lời giải làm lời giải đầu vào s*cho vòng lặp tiếp theo, cụ thể như sau: + Chỉ chuyển qua lời giải tối ưu nhất, nghĩa là nếu lời giải tối ưu cục bộ s*’ ở bước 2 tốt hơn lời giải tối ưu cục bộ trước đó thì s*=s*’ ngược lại dùng tiếp tục lời giải s* cũ. Đây là tiêu chí chọn có tính chuyên sâu cao, còn được gọi là better acceptance criterion. + Luôn chuyển qua lời giải tối ưu vừa tìm được và không chú trọng đến chất lượng lời giải, nghĩa là luôn luôn s*=s*’. Đây là tiêu chí chọn có tính đa dạng hoá với tên gọi random walk acceptance criterion. Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM Cần lưu ý rằng trong khi Local Search tập trung tìm kiếm trong không gian lời giải rộng lớn S, thì ILS chỉ cần tập trung tìm kiếm trong không gian lời giải nhỏ hơn gm các lời giải tối ưu cục bộ. Hơn nữa, thuật giải ILS đơn giản, dễ áp dụng và dễ thực hiện, có thể nói tính đơn giản là một ưu điểm lớn của thuật giải này. ILS được đánh giá cao về hiệu quả trong việc tạo ra lời giải gần với lời giải tối ưu. Thuật giải ILS vừa giữ được tính đơn giản của Heuristic và vừa giữ được tính tổng quát chung của Metaheuristic. Ngoài ra, thuật giải này rất linh động, cho phép người dùng chọn thuật giải Local Search theo ý muốn. Gần đây, thuật giải này được sử dụng khá nhiều như các bài báo của Ilina Stoilkovska, M. Stolevik và các cộng sự, F. Bellanti và các cộng sự, E.K Burke và các cộng sự. Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Iterated Local Search: s 0 = initializeSolution(); s* = localSearch(s0); while(termination condition met) { s’ = perturba tion(s*, history); s*’= localSearch(s’); s* = acceptaceCriterion(s*,s*’, history) } [...]... kiếm Tài liệu tham khảo [1] Wikipedia, Bài toán người bán hàng Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM [2] Thư viện học viện mở Việt Nam, Kỹ thuật tìm kiếm đia phương [3] Vũ Ngọc Sen, Nghiên cứu bài toán xếp lịch trực cho y tá Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề ... Chúng ta sẽ lưu kết quả vào biến s* Tiếp tục vòng lặp từ bước 3 đến bước 5 nếu thời gian lặp còn nhỏ hơn so với thời gian lặp cho phép Khi điều kiện dừng lặp thỏa thì kế thúc và thì lời giải s* là lời giải cuối cho bài toán người du lịch Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM CHƯƠNG 4: ĐÁNH GIÁ THUẬT GIẢI VÀ KẾT QUẢ DỰ KIẾN Bởi...Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM CHƯƠNG 3: THUẬT GIẢI ĐỂ GIẢI QUYẾT BÀI TOÁN NGƯỜI DU LỊCH Trong phạm vi bài thu hoạch này, em đề xuất sử dụng thuật giải Iterated Local Search để giải quyết bài toán người du lịch Như đã trình bày thuật giải này có mã giã như sau: Iterated Local Search: s0 = initializeSolution(); s* = localSearch(s0); while(termination... Local Search là cố gắng thay đổi lời giải tìm được từ thuật giải Local Search nhằm tìm ra những lời giải mới, và chỉ giữ lại một lời giải tối ưu nhất cho nên giải pháp ứng dụng Iterated Local Search vào bài toán người du lịch sẽ tìm được một lời giải tối ưu hơn lời giải của thuật giải tìm kiếm địa phương Local Search Nhưng có một điểm lưu ý là thời gian tìm kiếm lời giải của Iterated Local Search sẽ lâu... lưu vào biến s0 3.2 Bước 2 – Tìm một lời giải tốt hơn lời giải ban đầu Từ một lời giải ban đầu ta sử dụng thuật giải tìm kiếm địa phương local search để tìm ra một lời giải tốt hơn Chi tiết là từ lời giải ban đầu, ta sẽ bỏ đi hai đường có độ dài lớn nhất không kề nhau, sau đó nối các địa điểm lại với nhau sao cho vẫn tạo ra một chu trình đủ Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn. .. trong thuật giải để giải quyết bài toán người du lịch: 3.1 Bước 1 – Khởi tạo lời giải ban đầu Lời giải ban đầu được khởi tạo dựa trên ý tưởng của thuật giải tham lam Greedy với chiến lược chọn cái tốt nhất trước để khởi tạo lời giải ban đầu trong mỗi bước giải để tìm lời giải Nghĩa là tại một điểm địa điểm hiện tại hàm sẽ liệt kê danh sách tất cả các đường có thể đi tiếp các địa điểm tiếp theo và chi... pháp làm nhiễu Ở bước này ta sử dụng lại thuật giải tìm kiếm địa phương ở bước 2 để tìm ra lời giải tối ưu hơn lời giải ở bước 3 và lưu kết quả vào biến s*’ 3.5 Bước 5 – Chọn lời giải cho lần lặp tiếp theo Chúng ta tiến hàn đánh giá 2 lời giải s* và s*’ và chọn ra lời giải có chi phí ít hơn cho lần lặp tiếp theo của vòng lặp while Ở đây chúng ta đã sử dụng phương án chọn có tính chuyên sâu cao, còn... nhằm tìm ra một lời giải mới khác với lời giải hiện tại Để làm nhiểu chúng ta sẽ tiến hàn bỏ đi bốn đường (thay gì bỏ đi 2 đường trong hàm tìm kiếm địa phương ở bước 2) có chi phí lớn nhất không kề nhau, sau đó nối các địa điểm lại với nhau sao cho vẫn tạo ra một chu trình đủ sau đó lưu kết quả vào biến s’ 3.4 Bước 4 - Tìm lời giải tốt hơn lời giải vừa tìm được bằng với phương pháp làm nhiễu Ở bước... quyết vấn đề Trường Đại học Công Nghệ Thông Tin – ĐHQG TPHCM Tiếp tục quá trình biến đổi trên cho đến khi nào không còn giảm được chi phí di chuyển cho lời giải đang xét thì dừng và lưu kết quả vào biến s* • Lưu ý là từ bước 3 đến bước 5 sẽ được thực thi trong vòng lặp while, vòng lặp này bị dừng lại khi đạt đến thời gian lặp tối đa cho phép 3.3 Bước 3 - Làm nhiễu lời giải vừa tìm được Từ một lời giải s*, . về bài toán người du lịch Chương 2: Phát biểu bài toán người du lịch và các thuật giải liên quan Chương 3: Thuật giải đề nghị: trình bày chi tiết thuật giải để giải quyết bài toán người du lịch . THUẬT GIẢI ĐỂ GIẢI QUYẾT BÀI TOÁN NGƯỜI DU LỊCH Trong phạm vi bài thu hoạch này, em đề xuất sử dụng thuật giải Iterated Local Search để giải quyết bài toán người du lịch. Như đã trình bày thuật. có giải thuật hiệu quả nào cho việc giải bài toán này. Trong phạm vi bài thu hoạch này, em sẽ đưa ra một giải pháp để giải Bài thu hoạch môn Thuật toán và các phương pháp giải quyết vấn đề