Phương Pháp Nhánh và Cận• Ý tưởng phương pháp • Lược đồ giải thuật • Các ví dụ... Ý Tưởng Phương Pháp trang 77• Về nguyên tắc, kỹ thuật quay lui cho phép tìm được nghiệm đúng của bài t
Trang 1CÁC CHIẾN LƯỢC
THIẾT KẾ GIẢI THUẬT
1
CHƯƠNG 5
Trang 2Nội dung
2
Trang 3Phương Pháp Nhánh và Cận
• Ý tưởng phương pháp
• Lược đồ giải thuật
• Các ví dụ
Trang 4Ý Tưởng Phương Pháp (trang 77)
• Về nguyên tắc, kỹ thuật quay lui cho phép tìm
được nghiệm đúng của bài toán, nhưng do phải vét cạn, khi kích thước bài toán lớn sẽ rất kém hiệu quả
• Kỹ thuật nhánh cận khắc phục được hạn chế
này bằng cách, xác định nhánh cận với mục tiêu tại mỗi bước tìm kiếm, vì vậy loại bỏ được hầu hết các hướng tìm kiếm không cần thiết
Trang 5Ý Tưởng Phương Pháp (trang 77)
• Nhánh cận là kĩ thuật xây dựng cây tìm kiếm phương
án tối ưu, nhưng không xây dựng toàn bộ cây mà sử dụng giá trị cận để hạn chế bớt các nhánh
• Cây tìm kiếm phương án có nút gốc biểu diễn cho
tập tất cả các phương án có thể có, mỗi nút lá biểu diễn cho một phương án nào đó Nút n có các nút con tương ứng với các khả năng có thể lựa chọn tập phương án xuất phát từ n Kĩ thuật này gọi là phân nhánh
Trang 6Ý Tưởng Phương Pháp (trang 77)
• Với mỗi nút trên cây ta sẽ xác định một giá trị cận
Giá trị cận là một giá trị gần với giá của các phương
án
• Với bài toán tìm min ta sẽ xác định cận dưới còn với
bài toán tìm max ta sẽ xác định cận trên Cận dưới là giá trị nhỏ hơn hoặc bằng giá của phương án, ngược lại cận trên là giá trị lớn hơn hoặc bằng giá của phương án
Trang 7Ý Tưởng Phương Pháp
• Kỹ thuật nhánh cận thường được áp dụng để giải các bài toán tối ưu
• Kỹ thuật nhánh cận dựa trên lược đồ quay lui và một hàm lượng giá mục tiêu hướng đến các nhánh cận với mục tiêu nhanh nhất có thể
• Kỹ thuật nhánh cận có thể không cho nghiệm tối ưu chính xác mà chỉ cho nghiệm gần đúng
Trang 8• Kỹ thuật nhánh cận thường được áp dụng để giải các bài toán tối ưu được mô hình hóa bởi
Tìm min{f(x) | x D}∈
• Tập D ={x=(x1, x2, …., xn) A∈ 1 ×A2 ×…×An | x thỏa tính chất P} là hữu hạn, f(x) gọi là hàm mục tiêu
• Một nghiệm của bài toán là một bộ (x1, x2, …., xn) D ∈ sao cho f(x1, x2, …., xn) nhỏ nhất
• Có thể dùng kỹ thuật quay lui, vét cạn để tìm nghiệm của bài toán (nhưng không hiệu quả)
Lư ợ c đồ giải thuật
Trang 9• Một bộ k thành phần (a1, a2, …., ak), ai∈Ai gọi là một nghiệm (phương án) bộ phận cấp k
• Giả sử g là một hàm xác định trên tập tất cả các nghiệm bộ phận của bài toán và thỏa:
g(a1, a2, …., ak) ≤min{f(x) | x D, x∈ i=ai, i=1, 2,…, k},với mọi (a1, a2, …., ak), k=1,2, …(1)
• Rõ ràng g(a1, a2, …., ak) là cận dưới của giá trị hàm mục tiêu trên tập D(a1, a2, …., ak)={((a1, a2, …., ak)|
ai∈Ai,k=1, 2,…}
• Vì vậy, g được gọi là hàm cận dưới, và giá trị g (a1, a2,
…., ak) được gọi là cận dưới của tập D(a1, a2, …., ak)
Lư ợ c đồ giải thuật
Trang 10Lược đồ giải thuật
• Giả sử x* là một phương án với giá trị hàm mục tiêu nhỏ nhất trong các phương án đã tìm được, ký hiệu f*=f(x*)
• Ta nói x* là phương án tốt nhất hiện có, còn f* là kỷ lục
• Nếu g(a1, a2, …., ak) >f* thì từ(1) ta có
• f*< g(a1, a2, …., ak) ≤min{f(x) | x D, x∈ i=ai, i=1, 2,…, k}
• Suy ra tập con phương án D(a1, a2, …., ak) chắc chắn không chứa phương án tối ưu
• Do đó loại các phương án trong D(a1, a2, …., ak) khỏi quá trình tìm kiếm
Trang 11Lược đồ giải thuật
Trang 13Các Ví dụ
Bài toán người du lịch: Một người du lịch muốn đi tham
quan n thành phố T1,…,Tn Xuất phát từ một thành phố nào đó, người du lịch muốn đi qua tất cả các thành phố còn lại, mỗi thành phố đúng một lần, rồi quay về thành phố xuất phát Biết cij là chi phí từ thành phố Ti đến thành phố Tj Tìm hành trình (một cách đi) có tổng chi phí nhỏ nhất
Giải?
Trang 14Các Ví dụ
Giải
• Cố định thành phố xuất phát T1, bài toán dẫn đến tìm cực tiểu của hàm
f(x2, x3, …, xn)=c[1, x2]+c[x2, x3]+…+c[xn,1] với điều kiện (x2,
x3, …, xn) là một hoán vị của 2, 3, …, n
Trang 15Các Ví dụ
Giải
Ký hiệu cmin=min{c[i, j], i, j=1,2,…n, i≠j}
• Giả sử đang có phương án bộ phận (u1, u2, …, uk), thì hành trình bộ phận qua k thành phố là
T1→T(u2) →…→T(uk-1) →T(uk)
• Chi phí phải trả theo hành trình bộ phận là
σ = c[1, u2]+c[u2, u3]+…+c[uk-1,uk]
Trang 16Các Ví dụ
Giải
• Hành trình đầy đủ của hành trình bộ phận còn phải đi qua n-k thành phố còn lại rồi quay về T1 bao gồm n-k+1 đoạn đường
• Do chi phí phải trả cho mỗi đoạn trong n-k+1 đoạn còn lại không ít hơn cmin nên cận dưới cho phương án bộ phận có thể tính theo công thức
g(u1, u2,…uk) = σ+(n-k+1)cmin
Trang 17Các Ví dụ
Trang 19Kết thúc thuật toán, ta thu được phương án tối
ưu (1,2,3,5,4,1) tương ứng với hành trình
T1 →T2→T3 →T5→T4 →T1
Và chi phí nhỏ nhất là 22
Trang 20Đọc thêm
Chương 8 (205-240)sách Đinh Mạnh Tường (Cấu trúc dữliệu & Thuật toán, NXB KHKT, 2000)
Chương 16 (dynamic programming), 17
(Greedy algorithms)sách Cormen vàcộng sự