【问题标题】:Intuition behind why NP could be equals to co-NP , if we "assume" P not equals NP如果我们“假设” P 不等于 NP,为什么 NP 可能等于 co-NP 背后的直觉
【发布时间】:2020-12-01 17:59:13
【问题描述】:

如果我们“假设” P 不等于 NP,thisthis 表明 NP 可能等于 co-NP。

我搜索了很多,浏览了很多资料。我似乎不能很直观地理解为什么这可能是真的。如果有人可以引导我找到任何资源或帮助我直观地理解为什么这是真的,那将非常有帮助。

【问题讨论】:

  • 我投票结束这个问题,因为它不是计算机编程问题。这是一个关于计算理论的问题。试试 cs.stackexchange.com。

标签: computer-science complexity-theory np


【解决方案1】:

这是一种可能的直觉,考虑到我们尚未解决 PNP 的比较,这可能完全被误导。

复杂性类 P 可以被认为是满足以下陈述的所有问题:有一个布尔函数 solveProblem 使得

  • solveProblem 在多项式时间内以其输入的大小运行,
  • 对于答案为“是”的任何输入 xsolveProblem(x) 返回 true,并且
  • 对于答案为“否”的任何输入 xsolveProblem(x) 返回 false。

现在,我们来看看NP的定义。这是一组问题,下面的陈述是正确的:有一个布尔函数checkYesAnswer 这样

  • checkYesAnswer 在多项式时间内运行,
  • 对于答案为“是”的任何输入x,有一些y 其中checkYesAnswer(x, y) 返回true,并且
  • 对于答案为“否”的任何输入 xcheckYesAnswer(x, y) 始终返回 false。

PNP 之间的区别在于,当您查看复杂性类 P 时,您会得到只是输入,需要做出是/否决定,而在 NP 类中可能有一些辅助信息可以帮助您做出是/否决定。这使得 PNP 的定义之间的区别非常大 - 在一种情况下您需要解决问题,而在另一种情况下您需要检查是否有一些辅助信息帮助你。

现在,这是 co-NP 的另一个等效定义。 co-NP 类包含所有存在布尔函数 checkNoAnswer 的问题,使得

  • checkNoAnswer 在多项式时间内运行,
  • 对于答案为“是”的任何输入 xcheckNoAnswer(x, y) 始终返回 true,并且
  • 对于答案为“否”的任何输入x,可以选择y,其中checkNoAnswer(x, y) 返回真。

换句话说,NP 和 co-NP 的定义非常密切相关,唯一的区别是“是”和“是”的分支。 “否”被交换。所以从这个意义上说,即使 PNPNP 和 co-NP 仍然是合理的可能是相等的,因为我们基本上只是颠倒了“是”和“否”这两个词的作用。

还有很好的理由来了解为什么 NP 可能不是共同NP。您可以将定义之间的区别想象如下:对于 NP,如果 存在 一些具有某些属性的 y,则答案是“是”,而对于 co- NP答案是“是”,如果对所有人y 成立。而且由于 ∃ 和 ∀ 量词的工作方式不同,也许这里还有其他事情发生。

【讨论】:

    【解决方案2】:

    如果 P=NP,则 NP=co-NP。该陈述的证明关键取决于假设 P=NP。

    现在如果 P!=NP,则证明不起作用,因此是否 NP=co-NP 的问题仍然悬而未决。就这么简单。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2018-05-29
      • 2013-06-07
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多