1. 程式人生 > >6.2 動態規劃解題的一般思路

6.2 動態規劃解題的一般思路

人人為我,就是已知指向人人,未知指向我,由已知推向未知的情況 

 來自演算法圖解:

揹包問題:

最長公共子串:

最長公共子序列:

1. 動態規劃可幫助你在給定約束條件下找到最優解。在揹包問題中,你必須在揹包容量給定的情況下,偷到價值最高的商品。

2. 在問題分解為彼此獨立且離散的子問題時,就可使用動態規劃來解決。

3. 每種動態規劃解決方案都涉及到網格。

4. 單元格中的值通常就是你要優化的值。在前面的揹包問題中,單元格中的值為商品的價值。

5. 每個單元格都是一個子問題,因此你應考慮如何將問題分成子問題,這有助於你找出網格的座標軸。

小結:

 需要在給定約束條件下優化某種指標時,動態規劃很有用。

 問題可分解為離散子問題(無後效性)時,可使用動態規劃來解決。

 每種動態規劃解決方案都涉及網格。

 單元格中的值通常就是你要優化的值。

 每個單元格都是一個子問題,因此你需要考慮如何將問題分解為子問題。

 沒有放之四海皆準的計算動態規劃解決方案的公式。