2017-02-14 51 views
1

如果一直在進行一個項目,我遇到以下情形: 需要從一組M中選擇N = 2個框,而M> N的權重總和最好,但有2個限制:算法具有2個限制的揹包

  • 我們無法選擇相同的框顏色
  • 我們無法選擇相同的方塊ID

箱子自帶的頂部

最高的權重排序0

enter image description here

我選擇(RED1,請分享幫助)與樸素算法開始權重最高RED1,我們無法添加藍天,因爲我們有相同的ID 1,並且不可能添加RED2以及因爲我們有紅色盒子在10的權重下,我們以11的總權重結束,但如果我們選擇Blue1,我們可以以18.9結束Red2 N可以大於2.

這是一個NP難題嗎? 更好的運行時間效率的解決方案嗎?

+0

有不同顏色的數量或不同ID的數量的限制嗎? – Codor

+0

2邊界/限制,結果應該有不同的顏色和不同的ID,並且可能有最高的權重總和 – ohadsas

回答

0

我們可以用複雜O(2^color * 2^id * M * N)或回溯+修剪使用DP解決方案的複雜O(M choose N)

所以它取決於有多大的約束爲M,N,顏色和編號。

+0

我認爲分裂取決於N和M的大小N大多數是9-10,M正在改變,可以是10 - 350 – ohadsas

+0

,N <= 10且M <= 350,回溯+高效修剪可以解決您的問題。 – algojava