Non Deterministic Turing Machineの概念が理解できません。 非決定論的アルゴリズムという用語を理解していると思います:(非決定論的アルゴリズムは、決定論的アルゴリズムとは異なり、異なる実行で異なる動作を示す可能性のあるアルゴリズムです。 )したがって、アルゴリズムは次のようになります:
a = fromSomeAlgo();
if(a > foo)
stateA();
else
stateB();
ただし、非決定的チューリングマシンI read の場合、特定の時点で複数の状態になる可能性があります。また、 wikipediaの記事 はを示唆しています(非決定論的なチューリングマシン(NTM)には、特定の状況に対して複数のアクションを規定する一連のルールがある場合があります "。
どういう意味ですか ? ..特定の状況で複数のアクション...複数の状態...私は単にこれを理解していません。
非決定論的チューリングマシンでは、各ブランチで-両方の可能性を実行します-完了したら、ソリューションに必要なもの(存在する場合)を「選択」します。
たとえば、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問題は非決定性チューリングマシンで多項式で実行できます。また、決定論的チューリングマシンで多項式で実行する方法がわかりません(不可能と想定)。