算法的运行时间取决于P与NP


18

是否存在一个已知的显式算法示例,该示例具有以下属性:如果则该算法不在多项式时间内运行,并且如果则在多项式时间内运行?PNPP=NP


9
有点。如果P = NP,在多项式时间内莱的通用搜索算法运行在接受实例 en.wikipedia.org/wiki/...
周华健耶扎贝克支持莫妮卡

@Emil:如果P = NP也是P = coNP,那么您是否不能同时对您的语言进行Levin搜索,从而在所有实例上提供真正的多边形时间算法?
约书亚·格罗肖

3
@JoshuaGrochow为了将语言表示为coNP,我首先需要了解 NP的多时制算法,从而破坏了整个目的。
EmilJeřábek

Answers:


17

如果您假设在PA(或ZFC)中是可证明的,则下面是一个简单的示例:P=?NP

Input: N   (integer in binary format)
For I = 1 to N do
begin
  if I is a valid encoding of a proof of P = NP in PA (or ZFC)
    then halt and accept
End
Reject

另一个(不那么琐碎)不依赖任何假设的示例如下:

Input: x   (boolean formula)
Find the minimum i such that
  1) |M_i| < log(log(|x|))  [ M_1,M_2,... is a standard fixed TM enumeration] 
  2) and  M_i solves SAT correctly 
       on all formulas |y| < log(log(|x|))
          halting in no more than |y|^|M_i| steps
          [ checkable in polynomial time w.r.t. |x| ]
  if such i exists simulate M_i on input x 
      until it stops and accept/reject according to its output
      or until it reaches 2^|x| steps and in this case reject;
  if such i doesn't exist loop for 2^|x| steps and reject.

如果该算法将很快或稍后-假设在输入 -查找多项式时间Turing机(或其填充版本)的索引,以并且对于所有大于输入将继续对其进行仿真并停止多项式时间(请注意,也可以在多项式时间中检查步骤2)。换句话说,如果该算法将在除有限数量的实例之外的所有实例上以多项式时间求解SAT。P=NPx0MSATO(|x||MSAT|)x0P=NP

如果则算法以指数时间运行。PNP


如何快速确定“我是PA(或ZFC)中P = NP证明的有效编码”?
user2925716 '18 -10-19

@ user2925716您可以在多项式时间内做到这一点(假设是一个代表任何合理推论系统中完整证明的字符串)。一世
Marzio De Biasi

2
高大的假设。
Jirka Hanika

1
如果P≠NP,则无条件算法的运行时间是超多项式(按要求),但是如果NP仅是非常轻微的超多项式,则不是指数。我们可以更改算法以使其成为io指数,但是如果P≠NP可能与解决P = NP一样困难,则可以证明使其成为指数(而不是仅io指数)。
Dmytro Taranovsky '18

1
我使用io指数表示无限多个输入大小的指数。随着输入大小的变化,io指数仍然可以在指数和非指数之间振荡。另外,埃米尔·耶拉贝贝克(EmilJeřábek)的评论似乎正确;可证明地获得超多项式时间(如果P≠NP)的解决方法是始终至少使用时间;对于io指数- 每次增加i 至少。X|中号一世|2X
Dmytro Taranovsky '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.