Quy hoạch động - Bài toán Ba lô

4 4.2K 31
Quy hoạch động - Bài toán Ba lô

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

Thông tin tài liệu

1 Sở GD – ĐT Bến Tre Trường: THPT Chuyên Bến Tre GV: 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 điểm Nội dung bài học 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: 2 Hoạt động của GV Hoạt động của HS Thời điểm Nội dung bài học Yê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. 3 Hoạt động của GV Hoạt động của HS Thời điểm Nội dung bài học Ví 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 4 1 8 = 9 – 1 3 5 3 = 8 – 5 2 3 0 = 3 – 3 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. 4 Hoạt động của GV Hoạt động của HS Thời điểm Nội dung bài học Tạ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 4 3 7 = 10 – 3 2 2 5 = 7 – 2 1 5 0 = 5 – 5 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 . 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. 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. §: 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ày đăng: 09/02/2015, 04:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan