Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,77 MB
Nội dung
CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT 1 CHƯƠNG 5 Nội dung Qui hoạch động Giải thuật tham lam Giải thuật quay lui (backtracking) Giải thuật nhánh và cận 2 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 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 Ý 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. Ý 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. Ý 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 • 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=(x 1 , x 2 , …., x n ) A∈ 1 ×A 2 ×…×A n | 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ộ (x 1 , x 2 , …., x n ) D ∈ sao cho f(x 1 , x 2 , …., x n ) 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 • Một bộ k thành phần (a 1 , a 2 , …., a k ), a i A∈ i 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(a 1 , a 2 , …., a k ) ≤min{f(x) | x D, x∈ i =a i , i=1, 2,…, k},với mọi (a 1 , a 2 , …., a k ), k=1,2, …(1) • Rõ ràng g(a 1 , a 2 , …., a k ) là cận dưới của giá trị hàm mục tiêu trên tập D(a 1 , a 2 , …., a k )={((a 1 , a 2 , …., a k )| a i A∈ i ,k=1, 2,…} • Vì vậy, g được gọi là hàm cận dưới, và giá trị g (a 1 , a 2 , …., a k ) được gọi là cận dưới của tập D(a 1 , a 2 , …., a k ) Lượ c đồ giải thuật Lượ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(a 1 , a 2 , …., a k ) >f* thì từ(1) ta có • f*< g(a 1 , a 2 , …., a k ) ≤min{f(x) | x D, x∈ i =a i , i=1, 2,…, k} • Suy ra tập con phương án D(a 1 , a 2 , …., a k ) chắc chắn không chứa phương án tối ưu • Do đó loại các phương án trong D(a 1 , a 2 , …., a k ) khỏi quá trình tìm kiếm [...]... u3]+…+c[uk-1,uk] Cá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 Các Ví dụ Các Ví dụ Các Ví dụ Kết thúc thuật toán, ta thu được phương án tối ưu (1,2,3 ,5, 4,1).. .Lược đồ giải thuật Lược đồ giải thuật Cá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? Các Ví... σ+(n-k+1)cmin Các Ví dụ Các Ví dụ Các Ví dụ Kế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 Đọc thêm Chương 8 (2 0 5- 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ự ... nhỏ nhất Giải? Cá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 Cá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 . CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT 1 CHƯƠNG 5 Nội dung Qui hoạch động Giải thuật tham lam Giải thuật quay lui (backtracking) Giải thuật nhánh và cận 2 Phương. không chứa phương án tối ưu • Do đó loại các phương án trong D(a 1 , a 2 , …., a k ) khỏi quá trình tìm kiếm Lược đồ giải thuật Lược đồ giải thuật Các Ví dụ Bài toán người du lịch: Một người. trong n-k+1 đoạn còn lại không ít hơn c min nên cận dưới cho phương án bộ phận có thể tính theo công thức g(u 1 , u 2 ,…u k ) = σ+(n-k+1)c min Các Ví dụ Các Ví dụ Các Ví dụ Kết thúc thuật toán,