MathLabs
定理証明済み

停止問題の決定不能性

内容

任意のプログラム(チューリング機械)PP と入力 xx を受け取り、PP を xx で実行したときに停止するかどうかを、常に有限時間で正しく判定できるアルゴリズムは存在しない。

なぜ正しいのか?

そのような停止判定器 HH が存在すると仮定する。プログラム DD を、入力プログラム QQ に対して、HH を用いて QQ が自分自身に対して実行されたとき停止するかを調べ、その逆の動作をする(すなわち QQ が停止するなら無限ループし、QQ がループするなら停止する)ように構成する。DD を自分自身を入力として実行すると、いずれの場合も矛盾が生じるため、HH は存在し得ない。

証明の概略

対角線論法:判定器 H(P,x)H(P,x) が存在し、PP が xx で停止するかを出力すると仮定する。D(P)=D(P) = 「H(P,P)H(P,P) が『停止する』と答えるなら無限ループする、そうでなければ停止する」と定義する。そして D(D)D(D) が停止するかを問う。もし停止するなら、定義により H(D,D)H(D,D) は「無限ループする」と答えたはずで矛盾する。もし無限ループするなら H(D,D)H(D,D) は「停止する」と答えたはずで、これも矛盾する。したがって HH は存在し得ない。

証明者

この定理を使うトピック

関連する定理

ステップごとの証明

この定理のステップごとの証明はまだありません。

参考文献

  1. Alan M. Turing (1936). On Computable Numbers, with an Application to the Entscheidungsproblem · DOI:10.1112/plms/s2-42.1.230
  2. Michael Sipser (2012). Introduction to the Theory of Computation