對背包問題的理解

來源:互聯網
上載者:User

背包問題(Knapsack
problem) 是一種組合最佳化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放置於給定背包中。(定義摘自Wikipedia)

1. 關於0-1背包問題,有界背包問題,無界背包問題的定義

0-1,界限 j 都是針對某個特定的物品數量而定的界限。例如0-1就是指任何物品最多有一個,你只能選擇放進背包或者不放進背包。 

***有界並不是對物品的總數量進行約束

2. 0-1背包問題求解(動態規划算法)

我們將在總重量不超過w的前提下,前j種物品的總價格所能達到的最高值定義為m[i,
w]。

  •  if  (the
    new item is more than the current weight limit)
  •  if .

解釋以上公式:

首先公式的前提是:假設你當前只有i件物品(如果你總共有n件物品的話,取前i件),假設已知m[i-1, w], 求最高價值

演算法分為兩種情況:第一種情況,新加進來的物品pi,超過了約束總重量w,所以只能放棄pi;第二個情況,可以將pi放進背包,但是靠考慮放進去和不放進去哪種方案總價值大。

演算法開始輸入:m[n, W]; n為貨品總數量,W為背包容載

演算法複雜度: O(n*W)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.