形式陈述
固定有限分支度的非确定性图灵机公理库非确定性图灵机Nondeterministic Turing machine每个配置可有多个后继并在存在接受分支时接受的图灵机。模型。对 , 由满足下列条件的语言 组成:存在非确定机器 和常数 ,使 判定 ,并且对每个 , 在 上的每一条计算分支都在 步内停机。接受语义是
当 时,没有接受分支,且所有分支都在同一最坏时间界公理库时间复杂度Time complexity · Running time在固定计算模型与输入编码后,算法运行步骤数随输入规模增长的量级。内拒绝。只约束最短接受分支而放任其他分支无限运行,不符合这个定义。
当 且采用固定机器编码时,一条长度 的分支可由 位选择序列描述。确定性验证器读取该序列并重放转移;反过来,非确定机器可以逐位猜证书再运行验证器。精确的时间函数会受模拟模型影响,但在多项式尺度上得到无歧义的“多项式证书加多项式验证”刻画。
直觉
非确定时间把“存在一串成功选择”放进计算语义。每个分支仍是一段普通的、按步计费的局部计算;区别只在于成员输入只需有一条分支接受,而非成员输入必须让所有分支失败。它不为现实机器提供指数数量的免费处理器,也不是给分支随机分配概率。
与确定性时间类公理库确定性时间复杂性类Deterministic time class · DTIME由确定性图灵机在给定时间界内判定的语言集合。相比,确定机器是每个配置最多一个后继的特例,因此相同预算下确定性计算自动也是非确定性计算。反向模拟通常要遍历整棵分支树,时间可能指数增长。
例子与边界
合数的猜测—验证
把正整数用二进制编码,定义
若输入长度为 ,机器猜测两个至多 位的整数 ,再用逐位乘法和比较验证条件,耗时为 的多项式。对 ,猜到 的分支接受;对 ,每一对候选都会因乘积或范围不符而拒绝。这个例子同时表明证书按二进制长度收费,不能把一次任意精度乘法暗算成常数步骤。
为什么所有分支都要有时钟
设机器先分成两支:第一支立即接受,第二支永远向右移动。即使成员输入上存在很短的接受分支,第二支仍使机器不属于任何有限 NTIME 界。标准构造会给所有分支装上同一时钟;到期未接受就拒绝。
穷举模拟的代价
若固定机器的分支度至多为 、树深为 ,计算树最多有 个节点。逐层确定性遍历因此给出粗略指数时间模拟,却没有给出 。在多项式尺度上,后者正触及 P 与 NP 的开放问题。
推论与应用
每台确定机器都可视为从不真正分支的非确定机器,所以
把所有多项式预算取并得到NP公理库复杂度类 NPNP · Nondeterministic polynomial time由正实例拥有多项式长度、可在多项式时间内验证的证书所刻画的语言类。:
类似地,NEXP 使用 的非确定时间预算。若把问题从“是否有接受分支”改为“有多少条接受分支”,则进入#P公理库计数复杂性类 #PSharp-P · #P计数非确定性多项式时间机器接受分支数的函数类。一类计数复杂度;存在性与计数不是同一输出任务。
参考资料
- Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §§1.2 and 2.1.
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §§7.1–7.3.