簡體   English   中英

解決背包的變體,其中物品的價值取決於麻袋中已有的物品

[英]Solving a variation of the knapsack in which the value of an item depends on items that are already in the sack

我正在嘗試解決以下問題:
我有一組N項目,其中每對項目都有一個共同得分,我需要選擇W項目的組合,以使總得分最高。
例如,項目i,j,k總分是

score(i,j) + score(i,k) + score(j,k).

為了避免經歷所有N^W可能的組合,我考慮過對0-1背包問題進行變型,並通過動態編程來解決這兩個變化:

  1. 將所有權重設置為等於1(因此最終我將在麻袋中得到W物品)
  2. 我將根據要檢查的當前物料以及此時已放入袋中的物料來“即時”計算值,而不是每個物料都具有一個恆定值的數組。

我已經開始用這兩個更改對解決方案進行編碼,但是現在,我想得更多了,因為“最優子結構”屬性不成立,恐怕無法用動態編程來解決。
例如,如果W=3並且項i,j,k是最優解,則對於W=2i,j不一定是最優解(根據上述總分的計算)。
有誰知道如何通過動態編程而不是O(N^W)蠻力解決此問題?

謝謝

您的問題是NP難的,這意味着幾乎可以肯定沒有快速的多項式時間算法可以解決它,因為沒有人能夠提出多項式時間算法來解決NP難的問題。 要查看NP硬度,假設您有一個圖形,其中節點是您的索引,並且如果i和j之間有邊,則將i,j之間的分數定義為1,否則為0。然后,如果可以,在多項式時間內,找到最多包含W個節點的節點的最大分數子集,然后可以在多項式時間內找出圖中是否有大小為W的團。 這是一個NP完全問題。

暫無
暫無

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

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