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

Bài giảng Cơ sở lập trình nâng cao - Chương 8: Phương pháp thiết kế thuật toán − quy hoạch động

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 (282.31 KB, 10 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

CƠ SỞ LẬP TRÌNH


NÂNG CAO



Biên soạn: Ths.Tôn Quang Toại




TPHCM, NĂM 2013



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

PHƯƠNG PHÁP THIẾT KẾ


THUẬT TOÁN



− QUY HOẠCH ĐỘNG −



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Nội dung



• Giới thiệu


• Quy hoạch động và Chia để trị


• Quy hoạch động và Bài tốn tối ưu
• Ngun lý tối ưu của Bellman


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4></div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Giớ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


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Giớ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


– Thuật toán Dijkstra


– Thuật toán Ford – Bellman


– Thuật toán Floyd


– Thuật toán Viterbi


– Thuật toán huấn luyện Adaptive Critic


– Thuật toán Cocke – Younger – Kasami


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Quy hoạch động và Chia để trị



Bài tốn con trùng lắp


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

Phươ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


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Phươ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


toán nhỏ hơn và độc lập nhau


– [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ỏ


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Phương pháp



• Hạn chế của phương pháp Chia để trị:


– Khi dùng phương pháp chia để trị để chia 1


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 tốn con được yêu cầu


giải nhiều lần


</div>

<!--links-->

×