Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
842,76 KB
Nội dung
Học viện Công nghệ Bưu Viễn thông Khoa Công nghệ thông tin Toánrờirạc Bài toán tối ưu Ngô Xuân Bách Nội dung Giới thiệu toán Thuật toán duyệt toàn Thuật toán nhánh cận Bài tập http://www.ptit.edu.vn Giới thiệu toán tối ưu Bài toán đếm: Đếm tất cấu hình tổ hợp thỏa mãn ràng buộc toán Phương pháp giải mong muốn xây dựng công thức tính nghiệm toán Bài toán liệt kê: Xem xét tất cấu hình tổ hợp thỏa mãn ràng buộc toán Phương pháp giải thường đưa thuật toán vét cạn (thuật toán sinh, thuật toán quay lui,…) Bài toán tối ưu: Trong số cấu hình tổ hợp thỏa mãn yêu cầu toán, lựa chọn nghiệm có giá trị sử dụng tốt (tối ưu hàm mục tiêu) http://www.ptit.edu.vn Phát biểu toán tối ưu Tìm cực đại (hoặc cực tiểu) 𝑓(𝑥) → 𝑀𝑎𝑥(𝑀𝑖𝑛) với điều kiện 𝑥 ∈ 𝐷, 𝐷 tập hợp hữu hạn o Hàm 𝑓(𝑥) gọi hàm mục tiêu toán o Mỗi phần tử 𝑥 ∈ 𝐷 gọi tập phương án toán o Phương án 𝑥 ∗ ∈ 𝐷 làm cho hàm mục tiêu có giá trị lớn (nhỏ nhất) gọi phương án tối ưu toán o 𝑓 ∗ = 𝑓(𝑥 ∗ ) gọi giá trị tối ưu toán http://www.ptit.edu.vn Ví dụ (1/4) Bài toán túi: Một nhà thám hiểm cần đem theo túi trọng lượng không 𝐵 Có 𝑁 đồ vật cần đem theo Đồ vật thứ 𝑖 có trọng lượng 𝑎𝑖 , có giá trị sử dụng + 𝑐𝑖 (𝑖 = 1, 2, , 𝑁; 𝑎𝑖 , 𝑐𝑖 ∈ 𝑍 ) Hãy tìm cách đưa đồ vật vào túi cho nhà thám hiểm cho tổng giá trị sử dụng đồ vật túi lớn http://www.ptit.edu.vn Ví dụ (2/4) Tập phương án toán: Mỗi phương án toán xâu nhị phân có độ dài 𝑁 Trong đó, 𝑥𝑖 = tương ứng với đồ vật 𝑖 đưa vào túi, 𝑥𝑖 = tương ứng với đồ vật 𝑖 không đưa vào túi Tập xâu nhị phân 𝑋 = (𝑥1, , 𝑥𝑁 ) phải thỏa mãn điều kiện tổng trọng lượng không vượt 𝐵 Nói cách khác, tập phương án 𝐷 toán xác định công thức N D X x1 , x2 , , x N : g ( X ) xi B; xi 0,1 i 1 http://www.ptit.edu.vn Ví dụ (3/4) Hàm mục tiêu toán: Ứng với phương án 𝑋 = (𝑥1, , 𝑥𝑁 ) ∈ 𝐷, ta cần tìm phương án 𝑋 ∗ = (𝑥1∗ , , 𝑥𝑁∗ ) cho tổng giá trị sử dụng đồ vật túi lớn Tổng giá trị sử dụng đồ vật xác định theo công thức sau: f X N c x i i max i 1 http://www.ptit.edu.vn Ví dụ (4/4) Bài toán phát biểu lại sau: Trong số xâu nhị phân 𝑋 = (𝑥1, , 𝑥𝑁 ) thỏa mãn điều kiện 𝑔(𝑋) ≤ 𝐵, tìm vector 𝑋 ∗ để hàm 𝑓(𝑋) có giá trị lớn Đầu vào (Input): o Số lượng đồ vật: 𝑁 o Vector trọng lượng: 𝐴 = (𝑎1, 𝑎2, , 𝑎𝑁) o Vector giá trị sử dụng: 𝐶 = (𝑐1, 𝑐2, , 𝑐𝑁) Đầu (Output): o Phương án tối ưu toán: 𝑋 ∗ = (𝑥1∗ , , 𝑥𝑁∗ ) ∈ 𝐷 để f(𝑋 ∗ ) lớn o Giá trị tối ưu toán: f(𝑋 ∗ ) D X x1 , x2 , , xN : g X N f X c x i i i 1 max xi B; xi 0,1 i 1 N với 𝑋 ∈ 𝐷 http://www.ptit.edu.vn Ví dụ (1/4) Bài toán người du lịch: Một người du lịch muốn tham quan 𝑁 thành phố 𝑇1, 𝑇2, , 𝑇𝑁 Xuất phát thành phố đó, người du lịch muốn qua tất thành phố lại thành phố lần trở lại thành phố ban đầu Biết 𝑐𝑖𝑗 chi phí lại từ thành phố 𝑇𝑖 đến thành phố 𝑇𝑗 Hãy tìm hành trình cho người du lịch có tổng chi phí nhỏ http://www.ptit.edu.vn Ví dụ (2/4) Tập phương án toán: Không hạn chế tính tổng quát toán, ta cố định xuất phát thành phố 𝑇1 = Khi đó, hành trình người du lịch 𝑇1𝑇2 𝑇𝑁 𝑇1 xem hoán vị 1,2, … , 𝑁 𝑋 = (𝑥1, 𝑥2, , 𝑥𝑁 ), 𝑥1 = Như vậy, tập phương án 𝐷 toán tập hoán vị 𝑋 = (𝑥1, 𝑥2, , 𝑥𝑁 ) với 𝑥1 = D X x1 , x2 , , x N | x1 i j : xi x j ; i, j 1,2, , N 10 http://www.ptit.edu.vn Hạn chế phương án duyệt Giả sử ta có hàm 𝑔 Để giảm bớt khối lượng duyệt tập phương án trình liệt kê thuật toán quay lui ta xác định 𝑋 ∗ phương án làm cho hàm mục tiêu có giá trị nhỏ số phương án tìm 𝑓 ∗ = 𝑓(𝑋 ∗ ) Ta gọi 𝑋 ∗ phương án tốt có, 𝑓 ∗ kỷ lục Nếu 𝑓 ∗ < 𝑔(𝑎1, 𝑎2, , 𝑎𝑘 ) 𝑓 ∗ < 𝑔(𝑎1, 𝑎2, , 𝑎𝑘 ) ≤ min*𝑓(𝑋): 𝑋 ∈ 𝐷, 𝑥𝑖 = 𝑎𝑖, 𝑖 = 1, 2, , 𝑘+ Điều có nghĩa tập 𝐷(𝑎1, 𝑎2, , 𝑎𝑘) chắn không chứa phương án tối ưu Trong trường hợp ta không cần phải triển khai phương án phận (𝑎1, 𝑎2, , 𝑎𝑘 ) Tập 𝐷(𝑎1, 𝑎2, … , 𝑎𝑘) bị loại bỏ khỏi trình duyệt Nhờ đó, số tập cần duyệt nhỏ trình tìm kiếm 25 http://www.ptit.edu.vn Thuật toán nhánh cận (giả mã) Thuật toán Branch_And_Bound (𝑘) { for (𝑎𝑘 ∈ 𝐴𝑘){ if(){ 𝑥𝑘 = 𝑎 𝑘 ; if ( 𝑘 == 𝑛 ) ; else if ( 𝑔(𝑎1, 𝑎2, , 𝑎𝑘 ) ≤ 𝑓 ∗ ) Branch_And_Bound (𝑘 + 1) ; } } } 26 http://www.ptit.edu.vn Xây dựng hàm 𝑔 Việc xây dựng hàm 𝑔 phụ thuộc vào toán tối ưu tổ hợp cụ thể Ta cố gắng xây dựng 𝑔 cho: o o Việc tính giá trị g phải đơn giản việc giải toán tối ưu tổ hợp 𝑓 𝑋 : 𝑋 ∈ 𝐷, 𝑥𝑖 = 𝑎𝑖 , 𝑖 = 1, 2, , 𝑘 Giá trị 𝑔(𝑎1, 𝑎2, , 𝑎𝑘 ) phải sát với giá trị 𝑓 𝑋 : 𝑋 ∈ 𝐷, 𝑥𝑖 = 𝑎𝑖 , 𝑖 = 1, 2, , 𝑘 Hai yêu cầu thường đối lập khó thỏa mãn đồng thời thực tế 27 http://www.ptit.edu.vn Giải toán túi thuật toán nhánh cận (1/4) Một dạng khác toán túi: Giả sử có 𝑛 loại đồ vật số lượng đồ vật loại không hạn chế Đồ vật loại 𝑗 có trọng lượng 𝑎𝑗 giá trị sử dụng 𝑐𝑗 (𝑗 = 1,2, … , 𝑛) Cần chất đồ vật vào túi có trọng lượng 𝑏 cho tổng giá trị sử dụng đồ vật túi lớn (mỗi loại đồ vật lấy nhiều lần) 28 http://www.ptit.edu.vn Giải toán túi thuật toán nhánh cận (2/4) Bài toán túi phát biểu tổng quát dạng sau: Tìm giá trị lớn hàm mục tiêu 𝑓(𝑋) với 𝑋 ∈ 𝐷 Trong đó, 𝑓(𝑋) xác định đây: n D X x1 , x2 , , xn : xi b, xi Z , i 1,2, , n i 1 f * max f X ci xi : xi b, xi Z , i 1,2, , n i 1 i 1 n n Ví dụ toán túi: f X 10 x1 x2 x3 x4 max, x1 x2 x3 x4 8, x j Z , j 1,2,3,4 29 http://www.ptit.edu.vn Giải toán túi thuật toán nhánh cận (3/4) Bước 1: Sắp xếp đồ vật thỏa mãn cn c1 c2 a1 a2 an Bước (Lặp): Lặp toán phận cấp 𝑘 = 1, 2, , 𝑛: 𝑘 o Giá trị sử dụng 𝑘 đồ vật túi: o Trọng lượng lại túi: o Cận phương án phận cấp 𝑘: 𝛿𝑘 = 𝑐𝑖 𝑥𝑖 𝑖=1 k bk b xi 𝑔 𝑥1 , 𝑥2 , … , 𝑥𝑘 i 1 𝑐𝑘+1 = 𝛿𝑘 + 𝑏𝑘 𝑎𝑘+1 Bước (Trả lại kết quả): Phương án tối ưu giá trị tối ưu tìm 30 http://www.ptit.edu.vn Giải toán túi thuật toán nhánh cận (4/4) Thuật toán Brach_And_Bound (k) { for (j = 𝑏𝑘 /𝑎𝑘 ; j>=0; j ){ x[k] = j; 𝛿𝑘 = 𝛿𝑘 + 𝑐𝑘 𝑥𝑘 ; bk bk ak xk ; if (k==n) ; else if (k + (ck+1*bk)/ak+1 >FOPT) Branch_And_Bound(k+1); 𝛿𝑘 = 𝛿𝑘 − 𝑐𝑘 𝑥𝑘 ; } bk bk ak xk ; } 31 http://www.ptit.edu.vn Ví dụ (1/2) f X 10 x1 x2 x3 x4 max, x1 x2 x3 x4 8, x j Z , j 1,2,3,4 32 http://www.ptit.edu.vn Ví dụ (2/2) FOPT=- X1=1 X2=1 (1) 1=10; b1=3;g1=15 (1,1);2=15; b2=0;g2=15; X1=0 (0);1=0; b1=8;g1=40/3 X2=0 (1,0);2=10; b2=3;g2=14.5; X3=0 Loại g