Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
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
1
QUY HOẠCH ĐỘNGQUY HOẠCH ĐỘNG
Chuyên đề:
2
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
FaceBook: Dungduyit83
QUY HOẠCHĐỘNG LÀ GÌ?QUY HOẠCHĐỘNG LÀ GÌ?
Bài toán
Quy hoạch động
(dynamic programming)
Chia để trị
(divide & conquer)
3
Thiết kế thuật toán
Mô hình hóa
Xây dựng cấu trúc dữ liệu
Lập trình
Kiểm thử
Vét cạn
(exhaustive search)
Tham lam
(greedy)
Cách khác
Ba tính chất của bài toán tối ưu có thể giải bằng quyhoạ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 QUYHOẠCH ĐỘNGBÀI TOÁN QUYHOẠCH ĐỘNG
Ba tính chất của bài toán tối ưu có thể giải bằng quyhoạ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 quyhoạch động
4
Bài toán giải theo phương pháp quyhoạchđộng gọi là
bài toán quyhoạ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ở quyhoạ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ỆMCÁC KHÁI NIỆM
Bài toán giải theo phương pháp quyhoạchđộng gọi là
bài toán quyhoạ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ở quyhoạ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.
5
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 QUYHOẠCH ĐỘNGCÁC BƯỚC GIẢI BÀI TOÁN QUYHOẠ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.
6
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ò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 1BÀI TOÁN 1
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ò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
7
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 1BÀ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 }
8
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 1BÀ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}
9
Nhập vào dãy số nguyên
A=(a
1
,a
2
…a
n
). n≤10
6
,
|a
i
|≤ 10
9
Nối a
1
vào sau a
n
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 2BÀI TOÁN 2
Nhập vào dãy số nguyên
A=(a
1
,a
2
…a
n
). n≤10
6
,
|a
i
|≤ 10
9
Nối a
1
vào sau a
n
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
10
. 1 QUY HOẠCH ĐỘNGQUY HOẠCH ĐỘNG Chuyên đề: 2 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 FaceBook: Dungduyit83 QUY HOẠCH ĐỘNG. 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 ĐỘNGBÀ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ằ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 4 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