証明を行わずに言語Lを使用している場合、それが認識可能か、共認識可能か、または決定可能かを判断する方法はありますか?
基本的に、伝えるために使用できるヒントやトリック。それとも、それがどの種類であるかを知るために検索する一般的なパターンですか?
証明を行わずに言語Lを使用している場合、それが認識可能か、共認識可能か、または決定可能かを判断する方法はありますか?
基本的に、伝えるために使用できるヒントやトリック。それとも、それがどの種類であるかを知るために検索する一般的なパターンですか?
回答:
言語は、ベリファイアが存在する場合にのみ認識可能です。ベリファイアは、すべての入力およびすべてので停止するTuringマシンであり、。一般に、はがことの「証明書」または「証明」と見なされ、検証者はががことの有効な証明であるかどうかをチェックします。L W ∈ Σ * W ∈ L ↔ ∃ C ∈ Σ *。Vは、 受け付け ⟨ W 、C ⟩ C wはL VがC W L。(言語のベリファイアから言語のレコグナイザを構築できるため、この定義はレコグナイザの定義と同等であることに注意してください)。言語がREにあるかどうかを判断するために、次の質問をすることができます。
文字列を考えると、あなたは可能性が証明その?ワット∈ L
たとえば、ます。というあなたに証明するためにために認識される上の停止、私はちょうどあなたが実行する必要があり、工程数を伝えることができますするためにしている場合その多くのステップの後に停止を行い、あなたはそれを確信することでしょう。H A L TW M M ⟨ M 、W ⟩ ∈ H A L T
同様に、言語は、その補数が認識可能な場合に限り、つまりベリファイアが存在する場合にのみ、相互認識可能です。したがって、言語が共REにあるかどうかを確認するには、次のように尋ねます。¯ L
文字列を考えると、あなたは可能性を証明するもの?ワット∉ L
再びの例を、この直感を使用して、が認識できないことを示すことができます。これは、一部のマシンが入力で停止しないと言った場合、その事実を説得するために私があなたに言えることは何もないからです。を実行することはできますが、実行を見ていて、まだ停止するのを見ていない場合でも、将来いつか停止して停止することはありません。M w M w M
最後に、と両方が認識可能であれば、言語は決定可能です。したがって、上記の2つの質問の両方に対する答えが「はい」である場合、その言語は決定可能です。L ¯ L
例として、考えます。文字列を考えると、私はあなたに証明できる?確かに、私は多くのカウントアップができ秒と数ので、sおよびショー、彼らがしているに等しいことを認識可能です。場合はどうですか?私は、文字列がでないことを証明できる、それは形式のどちらかではないことを示すことによりまたはの数の不一致があることをSと sが。したがって、は共認識可能です。は認識可能であり、認識可能でもあるため、も決定可能です。のw ∈ L W ∈ L AL W ∉ LN個のB Mb L L
参考:私は大学での計算能力/複雑性理論の入門クラスのTAであり、教授はこれを、非常に有用なアニメーションガイドにして、規則的で決定可能で認識可能な言語について推論しました。
認識可能であることは、次のようなパラメータとして単語を受け取る自動プロセス(後で説明します)を構築できることを意味します
認識可能であることは、言語(または英語では、に含まれないすべての単語のセット、つまりその補語)が認識可能であることを意味します。 L
決定可能であることは、単語を入力として受け取る自動プロセスを構築できることを意味します。
重要な結果の1つは、が認識可能で共認識可能な場合に限り、が決定可能であることです。L
この結果を証明するアイデアは、認識可能性と共認識可能性によって得られるプロセスから、両方のプロセスのステップを交互に実行することにより、どちらかがYESと答えるまで、自動プロセスを構築できるということです。そのうちの1つはそうする必要があります。すべての単語が言語に含まれているか、含まれていないためです)
あまりにも形式的ではなく、多くのタイプのマシンが設計されており、基本的にそれらすべてが言語のタイプにリンクされています(これらのタイプは、そのような言語の定義に必要なツールに依存します。詳細については、Chomsky Hierarchyが役立つ場合があります)。
決定可能性に関する自動処理の通常の意味は、チューリングマシンです。次のことができるように、チューリングマシンを定義できます。
基本的に、チューリングマシンは、無限のメモリと計算に費やす時間を持つ数学的なオブジェクトを除いて、プログラムで定義できるすべてのことを実行できます。常に終了するとは限りません。
チューリングマシンのもう1つの重要な特性は、チューリングマシンを単一の単語(これはエンコーディングです)として記述でき、マシンエンコーディングとワードを入力として与えられてシミュレートできるチューリングマシンが存在することです。入力でのの計算。これは少し重要になります。w M w
数学の観点から考えることができる(ほぼ)最も単純な種類の言語である通常の言語は、それらが補完的に閉じられるという独特の特性を持っていることを指摘しておきます。つまり、これらの言語では、認識可能性と決定可能性の概念は同等です。Chomsky Hierarchyを上に移動しても、これは成り立ちません。
停止問題について学習します。質問は、私たちは別のチューリングマシンのエンコーディング与えられた、というチューリングマシンを構築することができ、あると単語、決定した天気を入力に終了?w M w
明らかに、これは認識我々だけでシミュレートするために持っているように、に YESと言う、それが終了するまで、そしてそれがないとき。ただし、が終了しない場合は、NOとは言わないため、この言語は認識していますが、決定はしていません。この言語はチューリングマシンでは決定できないことが証明されています。これには、通常の数学的なスキームが含まれます。対角線の引数ですが、私は直感的には呼び出せません。この証明のスケッチをチェックして、慣れることができます。w M
言語を考えると、それが決定可能であるかどうかだけを述べることはできません。それを行うことができるアルゴリズムはありません、そして言語が決定可能でないことを証明することはいくつかの思考を必要とし、そしてチューリングマシン、対角引数などに関するいくつかの知識を必要とする可能性があります...
しかし、これがこの質問を処理する私の個人的な方法です。通常、言語を勉強しているとき、チューリングマシンの動作を参照する形を示さない限り、それは決定可能であると思います。その場合、私は警戒し始め、言語を決定するアルゴリズムを定義しようとします。これが簡単に見えない場合は、作業を認識アルゴリズムと共認識アルゴリズムの両方に分割すると役立つことがあります。それでもそれができない場合は、この言語と、「その言語を決定できれば、停止の問題を決定できる」など、他の決定不可能な言語とを関連付けようとします。これは、決定不可能な問題へのチューリング削減であるため、最初の問題は決定できません。これらすべてが失敗した場合は、対角引数を使用してみることができますが、これは少し難しいかもしれません。
1つのトリックは、言語が有限である場合、それが決定可能であることを確実に知っているということです。その言語で何でも受け入れるようにマシンを「ハードコード」できるからです。ただし、最も簡単な方法は、別の言語から単純に減らすことです。
上記のコメントで述べたように、問題の解決策について考えることは役に立ちます。
のようなものを考えてください。私たちはそれを決定することができることを知っています、なぜならそれをテストするために私たちが試みなければならない有限数の解決策があるからです。チェックするいくつかの有限の条件セットがある場合、これらの後続の1つがyesを保証し、それらのいずれもnoを保証しない場合、問題は決定可能です。この条件セットは非常に大きくなる可能性があることに注意してください(NP完全問題の場合など)。
解空間が無限に無限であり、可能な各解を順番に生成でき、各解のテストが決定可能である場合を考えてみましょう。この場合、問題は認識できることがわかります。たとえば、「次のような自然数はありますか?」解決策がある場合、それを見つけることは保証されていますが、必ずしもそれを見つけるのにかかる時間に制限があるわけではありません。また、このような整数が存在しない場合、このアルゴリズムが停止することはないため、問題が決定可能であることは証明されません。
すべての文字列、すべての整数、すべてのグラフ、または列挙可能な任意の有限構造のセットに同じ手法を適用できます。これは、実数または(場合によっては無限の)文字列のセットを検索する場合には機能しません。
ただし、一部の問題には無限に無限の解空間があり、決定可能な場合があることに注意してください。
言語が決定できないかどうかを確認するコツは、「この言語を使用してチューリングマシンの計算をコーディングできますか?」または、より一般的には、「計算で何が起こるかと同じくらい複雑になりますか?」もちろん、このコーディングは難しい場合があり、(ポスト通信問題のように)還元する決定不能な問題のリストを知るのに役立ちます。そのような削減が見つからない場合は、アルゴリズムを考えて言語を決定してみてください。たとえば、昇順の整数のリストの言語は有限ではありませんが、リストが昇順でソートされるかどうかをテストするアルゴリズムを設計するのは簡単なので、この言語は決定可能です。そして、多くの言語では、それらの決定可能性については知らないので、これは難しい質問です。