减少概念中一个非常复杂的问题

时间:2011-08-16 10:53:50

标签: algorithm complexity-theory np-complete computation-theory reduction

我研究了很多关于减少但我有一个不好的问题: 我从CLRS那里得到了这个:

“......通过”减少“解决问题A来解决问题B,我们使用B的”容易度“来证明A的”容易度“。”

我从Christos H. Papadimitriou的“计算复杂性”中得到这个:

“......如果B减少到A,问题A至少和问题B一样难。”

我对这两个概念感到困惑: 当我们使用easyiness时,我们说问题X减少到问题Y并且如果我们有Y的多项式时间算法并且减少过程在多项式时间内完成那么问题X在多项式时间内是可解的并且X比Y更容易或者至少不是比Y更难。

但是当我们使用硬度时,我们说问题X减少到问题Y并且Y比X更容易或者至少不比X更难。

我真的很困惑,请帮助我。 特别感谢。

3 个答案:

答案 0 :(得分:5)

我想你可能错过了第一个引用“减少A到B”,第二个引用说“将B减少到A”。

如果X减少到Y,意味着Y可以用来求解X,那么X并不比Y更难。那是因为多项式 - 复杂度降低被认为是“自由的”,所以通过将X减少到Y,我们发现了用Y解决方案来解决X.

所以,在第一句话中,如果A减少到B而B很容易,那就意味着A很容易(严格来说,这并不难)。

第二个引用使用逻辑矛盾:如果B减少到A而B很难,那么A必须很难(严格来说,这并不容易)。证明:如果A很容易,则B很容易(如上所述,但A和B相反)。 B并不容易,因此A并不容易。

你的陈述,“我们说问题X减少到问题Y和Y比X更容易,或者至少不比X更难”是错误的。 X可以减少到Y(也就是说,我们可以用Y来解决X),即使实际上 的Y比X更难。所以我们可以将加法(X)减少到一个特殊的一些NP难问题(Y)的情况,通过定义一个在多项式时间内构造NP-hard问题实例的方案,其解是两个输入数的和。这并不意味着加入是NP难的,只是因为我们为自己制造了不必要的困难。 使用减少以执行添加是不明智的,因为有更好的方法来添加。好吧,假设P!= NP,那就更好了。

答案 1 :(得分:2)

将减少视为减少某个类中问题的证据,而不是减少问题本身。这种关系更多地与逻辑相关而不是复杂性。

答案 2 :(得分:1)

理论就是这个。

你有一个算法来解决你知道可以在多项式时间内解决的问题A.

如果可以将问题B转换为可以通过问题A解决的符号,然后在多项式时间内将结果转换回问题B的符号,那么解决问题B也将在多项式时间内 - 如总时间只是两个多项式的加法 - 因此没有更难。