一些背景。 上面的问题是有限制的背包问题。可以在伪多项式时间内(仍然是NP-Hard)解决带或不带限制的最有效的背包问题解决方案。有关某些变体,请参见 https://en.wikipedia.org/wiki/Knapsack_problem#Definition。此变体中的第一个限制是放置在背包(箱)中的物品(球)的值无关紧要。然后,问题仅限于将物品放入背包的时间。最初的问题要求将最有价值的物品放置在尽可能短的时间内。此版本的另一个限制是权重和所有其他参数均为整数。感兴趣的限制是权重w j + 1 jwj将除以所有。注意:分数背包问题可以在多项式时间内解决,但不能为原始问题提供最实用的解决方案。此问题使用均分的整数(无理性解)。也许看到背包问题有什么大不了的?。wj+1j
主要问题可能应该是“当与对应的多项式限制时,这个问题是否仍然是NP-Hard ,因为问题在有界时不那么复杂(在P中)?我之所以说是因为问题可以被示出为P中时为界和NP-硬时不一定划分 i w j w j w j + 1 w j w j + 1 w j j w jwjiwjwjwj+1均匀地(权重只是随机的),所有限制将这个问题的复杂性限制在这两个条件下。这些条件(1.没有项目值限制的随机权重背包问题和2.没有项目值限制的可分权重背包问题)在降低复杂度方面相互抵消,因为权重的商本身可能是随机的(尤其是在无界时),因此需要进行指数时间计算(将在下面的示例中显示)。另外,由于除以,对于每个,的大小指数增长wjwj+1wjj。这是因为,代替使用随机加权的项(单位重量可能都限于100或50甚至10以下的单位重量的球),该限制导致时间复杂度取决于的位数,与试用部门,这是指数级的。wj
因此,是的,即使对所有都除以,上述整数程序仍然保持NP-hard的。w j + 1 jwjwj+1j 这很容易观察到。
例1:设,为2的幂。由于常数2,如您的示例所示,整个问题在二次时间内得到了解决。权重不是随机的,因此可以有效地解决计算问题。w pn=1wp
示例2:将定义为,其中是与对应的质数,这样。这是适用的,因为将除以所有。我们得到每个是直到的所有素数的乘积。单位权重的值增加,因为这样的:。既然有限制的(〜瓦特Ĵ * p p Ĵ p = 2 ,Ĵ = 1 :p = 3 ,Ĵ = 2 ,p = 5 ,Ĵ = 3 ,p = 7 ,Ĵ = 4 ,。。。,P ,J w j w j + 1 j w j j 1 ,wj+1wj∗ppjp=2,j=1:p=3,j=2,p=5,j=3,p=7,j=4,...,P,Jwjwj+1jwjjp j j l o g (j )1,2,6,30,210,2310,30030,...pjjlog(j),通过质数定理),因为商都是质数,我们得到了NP-Intermediate的复杂度。
示例3:让定义为,其中是从2到无穷大的随机选择质数,对应于。这适用于此问题,因为将除以所有。我们得到前5个商(从2随机降到无穷),分别为。我们看到即使在第5球,重量也有11位数字。幸运的是,第五商是2,而不是或更大的质数。 瓦特Ĵ * - [R p - [R p Ĵ 瓦特Ĵ 瓦特Ĵ + 1 Ĵ 101 ,2657 ,7 ,3169 ,2 10 100wj+1wj∗RpRpjwjwj+1j101,2657,7,3169,210100
上面的示例三是当不被对应于的多项式限制(随机权重)时发生的情况。时间复杂度是指数,NP-Hard。从某些角度来看,只需将所有权重加起来,看看它们是否合适。但是,没有比通过尝试每个子集查看其权重大得多的方法来使权重可整,从而显着更快地解决它。经过几十个球之后,您仍进入了数万亿个子集或数万亿个数字的领域。我wji