動(dòng)態(tài)規(guī)劃(Dynamic programming)
是一種在數(shù)學(xué)、計(jì)算機(jī)科學(xué)和經(jīng)濟(jì)學(xué)中使用的,通過把原問題分解為相對簡單的子問題的方式求解復(fù)雜問題的方法。 動(dòng)態(tài)規(guī)劃算法是通過拆分問題,定義問題狀態(tài)和狀態(tài)之間的關(guān)系柬泽,使得問題能夠以遞推(或者說分治)的方式去解決慎菲。
什么是動(dòng)態(tài)規(guī)劃
動(dòng)態(tài)規(guī)劃(Dynamic Programming)對于子問題重疊的情況特別有效嫁蛇,因?yàn)樗鼘⒆訂栴}的解保存在表格中,當(dāng)需要某個(gè)子問題的解時(shí)露该,直接取值即可睬棚,從而避免重復(fù)計(jì)算!
動(dòng)態(tài)規(guī)劃是一種靈活的方法解幼,不存在一種萬能的動(dòng)態(tài)規(guī)劃算法可以解決各類最優(yōu)化問題(每種算法都有它的缺陷)抑党。所以除了要對基本概念和方法正確理解外,必須具體問題具體分析處理撵摆,用靈活的方法建立數(shù)學(xué)模型底靠,用創(chuàng)造性的技巧去求解。