Trong ngành khoa học máy tính, quy hoạch động là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con gối nhau (overlapping subproblem) và cấu trúc con tối ưu (optimal substructure). Nhà toán học Richard Bellman đã phát minh phương pháp quy hoạch động vào năm 1953. Ngành này đã được thành lập như là một chủ đề về kỹ nghệ và phân tích hệ thống đã được tổ chức IEEE thừa nhận.
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 .. .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... ơ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... 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ơ,