web-dev-qa-db-ja.com

非決定論的チューリングマシンの概念がわかりません

Non Deterministic Turing Machineの概念が理解できません。 非決定論的アルゴリズムという用語を理解していると思います:(非決定論的アルゴリズムは、決定論的アルゴリズムとは異なり、異なる実行で異なる動作を示す可能性のあるアルゴリズムです。 )したがって、アルゴリズムは次のようになります:

a = fromSomeAlgo();

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

ただし、非決定的チューリングマシンI read の場合、特定の時点で複数の状態になる可能性があります。また、 wikipediaの記事を示唆しています(非決定論的なチューリングマシン(NTM)には、特定の状況に対して複数のアクションを規定する一連のルールがある場合があります "

どういう意味ですか ? ..特定の状況で複数のアクション...複数の状態...私は単にこれを理解していません。

32
Suhail Gupta

非決定論的チューリングマシンでは、各ブランチで-両方の可能性を実行します-完了したら、ソリューションに必要なもの(存在する場合)を「選択」します。

たとえば、S = {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

アルゴリズムが「true」を生成するには、1つの計算(ツリー内のパス)が正しいことで十分です。そのような計算がない場合にのみ、「false」が生成されます。

非決定的チューリングマシンの概念は純粋に理論的なものです。利用可能な非決定的チューリングマシンはありません。

ボーナス:
非決定性チューリングマシンで実行できるすべてのこと-決定性チューリングマシンで実行できることに注意してください(逆もまた同様です)。たとえば、 停止問題 はどちらでも決定できません。 。ただし、NPC問題は非決定性チューリングマシンで多項式で実行できます。また、決定論的チューリングマシンで多項式で実行する方法がわかりません(不可能と想定)。

47
amit