Tải bản đầy đủ (.pdf) (10 trang)

CÁC THUẬT TOÁN THAM LAM (GREEDY). pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (212.95 KB, 10 trang )

Please purchase a
Please purchase a
personal license.
personal license.
C
C
Á
Á
C THU
C THU


T TO
T TO
Á
Á
N
N
THAM LAM (GREEDY)
THAM LAM (GREEDY)
Gi
Gi


i thu
i thu


t tham lam
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
Traveling Salesperson Problem
Traveling 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.
- Mỗi thành phố chỉ đến 1 lần. Khoảng cách giữa
các thành phố là xác định
- Hãy tìm một chu trình sao cho tổng độ dài
đường đi là nhỏ nhất
Traveling Salesperson Problem
Traveling Salesperson Problem
Giải quyết bài toán với phương pháp vét cạn:
- Xét tất cả các chu trình, và chọn chu trình độ dài
nhỏ nhất  Phải xét tất cả (n-1)!/2 chu trình???
- Chọn 1 đỉnh bất kì, tại đỉnh này có n-1 cạnh tới n-
1 đỉnh khác, nên có n-1 các chọn cạnh đầu tiên.
- Sau khi chọn được cạnh đầu tiên, còn n-2 cách
chọn cạnh thứ 2.
- Tiếp tục như vậy ta có (n-1)! cách chọn chu trình
- Do chỉ quan tâm đến độ dài, không quan tâm đến
hướng  (n-1)!/2 phương án

Traveling Salesperson Problem
Traveling 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
Traveling Salesperson Problem
Traveling 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ố
• (3,5) = 1  (5,6) = 2  (4,7) = 4
(2,7) = 5  (1,6) = 7 (1,4) = 13
(2,3) =21
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
1 2 3 4 5 6 7
1 16 12 13 6 7 11
2 21 18 8 19 5
3 20 1 3 15
4 14 10 4

5 2 17
6 9
Traveling Salesperson Problem
Traveling 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;
cycle = NULL; length_cycle = 0;
while (E !=F)
{ if ( c

nh e th


a mãn
đ
i

u ki

n )
{ cycle = cycle + e;
length_cycle = length_cycle + length(e);
}
E = E – e;
}
}
Traveling Salesperson Problem
Traveling 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
Traveling Salesperson Problem
Traveling 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?

×