Về kiến thức: - Biết cách giải bài toán phương pháp quy hoạch động.. Về kỹ năng: Nhận biết và áp dụng được phương pháp quy hoạch động vào giải quyết 1 số bài toán.. Tiến trình bài học
Trang 1GV: Nguyễn Thị Ngọc Diễm
Ngày soạn :
Tiết:
§: QUY HOẠCH ĐỘNG – BÀI TOÁN BA LÔ
I MỤC ĐÍCH, YÊU CẦU
1 Về kiến thức:
- Biết cách giải bài toán phương pháp quy hoạch động
2 Về kỹ năng: Nhận biết và áp dụng được phương pháp quy hoạch động vào giải quyết
1 số bài toán
3 Về thái độ:
II CHUẨN BỊ
1.Chuẩn bị của giáo viên: Giáo án, tài liệu tham khảo
2 Chuẩn bị của học sinh: Vở ghi chép
III HOẠT ĐỘNG DẠY HỌC
1 Ổn định tổ chức: (1 phút)
- Ổn định lớp
- Kiểm tra sĩ số
2 Kiểm tra bài cũ : không
3 Tiến trình bài học mới:
Hoạt động của GV Hoạt động
của HS
Thời
Hoạt động 1: Nhắc
lại bài cũ
GV yêu cầu HS nhắc
lại các bước để giải
bài toán quy hoạch
động
Hoạt động 3: Bài
toán
GV cho ví dụ bài
toán: Ba lô
- Yêu cầu HS
xác định Input,
Output của bài
toán
HS chú ý lắng nghe
và trả lời câu hỏi, nhận xét
HS trả lời
Bài: QUY HOẠCH ĐỘNG – BÀI TOÁN BA LÔ
1 Các bước chính giải thuật quy hoạch động
- Bước 1: Tổ chức gán dữ liệu, khởi gán giá trị ban đầu
- Bước 2: Tạo bảng: chia bài toán thành nhiều bài toán con, lưu nghiệm tối ưu từng bài toán vào trong bảng (Tìm công thức đệ qui (truy hồi))
- Bước 3: Tra bảng: Dựa vào bảng trên tìm nghiệm tối ưu bài toán
2 Bài toán
Cho n món hàng (n <= 50) Món hàng thứ
i có khối lượng là A[i] (số nguyên) và 1 ba
lô có khả năng chứa là W
Yêu cầu chọn những món hàng nào để bỏ vào ba lô sao cho tổng khối lượng các món hàng đã chọn là lớn nhất nhưng không vượt quá khối lượng W cho trước
- Input:
n W A[1] A[2] A[3] … A[n]
- Output:
Trang 2Yêu cầu HS gán dữ
liệu cần thiết cho bài
toán
GV hướng dẫn HS
thuật toán tạo bảng
HS theo dõi
và nhận xét
+ Tổng khối lượng của các món hàng
bỏ vào ba lô
+ Khối lượng các món hàng được chọn
Ví dụ:
balo.inp Lý giải
4 9
2
3
5
1
n W A[1]
A[2]
A[3]
A[4]
Balo.out Lý giải
9
1
5
3
Khối lượng tối ưu
Danh sách các món hàng được chọn
a Tổ chức dữ liệu
- Mảng A[i]: lưu khối lượng các món hàng (i ∈ [1,n])
- Mảng F[k,v]: tổng khối lượng tối ưu của
ba lô khi có k món hàng đầu tiên và khối lượng tối đa của ba lô là v (k ∈ [1,n]), (v
∈ [1,W])
b Tạo bảng
- Trường hợp đơn giản chỉ có 1 món hàng Tính F[1,v] Nếu A[1] <= v, thì chọn => F[1,v] = A[1];
- Ngược lại (A[1] > v) không chọn => F[1,v] = 0;
Giả sử tính được F[k-1,v] đến dòng k-1, (v ∈ [1,W]) Khi có thêm món hàng thứ k để chọn, cần tính F[k,v] ở dòng k, (v ∈ [1,W]) Nếu chọn món hàng thứ k (v >= A[k]), có 2 trường hợp:
- TH1: Nếu chọn thêm món hàng thứ k bỏ vào ba lô thì:
F[k,v]= F[k-1,v- A[k]] + A[k];
- TH2: Ngược lại, không chọn món hàng thứ
k, thì: F[k,v] = F[k-1,v];
Trong 2 trường hợp 1 và 2 chọn trường hợp nào có F[k,v] lớn hơn
Trang 3Ví dụ GV yêu cầu 1
HS lên bảng thực
hiện GV nhận xét
GV hướng dẫn HS
thuật toán tra bảng
HS thực hiện việc tạo bảng
HS chú ý lắng nghe
và ghi chép
- Ngược lại (v < A[k]), thì không chọn => F[k,v]= F[k-1,v];
Công thức đệ quy:
if ( v >= A[k]) F[k,v]= max(F[k-1,v- A[k]] + A[k], F[k-1,v])
else F[k,v]= F[k-1,v];
Ví dụ:
k A[k]\v 0 1 2 3 4 5 6 7 8 9
1 2 0 0 2 2 2 2 2 2 2 2
2 3 0 0 2 3 3 5 5 5 5 5
3 5 0 0 2 3 3 5 5 7 8 8
4 1 0 1 2 3 4 5 6 7 8 9
c Tra bảng tìm các món hàng được chọn
Nếu F[k,v]= F[k-1,v] thì món hàng thứ k không được chọn
F[n, W] là tổng khối lượng tối ưu của các món hàng bỏ vào ba lô
- Bước 1: Bắt đầu từ k = n, v = W;
- Bước 2: Tìm trong cột v, từ dưới lên, tìm dòng k sao cho F[k,v]> F[k-1,v], đánh dấu món hàng thứ k được chọn Chon[k] = true;
- Bước 3: v = F[k,v] – A[k] Nếu v> 0 thì thực hiện bước 2, ngược lại thực hiện bước
4
- Bước 4: Dựa vào mảng Chon để in các món hàng được chọn
k A[k] Khối lượng còn lại
9
Khối lượng các món hàng được chọn: 1 5 3 Tổng khối lượng: 9
Bài toán dự phòng: (bài tập về nhà) Cho n = 4 W = 10
A[1] = 5, A[2] = 2, A[3] = 4, A[4] = 3
Trang 4Tạo bảng:
k A[k]\v 1 2 3 4 5 6 7 8 9 10
1 5 0 0 0 0 5 5 5 5 5 5
2 2 0 2 2 2 5 5 7 7 7 7
3 4 0 2 2 4 5 6 7 7 9 9
4 3 0 2 3 4 5 6 7 8 9 10
Tra bảng:
k A[k] Khối lượng còn lại
10
Khối lượng các món hàng được chọn: 3 2 5 Tổng khối lượng: 10
IV DẶN DÒ
- Xem lại các bước giải bài toán quy hoạch động
- Làm bài tập về nhà
V RÚT KINH NGHIỆM