簡體   English   中英

如何減少0〜1背包的時間復雜度

[英]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 + 1n商品放入背包,您仍然可以得到V - sum{c[i+1..n]}的容量,因此您不需要解決子問題i (限於容量小於1..i商品。

如果您需要更正式的答案,請詳細描述問題以及所使用的算法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM