[英]how to understand about reducing time complexity on 0~1 knapsack
至於0〜1背包問題,
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
c [i]表示第i種商品的成本,w [i]表示第i種商品的價值。
我讀了一個文檔,說時間復雜度可以優化,尤其是當V較大時。
i=1...N
v=V...0
可以更改為
i=1...n
bound=max{V-sum{w[i..n]},c[i]}
v=V...bound
這是什么意思?V(袋的最大值)如何減去w [i](商品的價值)之和?
真的感到困惑,還是這個文檔有問題?
您沒有說要優化誰的復雜性。 您在使用動態編程嗎? 如果是這樣,這可能意味着您不需要為f[i][v]
的較小值計算f[i][v]
,因為您不需要這些值即可找到最佳值。
即使將所有從i + 1
到n
商品放入背包,您仍然可以得到V - sum{c[i+1..n]}
的容量,因此您不需要解決子問題i
(限於容量小於1..i
商品。
如果您需要更正式的答案,請詳細描述問題以及所使用的算法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.