Chương 4 Quy hoạch động 4.1. Khái niệm Quy hoach động là kỹ thuật từ dưới lên (bottom – up). Quy hoạch động là phương pháp thiết kế giải thuật cho các bài toán có tính chất: Quyết định ở bước thứ i phụ thuộc vào quyết định ở các bước trước đó. Yêu cầu quan trọng của phương pháp này là thiết lập được hệ thức mô tả giữa dữ liệu sẽ thu được ở bước sau và dữ liệu đã thu đượsc ở bước trước đó. 4.2. Các bước giải bài toán qui hoạch động Tìm nghiệm của các bài toán con (các trường hợp riêng) đơn giản nhất. Tìm ra công thức (hoặc quy tắc) xây dựng nghiệm của bài toán con thông qua nghiệm của bài toán con cỡ nhỏ hơn. Tạo ra một bảng để lưu giữ các nghiệm của bài toán con, sau đó tính nghiệm của bài toán con theo công thức đã tìm ra và lưu vào bảng. Từ bảng đã làm đầy, tìm cách xây dựng nghiệm của bài toán. Phạm vi áp dụng của phương pháp quy hoach động: Các bài toán tối ưu: tìm chuỗi con chung dài nhất, bài toán ba lô, tìm đường đi ngắn nhất, bài toán ôtômát với số phép biến đổi ít nhất,… Các bài toán có công thức truy hồi.
Chương Quy hoạch động 4.1 Khái niệm Quy hoach động kỹ thuật từ lên (bottom – up) Quy hoạch động phương pháp thiết kế giải thuật cho tốn có tính chất: Quyết định bước thứ i phụ thuộc vào định bước trước Yêu cầu quan trọng phương pháp thiết lập hệ thức mô tả liệu thu bước sau liệu thu đượsc bước trước 4.2 Các bước giải tốn qui hoạch động Tìm nghiệm tốn (các trường hợp riêng) đơn giản Tìm công thức (hoặc quy tắc) xây dựng nghiệm tốn thơng qua nghiệm tốn cỡ nhỏ Tạo bảng để lưu giữ nghiệm tốn con, sau tính nghiệm tốn theo cơng thức tìm lưu vào bảng Từ bảng làm đầy, tìm cách xây dựng nghiệm toán 4.2 Các bước giải toán qui hoạch động Phạm vi áp dụng phương pháp quy hoach động: Các tốn tối ưu: tìm chuỗi chung dài nhất, tốn ba lơ, tìm đường ngắn nhất, tốn ôtômát với số phép biến đổi nhất,… Các tốn có cơng thức truy hồi 4.2 Các bước giải toán qui hoạch động Phạm vi áp dụng phương pháp quy hoach động: Các tốn tối ưu: tìm chuỗi chung dài nhất, tốn ba lơ, tìm đường ngắn nhất, tốn ôtômát với số phép biến đổi nhất,… Các tốn có cơng thức truy hồi 4.2 Các bước giải toán qui hoạch động Phương pháp quy hoạch động không đem lại hiệu trường hợp sau: Khơng tìm cơng thức truy hồi Số lượng toán cần giải lưu giữ kết lớn Sự kết hợp lời giải toán chưa cho lời giải toán ban đầu 4.3 Một số ví dụ Tính tổ hợp C(n,k) Ta áp dụng cơng thức sau: C(j, i) = i = i = j C(j, i) = C(i, j – 1) + C(j-1, i-1) < i < j Với i = 3, j = ta có bảng sau: j= i= 1 1 1 1 10 10 4.3 Một số ví dụ For j:=0 to n C[0, j] :=1; For i := to k Begin C[i, j] := 1; For j = i +1 to n C[i, j] := C[i, j-1] + C[i-1, j -1]; End; 4.3 Một số ví dụ Tìm dãy chung dài Cho hai dãy số nguyên (a1,a2, ,am), (b1,b2, ,bn) Tìm dãy chung có độ dài lớn hai dãy (coi dãy số nguyên dãy dãy có độ dài 0) Dãy (a1,a2,…,ai) (b1,b2,…,aj) với ≤ i ≤ m ≤ j ≤ n Gọi L(i, j) độ dài lớn dãy chung hai dãy (a1,a2,…,ai) (b1,b2,…,aj) Do L(n, m) độ dài lớn dãy chung a b 4.3 Một số ví dụ Tìm dãy chung dài L(0, j) = với j L(i, 0) = với i (1) Nếu i j bj L(i, j) = max {L(i, j-1), L(i-1, j)} Nếu i j = bj L(i, j) = + L(i-1, j-1) (2) (3) 10 4.3 Một số ví dụ Bài tốn xếp balơ Một ba lơ chứa khối lượng W Có n loại đồ vật đánh số từ 1, 2, …, n đồ vật loại i có khối lượng có giá trị ci (i = 1, 2, …, n) Cần xếp đồ vật vào balơ để ba lơ có giá trị lớn Giả sử loại đồ vật không hạn chế Ví dụ: n = 3, W = 10 i ci 11 12 11 4.3 Một số ví dụ 12 4.3 Một số ví dụ For v := to n Begin A[1,v].f = (v div a1)* c1; A[1, v].x = v div a1; End; For k := to n For v:= to n Begin A[k, v].f = max {f(k-1, v - xkak) + xkck}; A[k, v].x = Xmax; End; 13 14 ... lưu vào bảng Từ bảng làm đầy, tìm cách xây dựng nghiệm toán 4. 2 Các bước giải toán qui hoạch động Phạm vi áp dụng phương pháp quy hoach động: Các tốn tối ưu: tìm chuỗi chung dài nhất, tốn ba... với số phép biến đổi nhất,… Các tốn có cơng thức truy hồi 4. 2 Các bước giải toán qui hoạch động Phạm vi áp dụng phương pháp quy hoach động: Các tốn tối ưu: tìm chuỗi chung dài nhất, tốn ba.. .4. 1 Khái niệm Quy hoach động kỹ thuật từ lên (bottom – up) Quy hoạch động phương pháp thiết kế giải thuật