Traveling Salesperson ProblemBài toán: Bài toán tìm đường đi của người giao hàng TSP - Người giao hàng cần đi giao hàng tại n thành phố.. Xuất phát từ một thành phố nào đó, đi qua các t
Trang 1Please purchase a personal license.
Trang 2CÁC THU Ậ T TOÁN
THAM LAM (GREEDY)
Trang 3Gi ả i thu ậ t tham lam
Khái niệm:
Mỗi bài toán ta có tập hợp những lựa chọn để giải quyết bài toán Giải thuật tham lam đề xuất việc lựa chọn khả năng tốt nhất cho bài toán đó
Ví dụ:
Bài toán cây khung tối thiểu
Bài toán đường đi ngắn nhất
Trang 4Traveling Salesperson Problem
Bài toán: Bài toán tìm đường đi của người giao hàng
(TSP)
- Người giao hàng cần đi giao hàng tại n thành phố Xuất phát từ một thành phố nào đó, đi qua các thành phố khác để giao hàng và trở về thành phố ban đầu
các thành phố là xác định
đường đi là nhỏ nhất
Trang 5Traveling Salesperson Problem
Giải quyết bài toán với phương pháp vét cạn:
nhỏ nhất Phải xét tất cả (n-1)!/2 chu trình???
n-1 đỉnh khác, nên có n-n-1 các chọn cạnh đầu tiên
chọn cạnh thứ 2
hướng (n-1)!/2 phương án
Trang 6Traveling Salesperson Problem
Giải quyết bài toán với giải thuật tham lam:
1 Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào chu trình ( có n(n-1)/2 cạnh)
2 Mỗi cạnh sẽ được đưa vào chu trình nếu:
1 Không tạo thành một chu trình thiếu (tạo thành chu
trình trước khi đi đủ hết tất cả n đỉnh)
2 Không tạo thành một đỉnh có cấp >=3 ( không có
nhiều hơn 2 cạnh xuất phát từ một đỉnh, do yêu cầu của bài toán mỗi thành phố chỉ đến 1 lần: 1 đến, 1 đi)
3 Lặp lại bước 2 cho đến khi xây dựng được 1 chu
trình
Trang 7Traveling Salesperson Problem
Ví dụ: Cho độ dài đường đi giữa các thành phố được
biểu diễn bằng ma trận kề sau Tìm chu trình ngắn nhất giữa các thành phố
Tổng đường đi: (1,4,7,2,3,5,6,1)=53
Đây chỉ là phương án tốt
Phương án tối ưu: (1,4,7,2,5,3,6,1) =41
Trang 8Traveling Salesperson Problem
Giải thuật:
void TSP (Graph &g)
{ E – tập hợp các cạnh;
Sắp xếp các cạnh trong E theo thứ tự tăng dần;
while (E !=F)
length_cycle = length_cycle + length(e);
}
E = E – e;
}
}
Trang 9Traveling Salesperson Problem
Giải pháp khác của thuật toán tham lam:
1 Xuất phát từ 1 đỉnh bất kỳ, chọn 1 cạnh có độ dài nhỏ nhất từ đỉnh đó đến đỉnh kế tiếp
2 Từ đỉnh kế tiếp, chọn cạnh có độ dài nhỏ nhất đi ra từ đỉnh này thỏa mạn 2 điều kiện ( không tạo chu trình trước khi qua n đỉnh, 1 đỉnh không lớn hơn 2 đường đi)
3 Lặp lại bước 2 cho đến khi đi đến n đỉnh thì quay lại đỉnh xuất phát
Trang 10Traveling Salesperson Problem
Bài tập: Tìm đường đi ngắn nhất của người giao
hàng với độ dài giữa các thành phố cho bởi ma trận sau:
Đường đi đã tìm ra tối ưu chưa?