1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình động

69 16 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Bài giảng Lập trình động tìm hiểu về quy hoạch động; đặc điểm của phương pháp chia để trị; một chiến lược tối ưu có đặc trưng; chuỗi con đơn điệu dài nhất. Mời các bạn cùng tham khảo bài giảng để nắm chi tiết nội dung kiến thức.

Dynamic Programming Introduction Quy hoạch động:  Thường dùng để giải toán tối ưu;  Phân rã tốn thành tốn con; hình thành lời giải từ toán con;  Lưu trữ lời giải toán bảng liệu thay cho giải lại toán (đệ quy) Đặc điểm phương pháp chia để trị: •Thường phát sinh tốn “mới” •Lời giải tốn thường sử dụng nhiều lần (“phủ chồng”) 2013-09-22 Dao Thanh Tinh Introduction (2) Ví dụ 1: Tính số Fibonacci thứ n với f0=0 f1 = Theo công thức: n 1  1              fn   n Đệ quy: long f(int m) { if (n==0) return 0; else if (n==1) return 1; else return f(n-1) + f(n); } Ví dụ, để tính f(n) phải tính f(2) n-1 lần! Tiết kiệm nhớ: Dùng mảng: f[0] = 0; f[1]=1; for (i=2; in;i++) f[i] = f[i-1] + f[i-2]; output f[n]; 2013-09-22 f0 = 0; f1=1; for (i=2; in;i++) { tg = f1 + f0; f0 = f1; f1 = tg; } output f1; Dao Thanh Tinh Introduction (3) Số Fibonacci thứ n n=50 F(n) Phương pháp đệ quy Các phương pháp khác 2013-09-22 =12,586,269,025 650 800s 1s Dao Thanh Tinh Introduction (4) Tiếp cận theo hướng bottom-up 2013-09-22 Xuất phát từ tốn sở có lời giải (cách giải đơn giản có sẵn) Từ tập lời giải tốn tìm lời giải toán lớn Dao Thanh Tinh Introduction (5) PRINCIPLE OF OPTIMALITY “An optimal policy has the property that whatever the initial state and initial decisions are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decisions.” Richard Bellman “The Theory of Dynamic Programming”, Bulletin of the American Mathematical Society, Vol 60, No 6, 1954 (503-515) 2013-09-22 Dao Thanh Tinh Introduction (6) Một chiến lược tối ưu có đặc trưng: với trạng thái khởi tạo định ban đầu, định phải thiết lập chiến lược tối ưu trạng thái hình thành từ định trước Chiến lược tối ưu: số bước lựa chọn dường không tốt tổng hợp trình phải tốt 2013-09-22 Dao Thanh Tinh Introduction (7) Kỹ thuật giải toán phương pháp QHĐ: a) Bắt đầu với trường hợp nhỏ (thường đơn giải giải ngay) b) Tổ hợp kết có (khơng phải tính lại) trường hợp con, đạt đạt tới kết trường hợp có kích thước lớn tổng quát hơn, cuối đạt tới lời giải toán ban đầu 2013-09-22 Dao Thanh Tinh Introduction (8) Ví dụ 2: Xét tốn: Cho túi T có sức chứa 10kg đồ vật: 1) 5kg, trị giá 4$ 2) 4kg, trị giá 10$ 3) 6kg, trị giá 3$ Xếp đồ vật vào túi để có giá trị lớn nhất? 2013-09-22 Dao Thanh Tinh Introduction (9) Túi có kích thước từ đến 10, sử dụng đồ vật thứ 0!!!! Giá trị lớn túi: 2013-09-22 đv 10 0 0 0 0 0 0 Dao Thanh Tinh 10 Knapsack Problem (10) Constructing the Optimal Solution i j= 10 11 12 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 2 2 5 7 7 2 4 4 7 9 2 4 6 8 9 2 10 12 12 14 14 14 14 14 18 remark: if B[i,j] > B[i-1,j] if B[i,j] = 2013-09-22   item ith is used in optimal solution: items 1, 2, ,i are not used capacity amount j is not used Dao Thanh Tinh 55 Knapsack Problem (11) Constructing the Optimal Solution j = W; i = n; k = 0; while (B[i,j]>0) { while (B[i,j] = B[i  1,j]) i = i  1; k = k + 1; cs[k] = i; j = j  a[i]; i = i 1; } Output cs[k], cs[k-1], , cs[1] – số đồ vật dùng 2013-09-22 Dao Thanh Tinh 56 Knapsack Problem (12) Bounded Knapsack Problem n  v i x i  max i 1 n  wi xi  W , i 1 2013-09-22  i  1, , , n : x i  {0 , 1, , c i } Dao Thanh Tinh 57 Knapsack Problem (13) Bounded Knapsack Problem n  v i x i  max i 1 n  wi xi  W , i 1  i  1, , , n : x i  { , 1, , c i } for (i=0; i≤n;i++) B[i,0] = 0; for (j=0; j≤W;j++) B[0,j] = 0; for (i=1; i≤n;i++) for (j=1; j≤W;j++) if (wi0}; 2013-09-22 Dao Thanh Tinh 58 Knapsack Problem (14) Unbounded Knapsack Problem n  v i x i  max i 1 n  wi xi  W , i 1 2013-09-22  i  1, , , n : x i  {0 , 1, } Dao Thanh Tinh 59 Knapsack Problem (15) Unbounded Knapsack Problem n v i x i  max i 1 n  wi xi  W ,  i  1, , , n : x i  { , 1, } i 1 for (i=0; i≤n;i++) B[i,0] = 0; for (j=0; j≤W;j++) B[0,j] = 0; for (i=1; i≤n;i++) for (j=1; j≤W;j++) if (wi0}; 2013-09-22 Dao Thanh Tinh 60 Knapsack Problem (16) Ví dụ 4: Cho tập S có n đồ vật với giá trị a1, a2, , an Chia S thành phần cho độ lệch tổng giá trị đồ vật hai phần 2013-09-22 Dao Thanh Tinh 61 Knapsack Problem (17) Lời giải: Kí hiệu M = a1 + a2 + + an T = [M/2] Giải toán túi với sức chứa túi T, khối lượng đồ vật {a1, a2, , an}, giá trị đồ vật {a1, a2, , an} Kí hiệu S1 tập đồ vật đưa vào túi S2 = S\S1 Hai phần {S1, S2} lời giải tốn ví dụ Chứng minh: Kí hiệu T1 tổng đồ vật thuộc S1, T2 tổng đồ vật thuộc S2: T1  T  T2, T1+T2 = M Giả sử có phương án tốt chia đồ vật thành phần V1, V2:  V2 – V1 < T2 – T1 Cộng vế BĐT: V1 – V2  V1 + V2 = 2T, suy V1  T (*) Cộng vế BĐT: T1– T2 < V1 – V2 T1+ T2 = V1 + V2, suy T1 < V1 Nghĩa là: T1< V1 T Điều vơ lý T1 tổng lớn không T! 2013-09-22 Dao Thanh Tinh 62 Knapsack Problem (18) Chứng minh: Kí hiệu T1 tổng đồ vật thuộc S1, T2 tổng đồ vật thuộc S2: T1  T  T2, T1+T2 = M Giả sử có phương án tốt chia đồ vật thành phần V1, V2:  V2 – V1 < T2 – T1 Cộng vế BĐT: V1 – V2  V1 + V2 = 2T, suy V1  T (*) Cộng vế BĐT: T1– T2 < V1 – V2 T1+ T2 = V1 + V2, suy T1 < V1 Nghĩa là: T1< V1 T Điều vơ lý T1 tổng lớn khơng T! 2013-09-22 Dao Thanh Tinh 63 Bài tập Bài toán: Giả thiết A = {A1, A2, , An} tập hợp giá trị đồng xu, Ai  Z+,  i {1, 2, , n} Có thể giả thiết A1 < A2 < < An loại giá trị có số đồng xu khơng hạn chế Cho số ngun dương T, xây dựng cơng thức tính số đồng xu cần lấy để đạt giá trị T (Có thể xét hai trường hợp: A1=1 A1>1) 2013-09-22 Dao Thanh Tinh 64 Bài tập (2) Xét trường hợp A1 = Kí hiệu: F (j) số đồng xu phải dùng để có tổng j, F(j)  j Để dùng loại đồng xu thứ i: Ai  j dùng khi: F( j-Ai) + < F( j ) Dùng đến loại đồng xu thứ i dùng k đồng xu loại thứ i k*Ai  j Khi này: F( j-k*Ai) + k < F( j ) F(j) := F(j-k*Ai) + k D(j) := i; Ghi nhớ thực dùng đến loại thứ i 2013-09-22 Dao Thanh Tinh 65 Bài tập (3) Do có cơng thức: F(j) = { { F( j-k*Ai) + k : k = 0, , j/Ai }: i=1, , n} 2013-09-22 Dao Thanh Tinh 66 Bài tập (4) Truy ngược: For i:=1 to n SL[i] := j:= T While j > i := D(j) While (j>0) & ( F(j) = F(j – Ai) SL[i] = SL[i] + j = j – Ai Output SL[1], , SL[n]; 2013-09-22 Dao Thanh Tinh 67 Bài tập (5) Xét trường hợp A1 > 1? 2013-09-22 Dao Thanh Tinh 68 Bài tập (6) Cho dãy biểu thức f = A1 * A2 * * An-1 * An đó, Aj số nguyên dương, j = 1, 2, , n Hãy thay phép toán “*” phép “+” “” để f có giá trị khơng âm nhỏ 2013-09-22 Dao Thanh Tinh 69 ... khởi tạo định ban đầu, định phải thiết lập chiến lược tối ưu trạng thái hình thành từ định trước Chiến lược tối ưu: số bước lựa chọn dường không tốt tổng hợp trình phải tốt 2013-09-22 Dao Thanh...Introduction Quy hoạch động:  Thường dùng để giải toán tối ưu;  Phân rã toán thành tốn con; hình thành lời giải từ toán... mang lại g(y), giá trị lại ay, 0

Ngày đăng: 24/09/2020, 04:17

TỪ KHÓA LIÊN QUAN