1. Trang chủ
  2. » Kinh Tế - Quản Lý

Chuyên đề quy hoạch động

16 393 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 16
Dung lượng 7,49 MB

Nội dung

 Ba tính chất của bài toán tối ưu có thể giải bằng quy hoạch động: Bài toán lớn có thể phân rã thành những bài toán con đồng dạng, những bài toán con đó có thể phân rã thành những bài

Trang 2

QUY HOẠCH ĐỘNG

Chuyên đề:

Giảng viên: NGUYỄN DUY DŨNG

Đơn vị: Trường THPT Chuyên Hà Tĩnh

Số ĐT: 0913141823

Email: Dungduyit83@gmail.com

Trang 3

QUY HOẠCH ĐỘNG LÀ GÌ?

Bài toán

Quy hoạch động (dynamic programming)

Chia để trị (divide & conquer)

Thiết kế thuật toán

Mô hình hóa Lập trình Kiểm thử

Vét cạn (exhaustive search) Tham lam

(greedy)

Trang 4

Ba tính chất của bài toán tối ưu có thể giải bằng quy hoạch động:

Bài toán lớn có thể phân rã thành những bài toán con đồng dạng, những bài

toán con đó có thể phân rã thành những bài toán nhỏ hơn nữa …(recursive

form).

Lời giải tối ưu của các bài toán con có thể sử dụng để tìm ra lời giải tối ưu

của bài toán lớn (optimal substructure)

Hai bài toán con trong quá trình phân rã có thể có chung một số bài toán

con khác (overlapping subproblems).

Có thể hiểu

Hai tính chất đầu tiên  Có thể giải bằng chia để trị và đệ quy

Tính chất thứ ba  Đặc trưng cho tính hiệu quả của quy hoạch động

BÀI TOÁN QUY HOẠCH ĐỘNG

Ba tính chất của bài toán tối ưu có thể giải bằng quy hoạch động:

Bài toán lớn có thể phân rã thành những bài toán con đồng dạng, những bài

toán con đó có thể phân rã thành những bài toán nhỏ hơn nữa …(recursive

form).

Lời giải tối ưu của các bài toán con có thể sử dụng để tìm ra lời giải tối ưu

của bài toán lớn (optimal substructure)

Hai bài toán con trong quá trình phân rã có thể có chung một số bài toán

con khác (overlapping subproblems).

Có thể hiểu

Hai tính chất đầu tiên  Có thể giải bằng chia để trị và đệ quy

Tính chất thứ ba  Đặc trưng cho tính hiệu quả của quy hoạch động

Trang 5

 Bài toán giải theo phương pháp quy hoạch động gọi là

bài toán quy hoạch động.

 Công thức phối hợp nghiệm của các bài toán con để có nghiệm của bài toán lớn gọi là công thức truy hồi của quy hoạch động.

 Tập các bài toán nhỏ nhất có ngay lời giải để từ đó giải quyết các bài toán lớn hơn gọi là cơ sở quy hoạch động

 Không gian luu trữ lời giải các bài toán con để tìm cách phối hợp chúng gọi là bảng phương án của quy hoạch động.

CÁC KHÁI NIỆM

 Bài toán giải theo phương pháp quy hoạch động gọi là

bài toán quy hoạch động.

 Công thức phối hợp nghiệm của các bài toán con để có nghiệm của bài toán lớn gọi là công thức truy hồi của quy hoạch động.

 Tập các bài toán nhỏ nhất có ngay lời giải để từ đó giải quyết các bài toán lớn hơn gọi là cơ sở quy hoạch động

 Không gian luu trữ lời giải các bài toán con để tìm cách phối hợp chúng gọi là bảng phương án của quy hoạch động.

Trang 6

 Giải tất cả các bài toán cơ sở (thông thường rất dễ),

luu các lời giải vào bảng phương án.

 Dùng công thức truy hồi phối hợp những lời giải của

những bài toán nhỏ đã lưu trong bảngphương án để

tìm lời giải của những bài toán lớn hơn và lưu chúng

vào bảng phuong án, chotới khi bài toán ban đầu tìm được lời giải.

 Dựa vào bảng phương án, truy vết tìm ra nghiệm tối

ưu.

CÁC BƯỚC GIẢI BÀI TOÁN QUY HOẠCH ĐỘNG

 Giải tất cả các bài toán cơ sở (thông thường rất dễ),

luu các lời giải vào bảng phương án.

 Dùng công thức truy hồi phối hợp những lời giải của

những bài toán nhỏ đã lưu trong bảngphương án để

tìm lời giải của những bài toán lớn hơn và lưu chúng

vào bảng phuong án, chotới khi bài toán ban đầu tìm được lời giải.

 Dựa vào bảng phương án, truy vết tìm ra nghiệm tối

ưu.

Trang 7

 Nhập vào dãy số nguyên

A=(a 1 ,a 2 …a n ) n≤10 6

, |a i |≤ 10 9

Tìm một đoạn con gồm các phần tử liên tiếp trong dãy A có tổng lớn nhất.

Dữ liệu vào file: DAYSO.INP

Dữ liệu ra file: DAYSO.OUT

- Ghi 1 giá trị duy nhất là tổng lớn nhất tìm được

Ghi chú: Tên chương trình: DAYSO.PAS

BÀI TOÁN 1

A=(a 1 ,a 2 …a n ) n≤10 6

, |a i |≤ 10 9

Tìm một đoạn con gồm các phần tử liên tiếp trong dãy A có tổng lớn nhất.

Dữ liệu vào file: DAYSO.INP

Dữ liệu ra file: DAYSO.OUT

- Ghi 1 giá trị duy nhất là tổng lớn nhất tìm được

Ghi chú: Tên chương trình: DAYSO.PAS

Trang 8

 Thuật toán đầu tiên: O(n 3 )

 Thuật toán O(n 2 ):

- Gọi S[i] là tổng các phần tử từ a 1 tới a i

Bài toán cơ sở: dãy không có phần tử nào

S[0]=0

Công thức tính S: S[i] = S[i-1]+a[i]

Kết quả bài toán:

Res = Max{S[j]-S[i-1]; i: 1 n, j: i n }

BÀI TOÁN 1

 Thuật toán đầu tiên: O(n 3 )

 Thuật toán O(n 2 ):

- Gọi S[i] là tổng các phần tử từ a 1 tới a i

Bài toán cơ sở: dãy không có phần tử nào

S[0]=0

Công thức tính S: S[i] = S[i-1]+a[i]

Kết quả bài toán:

Res = Max{S[j]-S[i-1]; i: 1 n, j: i n }

Trang 9

 Thuật toán O(n):

- Gọi S[i] là tổng các phần tử từ a 1 tới a i

Bài toán cơ sở: dãy rỗng S[0] = 0

Công thức tính S: S[i] = S[i-1]+a[i]

Gọi min là giá trị S nhỏ nhất từ 1 tới i-1

Kết quả bài toán

Xét i: 1 n Res = max{S[i] - min}

BÀI TOÁN 1

 Thuật toán O(n):

- Gọi S[i] là tổng các phần tử từ a 1 tới a i

Bài toán cơ sở: dãy rỗng S[0] = 0

Công thức tính S: S[i] = S[i-1]+a[i]

Gọi min là giá trị S nhỏ nhất từ 1 tới i-1

Kết quả bài toán

Xét i: 1 n Res = max{S[i] - min}

Trang 10

 Nhập vào dãy số nguyên

A=(a1,a2 …an) n≤106

, |ai |≤ 109

Nối a1 vào sau an ta được 1 vòng tròn số

Tìm một đoạn con gồm các phần tử liên tiếp trong vòng tròn số có tổng lớn nhất.

Dữ liệu vào file: DAYSO.INP

- Dòng 1: chứa số nguyên dương N

- Dòng 2: chứa N số nguyên của dãy A

Dữ liệu ra file: DAYSO.OUT

- Ghi 1 giá trị duy nhất là tổng lớn nhất tìm được

Ghi chú: Tên chương trình: DAYSO.PAS

BÀI TOÁN 2

 Nhập vào dãy số nguyên

A=(a1,a2 …an) n≤106

, |ai |≤ 109

Nối a1 vào sau an ta được 1 vòng tròn số

Tìm một đoạn con gồm các phần tử liên tiếp trong vòng tròn số có tổng lớn nhất.

Dữ liệu vào file: DAYSO.INP

- Dòng 1: chứa số nguyên dương N

- Dòng 2: chứa N số nguyên của dãy A

Dữ liệu ra file: DAYSO.OUT

- Ghi 1 giá trị duy nhất là tổng lớn nhất tìm được

Ghi chú: Tên chương trình: DAYSO.PAS

Trang 11

 Nhập vào dãy số nguyên

A=(a1,a2 …an) n≤103

, |ai |≤ 109

Tìm dãy chỉ số I = (i1, i2, , ik) dài nhất

1  i1 < i2 < < ikn

a[i1] < a[i2] < < a[ik]

Ví dụ A = ( 1 , 2 , 3 , 8, 9, 4 , 5 , 6 , 2, 3, 9 , 10 )

BÀI TOÁN 3: DÃY CON TĂNG DÀI NHẤT

 Nhập vào dãy số nguyên

A=(a1,a2 …an) n≤103

, |ai |≤ 109

Tìm dãy chỉ số I = (i1, i2, , ik) dài nhất

1  i1 < i2 < < ikn

a[i1] < a[i2] < < a[ik]

Ví dụ A = ( 1 , 2 , 3 , 8, 9, 4 , 5 , 6 , 2, 3, 9 , 10 )

Trang 12

Thêm 2 phần tử a0 = -; an+1 = +

Dãy con đơn điệu tăng dài nhất chắc chắn bắt đầu ở a0 và kết thúc ở an+1

Tổng quát hóa: Làm thế nào xác định dãy con đơn điệu tăng dài nhất kết thúc tại a i?

 Kiểm tra 3 tính chất của bài toán QHĐ

Dãy con tăng kết thúc tại a i được thành lập bằng cách lấy a i ghép vào sau một

dãy con tăng kết thúc tại a j nào đó đứng trước a i

Nếu xác định được tất cả các dãy con tăng dài nhất đứng trước a i thì có thể xác

định được dãy con tăng dài nhất kết thúc tại a i

BÀI TOÁN 3: DÃY CON TĂNG DÀI NHẤT

Thêm 2 phần tử a0 = -; an+1 = +

Dãy con đơn điệu tăng dài nhất chắc chắn bắt đầu ở a0 và kết thúc ở an+1

Tổng quát hóa: Làm thế nào xác định dãy con đơn điệu tăng dài nhất kết thúc tại a i?

 Kiểm tra 3 tính chất của bài toán QHĐ

Dãy con tăng kết thúc tại a i được thành lập bằng cách lấy a i ghép vào sau một

dãy con tăng kết thúc tại a j nào đó đứng trước a i

Nếu xác định được tất cả các dãy con tăng dài nhất đứng trước a i thì có thể xác

định được dãy con tăng dài nhất kết thúc tại a i

Trang 13

Bài toán cơ sở: L[0]=1

Công thức truy hồi:

L[i] = max{L[j]: (j<i)&(aj<ai)}+1

dãy con tăng dài nhất

BÀI TOÁN 3: DÃY CON TĂNG DÀI NHẤT

Công thức truy hồi:

L[i] = max{L[j]: (j<i)&(aj<ai)}+1

dãy con tăng dài nhất

- 11 22 66 33 44 99 55 77 +

A

L

(n2) Giải pháp cải tiến?

2 3

Trang 14

Để vui Tết Trung thu cho các cháu ban tổ chức thành phố X quyết định phát quà cho mỗi cháu bằng cách tổ chức một trò chơi trên lưới ô vuông như sau:

Vẽ một hình chữ nhật kích thước M x N ô vuông, Các dòng được đánh số từ 1 đến

M, các cột được đánh số từ 1 đến N (các số được đánh từ trên xuống dưới và từ trái sang phải) Mỗi ô nằm trên giao của dòng i và cột j được gọi là ô (i,j) ghi một số nguyên dương A[i,j], (1 ≤ i ≤ M, 1 ≤ j ≤ N) chính là số món quà trên ô đó Có thể di chuyển từ

một ô sang ô thuộc cột bên phải cùng dòng hoặc chênh lệch một dòng.

phát) đến một ô nào đó thuộc cột N (cột đích) sao cho tổng các số của ô đi qua là lớn nhất vì đó chính là tổng số món quà mà các cháu được nhận

N ≤ 100) M dòng tiếp theo mỗi dòng N số nguyên A[i,j] (0 ≤ A[i,j] ≤ 50) của hình chữ nhật

Dòng thứ nhất ghi tổng các số của các ô đi qua

Dòng thứ hai ghi N số là chỉ số dòng các ô đi qua từ cột 1 đến cột N

Ví dụ:

BÀI TOÁN 4: QUÀ TẾT TRUNG THU

Để vui Tết Trung thu cho các cháu ban tổ chức thành phố X quyết định phát quà cho mỗi cháu bằng cách tổ chức một trò chơi trên lưới ô vuông như sau:

Vẽ một hình chữ nhật kích thước M x N ô vuông, Các dòng được đánh số từ 1 đến

M, các cột được đánh số từ 1 đến N (các số được đánh từ trên xuống dưới và từ trái sang phải) Mỗi ô nằm trên giao của dòng i và cột j được gọi là ô (i,j) ghi một số nguyên dương A[i,j], (1 ≤ i ≤ M, 1 ≤ j ≤ N) chính là số món quà trên ô đó Có thể di chuyển từ

một ô sang ô thuộc cột bên phải cùng dòng hoặc chênh lệch một dòng.

phát) đến một ô nào đó thuộc cột N (cột đích) sao cho tổng các số của ô đi qua là lớn nhất vì đó chính là tổng số món quà mà các cháu được nhận

N ≤ 100) M dòng tiếp theo mỗi dòng N số nguyên A[i,j] (0 ≤ A[i,j] ≤ 50) của hình chữ nhật

Dòng thứ nhất ghi tổng các số của các ô đi qua

Dòng thứ hai ghi N số là chỉ số dòng các ô đi qua từ cột 1 đến cột N

3 5

Trang 15

Kỹ thuật rào

Xây dựng bảng 2 chiều KQ

KQ[i,j]=Max{KQ[i-1,j-1], KQ[i,j-1], KQ[i+1,j-1]}+a[i,j]

Với 1 ≤ i ≤ M, 1 ≤ j ≤ N Truy vết: lần ngược theo kết quả

BÀI TOÁN 4: QUÀ TẾT TRUNG THU

Kỹ thuật rào

Xây dựng bảng 2 chiều KQ

KQ[i,j]=Max{KQ[i-1,j-1], KQ[i,j-1], KQ[i+1,j-1]}+a[i,j]

Với 1 ≤ i ≤ M, 1 ≤ j ≤ N Truy vết: lần ngược theo kết quả

Trang 16

0 0 0 0

0

0

0

5

6 15 10 5

Mảng A

Bảng phương án KQ

0 0

0

0 0

7 11 24 27 50

8 16 26 45 46

6 23 33 38 47

Bảng phương án KQ

Ngày đăng: 30/03/2014, 23:58

HÌNH ẢNH LIÊN QUAN

Bảng phương án KQ - Chuyên đề quy hoạch động
Bảng ph ương án KQ (Trang 16)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w