Programming là phương pháp để giải quyết một lớp lớn các bài toán tối ưu thỏa theo nguyên lý tối ưu Bellman.. Giới thiệu[r]
Trang 1CƠ SỞ LẬP TRÌNH
NÂNG CAO
Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com
TPHCM, NĂM 2013
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2PHƯƠNG PHÁP THIẾT KẾ
THUẬT TOÁN − QUY HOẠCH ĐỘNG −
Chương 8
Trang 3Nội dung
• Giới thiệu
• Quy hoạch động và Chia để trị
• Quy hoạch động và Bài toán tối ưu
• Nguyên lý tối ưu của Bellman
• Sơ đồ cài đặt
• Các ví dụ
Trang 4Hình ảnh
Trang 5Giới thiệu
• Quy hoạch động – Dynamic Programming do nhà toán
học người Mĩ Richard
Bellman (1920 – 1984) phát minh vào năm 1957
• Quy hoạch động – Dynamic Programming là phương
pháp để giải quyết một lớp
lớn các bài toán tối ưu thỏa theo nguyên lý tối ưu Bellman
Trang 6Giới thiệu
• Dựa trên phương pháp Quy hoạch động, nhiều thuật toán nổi tiếng đã ra đời: Một số thuật toán nổi tiếng dựa trên phương pháp Quy hoạch động
– …
Trang 7Quy hoạch động và Chia để trị
Bài toán con trùng lắp (Overlapping subproblems)
Trang 8Phương pháp
• Phương pháp Quy hoạch động gần giống với phương pháp Chia để trị
• Cả hai phương pháp dùng để giải quyết bài toán bằng cách kết hợp các lời giải
của các bài toán con
Trang 9Phương pháp
• Phương pháp Chia để trị: Là phương
pháp từ trên xuống dưới (top – down) với
ý tưởng:
– [Divide] Chia bài toán lớn thành những bài
– [Solve] Giải quyết các bài toán nhỏ
– [Combine] Kết hợp các lời giải bài toán nhỏ
để hình thành lời giải bài toán lớn
Trang 10Phương pháp
• Hạn chế của phương pháp Chia để trị:
bài toán lớn thành các bài toán con, các bài toán con lại chia nhỏ thành nhiều bài toán con nhỏ hơn nữa, …
Đôi khi một bài toán con được yêu cầu giải nhiều lần
Chương trình chạy chậm