定理証明済み
停止問題の決定不能性
内容
任意のプログラム(チューリング機械) と入力 を受け取り、 を で実行したときに停止するかどうかを、常に有限時間で正しく判定できるアルゴリズムは存在しない。
なぜ正しいのか?
そのような停止判定器 が存在すると仮定する。プログラム を、入力プログラム に対して、 を用いて が自分自身に対して実行されたとき停止するかを調べ、その逆の動作をする(すなわち が停止するなら無限ループし、 がループするなら停止する)ように構成する。 を自分自身を入力として実行すると、いずれの場合も矛盾が生じるため、 は存在し得ない。
証明の概略
対角線論法:判定器 が存在し、 が で停止するかを出力すると仮定する。「 が『停止する』と答えるなら無限ループする、そうでなければ停止する」と定義する。そして が停止するかを問う。もし停止するなら、定義により は「無限ループする」と答えたはずで矛盾する。もし無限ループするなら は「停止する」と答えたはずで、これも矛盾する。したがって は存在し得ない。
この定理を使うトピック
関連する定理
ステップごとの証明
この定理のステップごとの証明はまだありません。
参考文献
- Alan M. Turing (1936). On Computable Numbers, with an Application to the Entscheidungsproblem · DOI:10.1112/plms/s2-42.1.230
- Michael Sipser (2012). Introduction to the Theory of Computation