是否必须“在多项式时间内完成问题的减少”才能完成NP?

时间:2013-02-09 15:55:03

标签: algorithm np-complete np

对于NP完成的问题,它必须属于NP类,并且必须有多项式时间算法将其减少为NP完全问题。

现在如果我们只有一个指数时间算法来减少怎么办?这个问题仍然会被称为NP完全吗?还是没有这样的问题?

编辑:也请告诉我是否有任何此类问题,如果存在,那么它属于哪个类?

4 个答案:

答案 0 :(得分:4)

如果在多项式时间内可以将其他NP问题减少到它,则只能考虑NP完全。这是一个有用的定义的原因是,如果我们找到一个多项式时间算法,它会自动为所有NP问题提供一个。如果我们允许指数时间减少,但找到了减少问题的多项式时间解决方案,那实际上并没有帮助我们解决我们减少它的问题。

希望这有帮助。

答案 1 :(得分:1)

Are such problems NP-complete?

没有。证明:

让你的问题= A。

让NP完全问题减少到(至少)指数时间= B.“至少”因为你可以做额外的琐碎工作来达到指数时间,或遵循一个不太理想的方法(到证明不存在更有效的减少策略可能相当困难,可能在与N!= NP相同的球场中,到目前为止,尚未解决)。

由于B是NP完全的,"every problem in NP is reducible to B in polynomial time"

如果A在NP中,则必须将多项式时间简化为B.但它不是,因此它不在NP中。

因此它不能完全是NP。

更简单地说 - NP中的任何问题都需要最多和A一样难,而且显然不是。

Are there such problems?

我认为可能会出现这样一个问题:(递归knapsack)(我不介意一两条评论是否由某人聪明)

给定一组具有权重和值的项目,找到具有最大总权重A的子集,并且还找到具有一些最大总权重C的该子集内的子集,其目标是最大化值的总和。这两个子集。

To which class does it belong?

我很确定没有专门针对这些的名称,但我认为其中很多(或全部?)都是NP-hard。证明:(至少对于上述问题,假设这是一个问题)

定义:"A problem H is NP-hard if ... (an NP-complete problem) L can be solved in polynomial time by an oracle machine with an oracle for H"

让我们假设上面的例子是这样一个问题,让它= H.所以假设我们有一个可以在恒定时间内解决上述问题的oracle。但是背包问题只是上面的一个特例(C = 0),因此我们可以使用oracle在恒定时间(多项式时间)内解决背包问题。

不确定是否一般地证明它。但任何给定的问题都可以通过减少上述问题的给定问题或通过减少给定问题减少到背包问题的问题来解决。

编辑:哦,看起来他们确实有一个名字,2-EXPTIME

答案 2 :(得分:0)

复杂性理论的完整性总是针对特定类型的约简来定义,有时从上下文中已知,因此未明确提及。由于理查德拉斯特在答案中给出的原因,着名的NP完全问题被定义为完全用于多项式时间缩减。

您可以为EXPTIME减少定义NP完全问题的类,但这个类不是很有趣。如果允许减少指数时间,则它可以完全解决原始问题并产生目标问题的平凡实例。这意味着NP中的每个问题都可以通过这种类型的约简减少到其他所有问题,因此NP中的每个问题都是NP-完全的指数时间减少。

简短版本:如果减少(至少据称)弱于减少的问题类别,减少只会很有趣。

答案 3 :(得分:0)

正如之前提到的那样,你的问题的方向是错误的。如果NP中的每个问题B都可以在多项式时间内减少到问题A,则问题A是NP完全的。所以我假设你的问题是减少是否必须是多项式而不是指数时间。

如果允许指数时间减少:采取以下决策问题X:“输入是否是?”这几乎是最简单的决策问题。如果输入为YES,则答案为YES,如果输入不是YES,则答案为NO。但NP中的每个问题都可以在指数时间内减少到问题X.当然我们不想把问题X称为“NP-complete”。因此,不允许指数时间减少,因为允许它会使术语“NP完全”完全没有意义。