Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào chu trình..[r]
(1)KỸ THUẬT GREEDY
KỸ THUẬT GREEDY
(THAM LAM)
Phạm Thế Bảo Khoa Toán – Tin học
Trường Đại học Khoa học Tự nhiên Tp.HCM
Bài tốn tối ưu tổ hợp
• Là dạng toán tốiưu, dạng tổng quát:
–Cho hàm f(X), hàm mục tiêu, xác định tập hữu hạn phần tử D
Mỗi phần tử X∈D có dạng X (x x x ) gọi
–Mỗi phần tử X∈D có dạng X=(x1, x2, …, xn) gọi phương án
–Tìm phương án X0∈D cho f(X) đạt max (hay min) D X0được gọi phương án tốiưu
• Cách giải quyết:
Vét cạn
–Vét cạn
–Tốn học: ngành tốiưu – khó
(2)Kỹ thuật Greedy
• Để xây dựng lời giải tối ưu (tồn cục) hú t ẽ tì lời iải ( ) tối
chúng ta tìm lời giải (xi) tối ưu cục
và xem tập hợp lời giải tối ưu cục
sẽ lời giải tơi ưu cần tìm
• Trong nhiều trường hợp phương pháp chưa cho lời giải tối ưu toàn cục Nhưng chưa cho lời giải tối ưu toàn cục Nhưng
đây phương pháp khả thi cài đặt máy tính
Phạm Thế Bảo
Bài tốn trả tiền của ATM
• Trong máy có chuNn bị sẵn loại tiền 10K, 20K 50K 100K Giả ố l khô h 20K, 50K 100K Giả sử số lượng không hạn chế Khi có khách hàng cần rút N đồng, với N chia hết cho 10K Tìm phương án trảN đồng số lượng tờít
• Cách giCách giảải:i:
(3)–Theo đề 10Kx1+20Kx2+50Kx3+100Kx4=N
và (x1+x2+x3+x4) nhỏ
–Áp dụng kỹ thuật Greedy: tìm x4 lớn
sauđó tìm x3ln cú thcũn li, ặli gii
ã Vớ d : khách cần rút 480 000 đồng
• Ví dụ: khách cần rút 1.480.000 đồng
–Đáp án = (14,1,1,1)
Phạm Thế Bảo
Bài tập: Càiđặt chương trình
Bài tốn đường đi người giao hàng
• Bài tốn tiếng – tốn đường người giao hàng – Traveling Saleman Problem (TSP): Có
hàng Traveling Saleman Problem (TSP): Có
một người giao hàng cần giao hàng N thành phố Xuất phát từ thành phố, qua tất thành phố quay nơi xuất phát, thành phố qua lần Giả thiết thành phố có đường đến thành phố cịn lại Hãy tìm phương án để tốn chi phí thấp
ể
(chi phí khoảng cách, cước phí di chuyển, thời gian di chuyển ,…)
(4)• Cách giải quyết:
– Định nghĩa đồ thị, thành phố đỉnh đồ thị, khoảng cách thành phố đại lượng ta cần quan tâm (ví dụ: khoảng cách, chi phí, …)Ỉđi tìm chu trình Hamilton nhỏnhất
ấ
– Vét cạn: có tt c ặO( )
Kthut Greedy: ã Thut giải:
1 cạnh theo thứtựtăng
2 Xét cạnh cóđộdài từnhỏ đến lớnđể đưa vào chu trình Một cạnhđượcđưa vào chu trình cạnh thỏa haiđiều kiện:
» Khơng tạo chu trình thiếu (khơngđi quađủN đỉnh)
» Khơng tạo chu trình thiếu (khơngđi quađủN đỉnh)
» Khơng tạo thành mộtđỉnh có cấp≥3 (khơng có nhiều cạnh xuất phát từmộtđỉnh – giảthiết toán qua lần)
– Lặp lại bước 3đến có chu trình
Phạm Thế Bảo
• Độ phức tạp cịn O( )
• Ứng dụng mở rộng: máy hàn điểm
đượcđiều khiển máy tính Bắt đầu từ
điểm kết thúc điểm (giống máy may
đ ể ết t úc tạ đ ể (g ố g áy ay cơng nghiệp) N hiệm vụ tìm phương án di chuyển cho
• Ví dụ: có điểm có tọa độ tương ứng: a(0,0), b(4,3), c(1,7), d(15,7), e(15,4) f(18,0)
(5)d(15,7) c(1,7)
b(4,3)
e(15,4)
5
5
7.08
Phạm Thế Bảo
f(18,0) a(0,0)
Chu trình thiếu (a,b,c,a) Ỉloại ac
Tương tựloại cạnh df
d(15,7) c(1,7)
b(4,3)
e(15,4)
5
5
f(18,0)
a(0,0) Loại tạođỉnh cấp
(6)d(15,7) c(1,7)
Tốiưu, tổngđộdài = 48.39
b(4,3)
e(15,4)
5
5
Phạm Thế Bảo
f(18,0) a(0,0)
Tổngđộdài =50
Đây phương án tốt chưa tốiưu
Bài tốn ba lơ
• Cho ba lơ đựng trọng lượng W với n loại đồvật, đồ vật i có trọng lượng gi giá n loại đồvật, đồ vật i có trọng lượng gi giá trị vi Chọn cách lựa chọn cho tổng trọng không W tổng giá trị lớn
• Áp dụng kỹ thuật Greedy:
– Tínhđơn giá cho loạiđồvật
– Xếp theođơn giá giảm dần
Với loại đồ vật lấy số lượng tối đa mà trọng
– Với loại đồ vật lấy số lượng tối đa mà trọng lương ba lơ cịn cho phép
– Xác định lại trọng lượng ba lô, quay lại bước cho
(7)• Ví dụ: có ba lơ có trọng lượng 37 loại đồ
vật bảng
Loạiđồvật Trọng lượng Giá trị
A 15 30
–Từ bảng ta tínhđơn giá lại theo đơn giá
B 10 25
C 2 2
D 4 6
Loạiđồvật Trọng lượng Giá trị Đơn giá
Phạm Thế Bảo
Loạiđồvật Trọng lượng Giá trị Đơn giá
B 10 25
A 15 30
D 4 6
C 2 2
• Theo bảng thứtự ưu tiên B,A,D C:
–Vật B, chọn tối đa cái, trọng lượng 10Ỉtrọng lượng ba lơ cịn lại =
–VVậật A khơng cht A, khơng chọọnn đượđược trc trọọng lng lượượng vng vậật A 15t A 15 ba lơ chỉcịn
–Vật D, chọn Ỉ trọng lượng ba lơ cịn lại =
–Vật C, chọnđược
Tổng trọng lượng ba lô
–Tổng trọng lượng ba lô