我不明白非确定性图灵机的概念

时间:2012-11-23 06:19:51

标签: algorithm state turing-machines non-deterministic

我不理解非确定性图灵机的概念。我想我理解术语非确定性算法 :(非确定性算法是一种可以在不同的行为上表现出不同行为的算法 运行,而不是确定性算法。)所以算法可能是:

a = fromSomeAlgo();

if(a > foo)
   stateA();
else
   stateB();

但是对于非确定性图灵机 I read,它在给定时间可以处于多个状态。另外一个wikipedia article暗示“非确定性图灵机(NTM),可能有一套规则更多的规则 对于给定情况而言,不是一个动作“

这是什么意思? ..针对特定情况的不止一个行动......多个州...... 我根本就不明白这一点。

1 个答案:

答案 0 :(得分:47)

在非确定性图灵机中,在每个分支中 - 您都有两种可能性 - 只有在您完成后,您才“选择”哪一个是解决方案所需的那个(如果存在)。

例如,让我们看看subset sum problemS = {a,b,c... }。非确定性图灵机具有线性解决方案:

for each element:
   "guess" if it is in the subset
check if the subset has the specified sum

生成的树将是这样的:

                                       start
                 with a                                      without a
               /         \                                   /          \
              /           \                                 /            \
             /             \                               /              \
      with b               without b                  with b              without b
      /     \               /       \                 /     \             /        \
  with c    without c    with c     without c     with c    without c    with c     without c

一个计算(树中的路径)是正确的,以便算法产生“真”。只有在没有这样的计算时才会产生“假”。

非确定性图灵机的概念纯粹是理论上的 - 没有非确定性的图灵机。

<强>加成:
请注意,使用非确定性图灵机可以完成的所有操作 - 可以使用确定性图灵机完成(反之亦然) - 例如,Halting Problem中的任何一个都无法确定。但是,NPC问题可以在非确定性图灵机中以多项式进行,我们不知道(我们假设我们不能)如何在确定性图灵机上进行多项式处理。