初始化的細節問題 我們看到的求最優解的揹包問題題目中, 事實上有兩種不太相同的問法。 有的題 目要求「恰好裝滿揹包」時的最優解,有的題目則並沒有要求必須把揹包裝滿。 一種區別這兩種問法的實現方法是在初始化的時候有所不同。
如果是第一種問法, 要求恰好裝滿揹包,那麼在初始化時除了 f[0] 為 0 其它 f[1…v] 均設為 - ∞,這樣就可以保證最終得到的 f[n] 是一種恰好裝滿揹包的最 優解。
如果並沒有要求必須把揹包裝滿,而是只希望**盡量大,初始化時應該將 f[0…v] 全部設為 0。
為什麼呢?可以這樣理解: 初始化的 f 陣列事實上就是在沒有任何物品可以放入 揹包時的合法狀態。 如果要求揹包恰好裝滿, 那麼此時只有容量為 0 的揹包可能 被價值為 0 的 nothing 「恰好裝滿」,其它容量的揹包均沒有合法的解,屬於未 定義的狀態,它們的值就都應該是 - ∞了。如果揹包並非必須被裝滿,那麼任何 容量的揹包都有乙個合法解「什麼都不裝」,這個解的價值為 0,所以初始時狀 態的值也就全部為 0 了。-----------------------來自《揹包九講》
揹包問題 初始化
初始化的細節問題 我們看到的求最優解的揹包問題題目中,事實上有兩種不太相同的問法。有的題目要求 恰好裝滿揹包 時的最優解,有的題目則並沒有要求必須把揹包裝滿。一種區別這兩種問法的實現方法是在初始化的時候有所不同。如果是第一種問法,要求恰好裝滿揹包,那麼在初始化時除了f 0 為0,其它f 1 v 均設...
01揹包初始化要點
我們看到的求最優解的揹包問題題目中,事實上有兩種不太相同的問法。有的題目要求 恰好裝滿揹包 時的最優解,有的題目則並沒有要求必須把揹包裝滿。一種區別這兩種問法的實現方法是在初始化的時候有所不同。如果是第一種問法,要求恰好裝滿揹包,那麼在初始化時除了f 0 為0其它f 1.v 均設為 這樣就可以保證最...
01揹包的兩種初始化問題
前段時間看dp中的01揹包問題,大部分內容都好理解,網上也有很多關於這個問題的部落格,但自己提出的問題沒有得到解決,只好苦思冥想,以求進一步理解。首先是問題描述 給定n種物品和一揹包,物品i的重量是wi,其價值是pi,揹包的容量是m,問如何選 擇裝入揹包中的物品 總價值最大?這裡有兩種情況一種是將揹...