我想总结一些关于复杂性的问题。哪些可以在多时间解决?
I)找到给定图的最大子完整图= Clique问题
II)在
n
个对象中选择一些元素,其中包含值和权重 给出,使得所选元素的权重之和不大 比特定界限和最大值总和III)查找图的所有周期
IV)找到一次完全访问每个顶点的路径=确定图是哈密顿量
我认为IV是哈密顿路径是NP-Complete,III是NP-Hard和NP-Complete,II是NP-Complete,我是NP-Complete。所以 0 这些在多时间内解决了。
谁能以更好的方式更清楚地了解NP-Hard和NP-完成这些问题?我是对的吗?
答案 0 :(得分:1)
正如您所指出的,部分(1),(2)和(4)都是着名的NP难题(最大集团,背包和汉密尔顿路径)。然而,这些问题不在NP中,因为NP由决策问题(答案是“是”或“否”)的问题组成,而这些问题不是决策问题。
第(3)部分更加细致入微。这个问题是一个计数问题 - 目标是确定某种类型的对象存在多少 - 而不是决策问题,因此它不能在NP中。据我所知,我们并不知道这个问题有多难。众所周知,如果它可以在多项式时间内求解,则P = NP(详见this link),具体证据表明它也是NP难的。
如果P≠NP,那么这些都不能在多项式时间内求解。如果这些中的任何一个可以在多项式时间内求解,那么P = NP。他们都是NP难的。
希望这有帮助!
答案 1 :(得分:0)
因为我被问及参考资料,所以我将评论作为答案发布:
II)在n个对象中选择一些元素,其中包含值和权重 给出,使得所选元素的权重之和不大 比特定界限和最大值总和
这是knapsack problem,如果权重不是输入大小的一部分,则它是多时间的,即解决方案只是n的多项式。
它在O(n * W)
中运行,其中W
是允许的最大权重。当然,如果W
与n
相关,则可能不是多项式,例如W = 2^n
。
你可以在这里阅读:
http://en.wikipedia.org/wiki/Knapsack_problem#Dynamic_programming_in_advance_algorithm
http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Dynamic/knapsackdyn.htm