回答:
あなたの一般的な質問に答える前に、まず一歩後退し、歴史の背景を説明し、予備的な質問に答えてみましょう:計算不可能な関数も存在しますか?
[注記:任意の関数を言語に関連付けてから、fの計算可能性ではなくの決定可能性について議論できます]
チューリングマシンが決定できない言語がいくつかあります。引数は単純です:「だけ」可算多くあります異なるのTMが、非可算多く異なる言語が。したがって、最大である決定可能な言語、および残りの(無限)決定不能です。参考文献:
具体的な決定不能の言語に私たちの手を置くためには、アイデアが名前の技術を使用することで対角化元々 、整数よりも実数であることを示すために使用された(ゲオルク・カントール、1873)、または他の言葉で、その。
最初の決定不可能な言語を構築するためのアイデアは単純です:すべてのチューリングマシンをリストし(それらは通常列挙可能であるため可能です!)、少なくとも1つの入力で各TMと一致しない言語を作成します。
上記では、各行は1つのTMであり、各列は1つの入力です。セルの値は、TMが拒否するか停止しない場合は0、TMがその入力を受け入れる場合は1です。i番目のTMがその入力を受け入れない場合にのみ、Dがi番目の入力を含むように言語を定義します。
上記の表以下、ので、M 1は、受け付けε。同様に、0 ∉ Dが、1つの∈ Dので、M 3は受け入れない1。
今、想定決定Dを、ラインルックアップKを表に:がある場合1でのk番目の列は、MのKは、その入力を受け付けるが、それはしていないD、及び存在する場合0が、入力であるDが、M kはそれを受け入れません。したがって、M kはDを決定せず、矛盾に達しました。
さて、あなたの質問です。言語が決定不能であることを証明する方法はいくつかあります。最も一般的なものに触れてみます。
最初の方法は、TMが決定できないことを示すことにより、言語が決定不能であることを直接示すことです。これは通常、上記の対角化方法に従います。
例。
対角線言語(の補数)ことを示す 決定不能です。
証明。
想定決定可能である、とlet M Dは、その決定者であること。次の2つの場合があります。
クロージャのプロパティを使用して、特定の言語が決定不可能であることを既に知っている他の言語に基づいて、決定不能であることを示すことができます。
場合は具体的には、(私たちが書く決定可能ではありませんL ∉ Rを)、その後もその補¯ Lは決定不能である:決定者があればM用¯ L私達はちょうど決めるためにそれを使用することができますLをいつでも受け入れることで、Mは拒否し、その逆。Mは常に答えで停止するので(決定者です)、いつでも答えを反転できます。
結論:対角線言語、決定不能であり、L D ∉ R。
同様の議論は、両方の場合に注目することによって適用することができるおよびその相補¯ Lは再帰的に列挙され、両方の決定可能です。これは、言語が再帰的に列挙可能ではなく、決定不能性よりも強力な性質であることを証明したい場合に特に役立ちます。
通常、言語が決定不能であることを直接証明することは非常に困難です(「対角」形式で既に構築されている場合を除く)。決定不能性を証明するための最後の最も一般的な方法は、決定不能であることがすでにわかっている別の言語を使用することです。アイデアは、ある言語を別の言語に還元することです:一方が決定可能であれば、もう一方も決定可能でなければならないことを示しますが、一方はすでに決定不能であることがわかっているため、最初の言語も決定不能であるという結論に至ります。「相互に問題を減らすための一般的な手法は何ですか?」で削減の詳細をお読みください 。。
例。
対角線言語ことを示す 決定不能です。
証明。L Dは決定できない
ことがわかっています。私たちは、削減L DにH P(これは表記さL D ≤ H Pのである)、私たちがあればあることを示すH Pが決定可能だった私たちが決めるために、その決定器を使用することができますL D矛盾です。
減少は、候補を変換することによって動作ためのL D(のための潜在的な決定器/受容するための、すなわち入力をL D候補に)wは'のためにH PようにW ∈ L D場合にのみW ' ∈ H P。この変換が計算可能であることを確認します。このように、決定wは「かどうかを教えてくれるwは∈ L D我々はHPを決めることができるのであれば、我々はまた、決定することができるだろう、L Dを .¹
変換は次のとおりです。いくつかを取る、出力ワット" = ⟨ M "、⟨ M ⟩ ⟩をどこ²、Mは「同じように振る舞うことをTMであるMが、場合Mは、その後拒否し、Mは「無限ループに入ります。
が要件を満たしていることを見てみましょう。
場合W ∈ L D、その手段Mの停止を入力受け付け⟨ Mを⟩。したがって、M 'も停止し、入力受け付け⟨ M ⟩を。したがって、⟨ M '、⟨ M ⟩ ⟩ ∈ H P。
一方、W ∉ L D次いでM拒否または決して停止のいずれか⟨
。どちらの場合も M "の無限ループに入ります ⟨ M ⟩。したがって、 ⟨ M '、⟨ M ⟩ ⟩ ∉ H Pとする我々は、その示す行われる W ∈ L D場合にのみ W ' ∈ H P、従ってことを示している H P ∉ R。
さらなる参考文献:削減の多くの例と言語の決定不能性の証明は、reductionsタグを介して見つけることができます。
有効である削減には、さらにいくつかの制限があります。変換自体は計算可能で、入力に対して明確に定義されている必要があります。
入力のように見える⟨ M 、X ⟩、Mは TMであり、Xいくつかの文字列です。したがって、ここでは文字列xをマシンMのエンコーディングとして選択します。これは単なる文字列です。
「だから、が決定不能であることを証明したいときはいつでも、L D(またはH P)を減らす必要がありますか?近道はありませんか?」
まあ、実際にはあります。これがライスの定理です。
定理によれば、特定の構造を持つ多くの言語は決定不能です。これらすべての言語はこの特定の構造を持っているため、一度削減を行い、同様の構造を認めるすべての言語に適用できます。
定理は次のように正式に述べられています。
L S L S = { ⟨ M ⟩ | L (M )∈ S }
セットはの言語のサブセットです。受け入れられた言語プロパティを記述するため、プロパティと呼びます。言語がこのプロパティを満たすすべてのTMは属します。R E L (M )L S
たとえば、は、受け入れられた言語に正確に2つの単語が含まれるプロパティにすることができます。L (M )
L S 2 L S 2 = { ⟨ M ⟩ | L (M )∈ S } = { ⟨ M ⟩ | | L (M )| = 2 } 。
この場合、は、言語が正確に2つの単語で構成されるすべてのTMのセットです
プロパティは、非常に単純なことができますが、それはすることはできませんすべての REの言語、またはなし RE言語の。場合はまたは、プロパティがあると言われて些細な、と誘起計算可能です。単純なの例は、ように単一の言語のみを含むものです。あること注意、単一の言語が含まれている、無限に多くのマシンがある言語ですので、無限、と決定不能です。S = R E L S S S C O のM p個のL E T E = { Σ * } S M Σ * L S C O のM p個のEのTのE
定理は、多くの言語の決定不能性を証明するために非常に強力です。
例。
言語、決定不能
証明。をと
書くことができます。つまり、プロパティに対してです。これは重要なプロパティです(言語が含まれますが、たとえば、言語は含まれません。したがって、ライスの定理によりは決定できません。
ここで定理を証明します。上記のように、からへの削減を示します(任意の重要な)。
証明。
ましょう、非自明な性質で。を示します。つまり、をに減らして、を決定できる場合はを決定できるようにします(不可能であることがわかっているため、を決定できません)。以下の証明では、空の言語は一部ではない、つまりと仮定しています。(空の言語が場合、同等の証明が補数プロパティで機能するため、詳細は省略します)。以来自明ではなく、少なくとも1つの言語が含まれています。言語というの呼び出しましょうと仮定受け入れるマシンです(ので、そのような機械は、存在する REでのみ言語を含みます)。
リコール例えば還元(上記参照部3)において、我々は、入力を変換する方法を示す必要があるとためのの入力にためよう
してみましょう、我々はに変換マシンの説明(入力の:次の通りです)
この変換が有効であることがわかります。最初に、与えられたの記述を構築するのが簡単であることに注意してください。
もし、そして停止で。この場合、はステップ2に進み、と同じようにます。したがって、受け入れられる言語はです。したがって、です。
場合はその後、上のループ。この場合、の任意の入力にループ -それはステップ1で立ち往生によって受け入れ言語この場合には空である、。したがって、です。
ライスの定理は、特定の特性を満たす特定の言語が決定できない、つまりあることを示す簡単な方法を提供します。Riceの定理の拡張バージョンにより、言語が再帰的に列挙可能かどうか、つまりがいくつかの追加プロパティを満たしているかどうかを確認することにより、かどうかを判断できます。
定理(ライス、拡張)。 プロパティ与えられた場合、言語 は、次の3つのステートメントがすべて一緒になった場合にのみ再帰的に列挙可能です()ホールド
- 任意の2つの、で場合、場合もです。
- 場合、有限サブセットが存在するため、ます。
- のすべての有限言語のセットは列挙可能です(言い換えると、すべての有限言語を列挙するTMがあります)。
証明。
これは「if and only if」定理であり、その両方の方向を証明する必要があります。最初に、条件(1,2,3)の1つが成り立たない場合、ます。その後、3つの条件すべてが同時に成立する場合、ます。
(1,2)が保持されるが、(3)が保持されない場合、。
と仮定すると、任意の有限言語(したがって、これらすべての言語のセットはRE)を受け入れる方法があることがわかります。したがって、条件(3)が成り立ち、矛盾に到達します。 。有限が属するかどうかを決定する方法は?簡単に-私たちはの説明に使用マシン構築するで単語だけ受け入れ、そして今、私たちはのマシンで実行上(覚えて-私たちは仮定、とても受け入れマシンがあり!)。もしその後、、以来、そのマシンは入力にイエスと言うだろう、そして我々は行われています。
(2,3)が保持され、(1)が保持されない場合、。と
仮定し、を決定する方法があることを示し、矛盾につながります。
条件(1)が成り立たないので、言語があるとそれのスーパーセット、よう。今、私たちが決めるために第4節で使用される引数を繰り返すしようとしている:入力を与えられたために、我々はマシンの構築を持つ言語である場合またはそれ以外の場合、言語はです。次に、を決定できますがで停止するか、 REマシンが受け入れます。; 両方を並行して実行でき、少なくとも1つが停止することが保証されています。
レッツは、構築の詳細与える(入力の上を):
なぜこれが機能するのですか?もしその後、1.1決して停止、およびので、ステップ1.2で受け入れられている正確にすべての入力、受け付け。一方、場合、ある時点でステップ1.1が停止し、はを正確にます。事前に受け入れられることもありますが、、この場合、の言語は変更されません。
(1,3)が保持されるが、(2)が保持されない場合、。
繰り返しますが、と仮定し、が決定可能になることを示しますが、これは矛盾です。
条件(2)が成立しない場合は、任意のための、そのすべての有限部分集合満足(そのノート、無限でなければならないので)。上記のように、与えられた入力に対してを決定するために、言語がであるマシンを構築しますおよび何らかの有限それ以外の場合は。矛盾は上記と同様の方法で続きます。
このマシンの構造は、以前に作成したと非常によく似ています。マシン(入力)は以下を行います:
それは場合には、保持している、その後、いくつかの点で、言う1000のステップの後に、上の停止。したがって、ステップ1は、長さ入力で停止(および拒否)します。したがって、この場合、は有限です。また、、特に条件(2)の無効性に関する仮定により、があることに注意してください。
一方、場合、ステップ1は停止せず、ステップ2で拒否することはありません。この場合、および特に、。
拡張定理の他の方向を示すために残されています。つまり、すべての条件(1,2,3)が成り立つ場合、を受け入れるTM 、つまりがあることを示す必要があります。言い換えれば、入力に対して、マシンがこの入力受け入れるように、マシンを表示する必要があります。。
マシン動作は(入力)。
なぜ機能するのですか?場合それはA有限のサブセット有する、一度サブセット、ステップ2.2 / 2.3がわかります出力するその言語のすべての単語を受け入れ、受け入れます。
一方、場合、に対してすべての単語を受け入れることはできません。実際、条件(1)により、すべてのもにあるため、が一部のについてすべての単語を受け入れる場合、、したがって、矛盾しています。
最後に、以下は上記の単純な(そして非常に有用な)結果であることに注意してください。
帰結(ライス、拡張)。 非自明性所与、その結果、言語 である、再帰的列挙ではないが、。
便利なツールの1つは、ライスの定理です。これはそれが言うことです:
ましょうの非自明な部分計算単項関数の組と A ゲーデル数の。次に、のインデックスセット
再帰的ではありません。
チューリングマシンエンコーディング(または他のチューリング完全プログラミング言語)で表現されていることもわかります。つまり、です。こちらは、ゲーデルの番号付けを定義します。
つまり、ライスの定理を使用して、非自明な関数セットのインデックスセットであるそのようなセット非再帰的に証明できます(または、還元可能)。
特定のインデックスセットが再帰的に列挙できないことを示すために使用できる拡張機能があることに注意してください。
してみましょう Aゲーデル数。自然のセットを考えます
。
なぜなら、
ライスの定理は適用でき、は決定できません。
多くの人はゲーデルの番号付けに慣れていないため、。
自然のセットを考えます
確かに計算できません。ただし、はインデックスセットではありません!してみましょう、いくつかのために。以来あるゲーデルの番号が存在する(無限に多くの)とが、すべてのためにので、保持している。P F = φ I I ∈ A φ J ≠ I φ J = F J ∉ F (2 )= I ≠ J
これに注意してください!経験則として、関数のインデックスが「右側」で使用される場合、またはセット定義の関数のパラメーターとして使用される場合、インデックスセットではない可能性があります。セットがインデックスセットではないことを示すために、ゲーデル番号付けのプロパティと不動点定理が必要になる場合があります。