1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề BÀI TOÁN NGƯỜI DU LỊCH

13 1,1K 5

Đ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

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 380,17 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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àn

Trang 1

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

Trang 2

Phần mở đầu 3

Bố cục bài thu hoạch 4

CHƯƠNG 1: TỔNG QUAN BÀI TOÁN NGƯỜI DU LỊCH 5

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 6

2.1 Phát biểu bài toán 6

2.2 Thuật giải tìm kiếm địa phương Local Search 6

2.3 Phương pháp tham lam (Greedy, một thuật giải Heuristic) 7

2.4 Thuật giải Iterated Local Search 8

CHƯƠNG 3: THUẬT GIẢI ĐỂ GIẢI QUYẾT BÀI TOÁN NGƯỜI DU LỊCH 11

CHƯƠNG 4: ĐÁNH GIÁ THUẬT GIẢI VÀ KẾT QUẢ DỰ KIẾN 13

Tài liệu tham khảo 14

Trang 3

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 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 ).

Trang 4

Bố cục bài thu hoạch

Bài thu hoạch gồm 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

Chương 4: Đánh giá thuật giải và kết quả dự kiến

Trang 5

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 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ó tồn 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

Trang 6

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

đ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

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 đó

Trang 7

• Á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ó

• 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

Trang 8

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 rồi 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 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*

Trang 9

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.

Iterated Local Search:

s* = localSearch(s0);

while(termination condition met) {

s’ = perturbation(s*, history);

Trang 10

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 gồm 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ự

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:

Bài thu ho ch môn Thu t toán và các ph ạch môn Thuật toán và các phương pháp giải quyết vấn đề ật toán và các phương pháp giải quyết vấn đề ương pháp giải quyết vấn đề ng pháp gi i quy t v n đ ải quyết vấn đề ết vấn đề ấn đề ề Trang 10

Iterated Local Search:

s* = localSearch(s0);

while(termination condition met) {

s’ = perturbation(s*, history);

s*’= localSearch(s’);

Trang 11

Sau đây là trình bày chi tiết các bước thực hiệ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í chuyển trên các đường đó, sau đó chọn đi đến địa điểm có chi phí di chuyển là thấp nhất Kết quả bước này được 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 đủ 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*, ta tiến hành làm nhiểu để 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 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*’

Trang 12

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 được gọi là better acceptance

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

CHƯƠNG 4: ĐÁNH GIÁ THUẬT GIẢI VÀ KẾT QUẢ DỰ

KIẾN

Bởi vì bản chất của Iterated 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 hơn Local Search do chúng ta thực hiện việc mở rộng không gian tìm kiếm

Ngày đăng: 23/05/2015, 21:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w