計算の少なくとも1つのブランチで停止する非決定的チューリングマシン


7

Michael Sipserからの私のテキストをここで見ています。彼は、すべての計算ブランチがすべての入力で停止する場合非決定論的チューリングマシンが決定者であると述べています。すべての入力に対して少なくとも1つの分岐で停止するが、他のループではループする可能性のある非決定性チューリングマシンと呼ばれる場所をどこかで見たのを覚えていると思います。そのようなものの名前はありますか?この章の後半で「ベリファイア」という単語を参照していますが、これは適合していないようです...これはアルゴリズムを指していると思います。

言語Aのベリファイは、アルゴリズムです ベリファイアの時間はの長さでのみ測定するため、多項式時間ベリファイアはの長さの多項式時間で実行されます。言語は、多項式の時間検証器があれば、多項式で検証可能です。AV

A={wV accepts w,c for some string c}.
wwA

たぶん、NTMによって認識される言語の定義にあるのでしょうか。受け入れ状態で終了する計算パスが少なくとも1つ存在する場合、NTMは文字列を受け入れますが、必ずしもこれがすべての入力文字列で発生するとは限りません(そうでない場合、L(NTM)= \ Sigma ^ *)w
Vor

機械は言語を「受け入れる」とあなたは言うと思います。

TMは言語を「受け入れる」のではなく、文字列を受け入れます。TMが受け入れる文字列のセットは、そのTMの言語であり、L(M)と表記されています。ただし、TMは言語の文字列表現を受け入れます。
Kent Munthe Caspersen 2014年

@KentMuntheCaspersenいいえ。チューリングマシンが受け入れる言語は、受け入れ状態になる一連の入力文字列です。さらに、マシンが受け入れないすべての文字列についてマシンが停止した場合、言語を決定すると言われています。
David Richerby 2014年

@DavidRicherbyだいじょうぶ?
Kent Munthe Caspersen 2014年

回答:


2

アイデアは、確定的 TMが常に有限時間内に「はい/いいえ」で答えるということです(そうでなければ、アイデア全体が意味をなさない)。そして、それを行うために、NTMの決定論的シミュレーションは、いくつかのブランチでlala-landに入ることができません。つまり、すべてのブランチは有限の深さでyes / noで終了する必要があります。それは決定します(あなたに明確な答えを与えます)。すべての分岐が停止するわけではない場合、検証できます(つまり、その言語の単語が与えられた場合、必ず[はい]と応答します。そうでない場合、おそらくそれは[いいえ]に答え、おそらくループします)。


1
まあ、明らかに、NTMは確かに、決定不可能な問題を解決しようとするだけで、無限に深い分岐を持つことができます。それができないと言うと、どういう意味ですか?それとも私は何かを誤解していますか?
ミラーナ2013

確定的TMは、有限時間内に常に「はい」/「いいえ」で応答するとは限らず、ループして停止することはありません。NTMをシミュレートするDTMは、NTMのブランチの1つでループすることができますが、幅優先のシミュレーションでは、他のブランチもシミュレーションされます。ベリファイアはディサイダーであるため、入力をループすることはできません。
Kent Munthe Caspersen、2014年

3

NTM Mが受け入れる文字列はの言語ですML(M)

私たちがいることを言ってみましょうM任意の入力のために、すべての枝に止まって保証するものではありません。その場合、M明らかに決定者になることはできず、したがって単なる認識者です。Mすべての文字列の言語を認識します。すべての文字列のブランチはM受け入れ状態にあります。

Mは認識エンジンなので、文字列がにある場合にのみ、文字列を受け入れることが保証されL(M)ます。にない文字列が指定されL(M)た場合、文字列が拒否されるか、永久にループする可能性があります。すべてのNTMはDTMでシミュレートできますが、NTMが言語のみを認識する場合L、同等のDTMも認識しLます。

NTMがディサイダーである入力に対してすべてのブランチで停止した場合、同等のDTMは同じことを行うため、ディサイダーにもなります。

検証者はあなたが探しているものではありません。Sipsersの本「Introduction to the Theory of Computation」では、アルゴリズムの複雑性と複雑性のクラスについて説明するときにベリファイアが導入されLています。

言語の検証は、L入力として文字列を取るwにはL、証明書は、c(問題の解決策として、証明書を考えるw)と証明書が実際に作る正解、であることを確認wして嘘をL

例:

言語について

L = { w | w is an integer for which the product of some of the digits equals 12000 }

あなたは、検証することができますV文字列を受け取り、w中にL、証明書c、および検証wに実際にあるL証明書を使用しますc。の積が12000となるc整数を示すバイナリ文字列にすることができますw

たとえばV、入力を拒否する必要があります1923423343, 00101110112*4*2*3*4*3 = 576 != 12000

多くの問題について、入力サイズの指数時間で実行されている問題を解くことができるアルゴリズムしか知りません。検証者が興味深いのはこのためです。多くの場合、私たちが解決策を与えたときに、その解決策が正しいか間違っているかをすばやく判断できることが多いからです。


「いくつかの桁の積の合計が12000になる整数」とはどういう意味ですか?
David Richerby 2014年

1
申し訳ありませんが、その説明は曖昧でした。「合計」を「等しい」に変更しました。つまり、Lには数字d1d2 ... dnで作成されたすべての整数が含まれ、Aのすべての数値の積が12000になるように、これらの数字のマルチセットAが存在します。たとえば、w = 164245455はLです。 4 * 4 * 5 * 5 * 5 * 6 =12000。ただし、w = 999999999はLにはありません。これは単なる任意の決定問題であり、検証者が何をするかを示すために使用され、多くの場合、ソリューションを検証する方が簡単です。見つけて。
Kent Munthe Caspersen、2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.