非确定性与多项式时间可验证性

时间:2014-04-03 04:52:43

标签: complexity-theory np non-deterministic

我已经读过NP问题在多项式时间内是可验证的,或者等价地,可以通过非确定性图灵机在多项式时间内解决。为什么这些定义相同?

2 个答案:

答案 0 :(得分:2)

首先,让我们说明在多项式时间内可以验证的任何事物都可以在非确定多项式时间内求解。假设您有一些算法P(x,y)决定y是否验证x,并且P在某个常数k的时间O(| x | k )中运行。该算法的运行时间是x中的多项式,这意味着它只能查看y的多项式。然后你可以构建这个解决问题的非确定多项式时间算法:

  1. 不确定地猜测长度为O的字符串y(| x | k )。
  2. 确定地运行P(x,y)并输出它所说的任何内容。
  3. 这在非确定多项式时间内运行,因为y在非确定多项式时间内构造,而P(x,y)则在多项式时间内运行。如果存在验证x的y,则该机器可以不确定地猜测它。否则,没有猜测工作,机器将输出NO。

    另一个方向比较棘手。假设有一个非确定性算法P(x)在一个常数k的非确定性时间O(| x | k )中运行。这个非确定性算法在每个步骤中从下一步做什么选择中选择一个。因此,你可以制作一个验证程序Q(x,y),其中y编码在P的每一步计算中做出的选择。然后可以模拟P(x),查看y中编码的选项以确定哪一步接下来。这将在确定性时间O(| x | k )中运行,因为它只执行非确定性计算中的所有步骤。

    希望这有帮助!

答案 1 :(得分:0)

也许此示例给出了一些提示:

给出L = {w : expression w is satisfiable}n变量的时间:

  • 猜猜变量O(n)的分配
  • 检查这是否是令人满意的作业O(n)
  • 总时间:O(n)

可满足性问题是NP问题,难解决,但广泛用于计算 每次猜测都是线性的时间复杂性。

NP类旨在隔离多项式时间“可验证性”的概念。 NP是具有多项式时间验证器的语言。