Tải bản đầy đủ (.pdf) (4 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (546 KB, 4 trang )

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

×