1. Trang chủ
  2. » Giáo án - Bài giảng

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

4 4,2K 31

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 546 KB

Nội dung

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 1

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

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 2

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

Trang 3

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

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 4

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

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

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

w