【问题标题】:Why do we get to pick the source in an NP-completeness reduction?为什么我们要在 NP-completeness reduction 中选择源?
【发布时间】:2015-11-23 16:46:35
【问题描述】:

我们知道要证明问题 A 是 NP 完全的,我们必须 找到从 NP 完全问题 B 到这个问题 A 的多项式时间缩减。

例如,我们可以做这些归约:

 SAT ---> clique
 SAT ---> independent set
 Independent set ---> Vertex Cover

为什么我们要选择使用哪个 NP 完全问题作为归约的来源?所有的 NP 完全问题都可以相互约简吗,我们只需要选择一个更容易显示约简的问题吗?

我的意思是很容易显示从 SAT 到派系的减少。但是,我不知道如何显示从 SAT 到顶点覆盖的减少,但我知道如何从独立集减少到顶点覆盖。原则上是否可以将每个 NP-Complete 简化为每个其他 NP-Complete,但我们只使用最简单的一个?

【问题讨论】:

  • 百万美元的问题...

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


【解决方案1】:

如果问题是 NP 完全的,如果

  • 它在 NP 中,并且
  • NP 中的每个问题都是多项式时间可约化的。

这意味着,如果您处理任何两个 NP 完全问题,您可以保证它们是多项式时间可相互约简的,即使您不确切知道该约简会是什么样子。

您问为什么在证明 NP 完全性时要选择使用哪个 NP 完全问题作为归约的来源。原因是,一旦你证明了某个 NP 完全问题 A 归约为 NP 问题 B,你可以得出结论 每个 NP 完全问题 C 归约为 B,因为 C 归约为 A 并且A 简化为 B。换句话说,如果您通过将任何已知的 NP 完全问题简化为该问题来证明该问题是 NP 完全的,那么原则上您可以将 每个 NP 完全问题简化为它.你只是通过减少一个使减少最容易做到的问题来让事情变得简单。

如果您选择错误的 NP 完全语言作为源代码,那么在实践中进行缩减可能会非常困难。要了解为什么会这样,请考虑一下 Cook-Levin 定理(SAT 是 NP 完全)的证明是如何工作的。为了证明你可以将任何 NP 问题简化为 SAT,你从一个多项式时间的、非确定性的图灵机开始解决这个问题,然后用它来构造一个庞大的命题公式,基本上说“这个 TM 有一些计算可以接受它的输入字符串。”这在理论上很好,但在实践中这是一个可怕的减少,任何看过它的人几乎都完全无法理解。每当您通过对已知的 NP 完全问题进行归约来证明问题的 NP 完全性时,请将其视为找到跳过一个非常困难的证明的捷径——如果您能找到一些好的和简单的东西,那么您就是跳过减少的庞然大物。

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2011-05-08
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多