为什么正式程序证明NP完全性?

时间:2014-04-05 19:45:23

标签: algorithm proof np-complete

我知道如何证明问题X是NP-Complete。

  1. 显示X∈NN。
  2. 显示Y≤ p X:显示问题已知为NP-Complete的Y可以在多项式时间内减少到X.
  3. 但是,我坚持为什么这个程序证明X是NP-Complete。有人能以一种相对简单的方式解释这个吗?

1 个答案:

答案 0 :(得分:0)

NP完全问题被定义为NP-Hard和NP(定义)的问题,所以你基本上需要显示两件事:

  1. 问题出在NP(与你的1相同)
  2. 问题是NP-Hard
  3. 您可以通过2种方式显示(2):

    1. 直接证明NP中的每个问题都有减少(很难做到)
    2. 显示任何已知NP-Hard问题的减少到您的问题。
    3. 问题是,缩减是transitive,所以如果你证明某些NP-Hard问题(让L1)减少到你的问题(让它为L2 }),你基本上表明从NP中的每个LL1(NP-Hard的定义),从L1L2(你的减少)因此,这些减少的链(它本身就是多项式,关于多项式的整齐的东西),是从NP中的每个LL2(你的问题)的减少。

      换句话说,由于每个L <=p L1 <=p L2L,因此每L <=p L2 L也是如此,这就是NP-Hardness的确切定义。

      通过这种方式,您可以看出NP中的每个问题都会减少到您的问题,这就是NP-Hardness的定义。


      由于直接显示NP中的每个L缩减为某种语言,因此在SATCook-Levin theorem)上执行了一次[实际两次...],现在你可以使用减少来增加已知的NP-Hard问题的数量。