下面的答案表明,该问题的一种特殊情况可以在多项式时间内解决。这并不能完全回答帖子中的问题,但是可以对NP硬度证明可能需要的内容提供一些见解,并可能引起对该帖子的更多兴趣...
观察。 帖子中的问题有一个算法,在给定每个是整数的情况下,该算法在n和D = ∑ i c i的时间多项式中运行。cinD=∑ici
证明草图。
修复任何输入其中瓦特,Ç ∈ [R Ñ +和(WLOG)
小号= { 1 ,2 ,... ,Ñ }。稍微改写这个问题,我们的目标是要找到中号⊆ 小号尺寸的ķ最大化Σ 我∈ 中号 W¯¯ 我Ç 我(S,w,c,K)w,c∈Rn+S={1,2,…,n}M⊆SK。∑i∈Mwici∑i∈Mci−∑i∈Mwi
考虑下面的动态程序。对于任何整数与0 ≤ d 1 ≤ d 2 ≤ d,0 ≤ ķ ≤ ķ,和ķ ≤ 米≤ Ñ,定义
φ (d 1,d 2,ķ ,米)= 最大{ Σ 我∈ 中号瓦特(d1,d2,k,m)0≤d1≤d2≤D0≤k≤Kk≤m≤n
所需的解是 max d ϕ(d,d,K,n)。
ϕ(d1,d2,k ,m )= max { ∑我∈ 中号w一世(c一世/ 天1个− 1 ):M ⊆ [ m ] ,| 中号| =ķ,∑我∈ 中号C一世= d2}。
最大值dϕ (d,d,K,n )
将的可能解划分为包含m和不包含m的解,我们得到递归
ϕ (d 1,d 2,k ,m )= max { ϕ (d 1,d 2 − c m,k − 1 ,m − 1 )+ w mϕ (d1个,d2,k ,m )米
我们将边界案例作为练习。
ϕ (d1个,d2,k ,m )= max { ϕ (d1个,d2− c米,k − 1 ,m − 1 )+ w米(c米/ 天1个− 1 )ϕ (d1个,d2,k ,m − 1 )。
子问题的数量为,并且每个递归的右侧都可以在恒定的时间内求值,因此该算法在n和D中以时间多项式运行。◻Ø (ñ2d2)ñd □
结果。 除非P = NP,否则显示NP硬度的任何减小都将减小为不是n中的多项式的情况。dñ
备注。除非我错了,有也是在后的问题PTAS,根据四舍五入的的,然后使用动态规划。但是,正如帖子中所问的那样,PTAS的存在与问题是否是NP难题没有直接关系。w一世
w一世= c一世一世中号ķ