我正试图为这个问题想出一个合理的算法:
(例如,你可以把一个蓝色和绿色的球放进蓝色盒子或绿色盒子里,但不能放进红色盒子里。)
我做了一些研究,这似乎类似于背包问题,也类似于匈牙利算法可以解决的问题,但我似乎不能把它简化为任何一个问题。
我只是好奇,对于这种类型的问题,是否有某种动态规划算法,可以在多项式时间内求解,或者它只是变相的旅行商问题。如果我知道最多有X种颜色会有帮助吗?非常感谢任何帮助。如果有帮助的话,我也可以用变量名来形式化这个问题。谢了!
下面是一个简单的例子:
最大重量:5
球:
1红(持有1球)
1蓝(持有2球)
1个果岭(持有1球)
总重量:4(1+1+1+1)
注意:尽管绿/红/蓝球比红/蓝球更有价值,但它的重量会让我们超过极限。
编辑:
这至少和背包问题一样复杂--考虑一个所有球都是红色的,只有一个红色盒子的情况。
在具有相同颜色组合的球必须具有相同的重量和值的情况下,考虑一个情况,当你有红/蓝、红/绿等球和只有一个红框。
什么是伪多项式时间?它与多项式时间有何不同?一些在伪多项式时间内运行的算法具有运行时,如O(nW)(用于0/1背包问题)或O(√n) (用于审判庭);为什么不算作多项式时间?
上篇的标记算法中,谈到这个O(K)的算法是一个指数级复杂度的算法,其实对那道题目本身来说,K是固定的,既然不是输入,那也无所谓复杂度,之所以有O(K)这种说法,是把K当做一种输入了,这是看待输入的角度问题,倒不用深究。考虑一个更简化的算法(python代码,设输入n是正整数): def f(n): i = 0 while i < n: i += 1
在Phrudhvi对这个问题的优雅回答中,什么是伪多项式时间?它与多项式时间有何不同?在许多其他要点中,我们指出,在时间复杂度的真实形式定义下,其示例算法的TC在x中是指数的。 我理解答案中的所有内容,除了这里的这一点。在答案中,他的例子alg是O(n^4)。然后,他指出TC的形式定义是基于表示n所需的位数。因此,我希望他说TC将是O(x),其中x是位数。相反,他说它是O(2^4x)。 我知道我为
我在考虑换硬币时想到了以下问题,但我不知道一个有效的(伪多项式时间)算法来解决它。我想知道是否有任何伪多项式时间的解决方案,或者一些经典的文献,我遗漏了。 硬币变化问题有一个著名的伪多项式时间动态规划解决方案,它问以下问题: 取硬币仅此,将此硬币指定为具有值 取硬币仅此,将此硬币指定为具有值 取硬币和,将其赋值为具有值和,或和,它们分别被认为是相同的方式 取硬币,和,并将其赋值为具有值,和 我遇到
本文向大家介绍多项式时间近似方案,包括了多项式时间近似方案的使用技巧和注意事项,需要的朋友参考一下 多项式时间近似方案 我们可以找到一些关于NP完全问题的多项式时间解,例如0-1背包问题或子集和问题。这些问题在现实世界中非常流行,因此必须有一些方法来解决这些问题。 多项式时间近似方案(PTAS)是一种用于优化问题的近似算法。对于0-1背包问题,有一个伪多项式解决方案,但是当值较大时,该解决方案不可
在讲座中,我们已经考虑了背包问题:有n个项的正权值为w1,..、wn和值v1,..vn和容量为W的背包。问题的可行解是使总重量不超过W的物品的子集。目标是找到一个最大可能总价值的可行解。对于权值均为正整数的情形,我们讨论了求解时间为O(nW)的背包问题的动态规划解法。 a)假设所有项目的权值都是正整数,而不是权值。项目的权值可以是任意的正实数。描述一个解决背包问题的动态规划算法,如果所有项目的值都