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

Chuong 4 Qui Hoach Dong

14 59 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

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 60 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

Chương 4

Quy hoạch động

Trang 2

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 đó

Trang 3

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

Trang 4

4.2 Các bước giải bài toán qui hoạch động

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

Trang 5

4.2 Các bước giải bài toán qui hoạch động

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

Trang 6

4.2 Các bước giải bài toán qui hoạch động

Phương pháp quy hoạch động sẽ không đem lại hiệu quả trong các trường hợp sau:

 Không tìm được công thức truy hồi

 Số lượng các bài toán con cần giải quyết và lưu giữ kết quả là rất lớn

 Sự kết hợp lời giải của các bài toán con chưa chắc cho lời giải bài toán ban đầu

Trang 7

4.3 Một số ví dụ

Tính tổ hợp C(n,k)

Ta có thể áp dụng công thức sau:

C(j, i) = 1 nếu i = 0 hoặc i = j C(j, i) = C(i, j – 1) + C(j-1, i-1) nếu 0 < i < j Với i = 3, j = 5 ta có bảng như sau:

j = 0 1 2 3 4 5

i = 0 1 1 1 1 1 1

Trang 8

4.3 Một số ví dụ

For j:=0 to n do C[0, j] :=1;

For i := 1 to k do

Begin

C[i, j] := 1;

For j = i +1 to n do

C[i, j] := C[i, j-1] + C[i-1, j -1]; End;

Trang 9

4.3 Một số ví dụ

Tìm dãy con chung dài nhất

Cho hai dãy số nguyên (a1,a2, ,am), (b1,b2, ,bn) Tìm dãy con chung có độ dài lớn nhất của hai dãy trên (coi dãy không có số nguyên nào là dãy con của mọi dãy và có độ dài bằng 0).

Dãy (a1,a2,…,ai) và (b1,b2,…,aj) với 0 ≤ i ≤ m và 0

≤ j ≤ n

Gọi L(i, j) là độ dài lớn nhất của dãy con chung của hai dãy (a1,a2,…,ai) và (b1,b2,…,aj)

Do đó L(n, m) là độ dài lớn nhất của dãy con chung

Trang 10

4.3 Một số ví dụ

Tìm dãy con chung dài nhất

L(0, j) = 0 với mọi j

L(i, j) = max {L(i, j-1), L(i-1, j)} (2)

L(i, j) = 1 + L(i-1, j-1) (3)

Trang 11

4.3 Một số ví dụ

Bài toán xếp balô

Một chiếc ba lô có thể chứa được một khối lượng W

Có n loại đồ vật được đánh số từ 1, 2, …, n mỗi đồ vật loại i có khối lượng ai và có giá trị ci (i = 1, 2, …, n) Cần xếp các đồ vật vào balô để ba lô có giá trị lớn nhất có thể được Giả sử rằng mỗi loại đồ vật không hạn chế.

Ví dụ: n = 3, W = 10

Trang 12

4.3 Một số ví dụ

Trang 13

4.3 Một số ví dụ

For v := 1 to n do

Begin

A[1,v].f = (v div a1)* c1; A[1, v].x = v div a1; End;

For k := 2 to n do

For v:= 1 to n do Begin

A[k, v].f = max {f(k-1, v - xkak) + xkck}; A[k, v].x = X ;

Trang 14

14

Ngày đăng: 29/08/2019, 19:58

TỪ KHÓA LIÊN QUAN

w