動態規劃之鋼條切割

2022-07-27 02:03:13 字數 844 閱讀 2270

假定某公司購買長鋼條,將其切割為短鋼條進行**(切割工序本身沒有成本支出)。考慮求出最佳的切割方案。

**一段長度為i的鋼條**如下表:

長度i**p11

2538

49510

617717

820924

1030

長度為n的鋼條共有2的n-1次方種不同的切割方案,因為在距離鋼條左端i處,總是可以選擇切割或不切割。所以普通方法(遞迴)解決此問題的時間複雜度為2的指數級別。

普通方法效率很低,是因為它反覆求解相同的子問題

動態規劃則仔細安排求解順序,對每個子問題只求解一次,並將結果儲存下來。如果隨後再次需要求解此子問題的解,只需查詢儲存的結果,而不必重新計算。因此,動態規劃是付出額外的記憶體空間來節省計算時間。而時間上的節省可能是非常巨大的。

動態規劃與分治方法相似,都是通過組合子問題的解來求解原問題。

適合使用動態規劃方法求解的最優化問題應該具備兩個要素:

1.最優子結構:如果乙個問題的最優解包含其子問題的最優解,就稱此問題具有最優子結構輕型紙。

2.子問題重疊:問題的遞迴演算法會反覆地求解相同的子問題,而不是一直產生新的子問題。

public class cut ;

method(p, 10);

}public static void method(int p, int n)}}

for (int count = 0;count <= n;count++)

}}

演算法主體部分為兩層for迴圈,因此用動態規劃解決此問題的時間複雜度為n的平方。

動態規劃之鋼條切割

最近學習動態規劃,做個匯報吧!不同長度的鋼條,賣出時收益不同 1,1 2,5 3,8 4,9 5,10 6,17 7,17 8,20 9,24 10,30 問題就是我有一根鋼條,怎樣可以收益最大?這裡只寫思想,不寫過程,專注於演算法 一根鋼條,假如10公尺,我可以整體去賣,也可以切斷幾段去賣,那就用...

動態規劃 鋼條切割

一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為i的短鋼條的 為pi。那給定一段長度為n的鋼條和乙個 表pi,求鋼條的切割方案使得收益rn最大。如乙個pi如下 長度i12 3456 78910 pi15 891017 1720 2430 在距離鋼條左端i長度處,我們總是可以選擇切割或者...

動態規劃 鋼條切割

這是演算法導論動態規劃的乙個例子,自己實現了一下 給定乙個長度為n英吋的鋼條和乙個 表pi i 1,2 n 求切割鋼條方案,使得銷售收益rn最大。注意,如果長度為n的鋼條 pn足夠大,則最優解可能就不需要切割。分析 如下 include include include using namespace...