[英]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
背包問題進行變型,並通過動態編程來解決這兩個變化:
W
物品) 我已經開始用這兩個更改對解決方案進行編碼,但是現在,我想得更多了,因為“最優子結構”屬性不成立,恐怕無法用動態編程來解決。
例如,如果W=3
並且項i,j,k
是最優解,則對於W=2
, i,j
不一定是最優解(根據上述總分的計算)。
有誰知道如何通過動態編程而不是O(N^W)
蠻力解決此問題?
謝謝
您的問題是NP難的,這意味着幾乎可以肯定沒有快速的多項式時間算法可以解決它,因為沒有人能夠提出多項式時間算法來解決NP難的問題。 要查看NP硬度,假設您有一個圖形,其中節點是您的索引,並且如果i和j之間有邊,則將i,j之間的分數定義為1,否則為0。然后,如果可以,在多項式時間內,找到最多包含W個節點的節點的最大分數子集,然后可以在多項式時間內找出圖中是否有大小為W的團。 這是一個NP完全問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.