停止問題(halting problem)とは、Turing 機械の番号 $e$ と入力 $x$ を受け取り、番号 $e$ の機械が入力 $x$ で停止するかどうかを判定する問題であり、停止する組の集合 $H$ が決定可能かどうかを問う。対角線論法により $H$ は決定可能でなく、停止するかどうかを答えて必ず停止する Turing 機械は存在しない。一方、機械を 1 ステップずつ動かせば停止する側は確かめられるので $H$ は半決定可能であり、集合が決定可能であることは集合と補集合がともに半決定可能であることと同値なので、停止しない組の集合は半決定可能でない。停止問題は、Rice の定理や一階論理の決定問題の否定的な解決など、多くの決定不能性の出発点になる。
前提知識: Turing機械, 万能Turing機械, μ再帰関数
Turing 機械に入力を与えて動かすと、いつか停止することもあれば、永久に動き続けることもある。では、機械の番号と入力を受け取り、その機械がその入力で停止するかどうかを必ず正しく答えて停止する機械は作れるだろうか。これが 停止問題(halting problem)であり、答えは否定的である。停止するかどうかは、実際に動かしてみれば「停止する」側だけは確かめられるが、「停止しない」側を有限の時間で確かめる一般的な方法はない。
この記事では、停止する組の集合が決定可能でないこと(停止問題の決定不能性)を対角線論法で証明する。さらに、その集合は半決定可能であるがその補集合は半決定可能でないこと、集合が決定可能であることは集合と補集合がともに半決定可能であることと同値であることを示し、停止までのステップ数を計算可能な関数で上から押さえられないことを導く。
記法は 万能Turing機械 の記事に合わせる。$\mathbb{N}=\{0,1,2,\dots\}$、$M_e$ は番号 $e$ の機械(同記事の定義「番号から決まる機械」)、「入力 $x$ で停止する」とは入力 $x$ の初期様相から停止すること(Turing機械 の記事の定義「様相と計算」「Turing 機械が計算する関数」)とする。万能Turing機械 の記事の定義「1 ステップの関数」の原始再帰的な関係 $\operatorname{Hlt}(e,k)$($k$ が表す様相が $M_e$ の停止様相であること)と、同記事の節「万能関数は μ再帰関数である」で定めた、計算を $s$ ステップ進めた様相の符号 $\operatorname{conf}(e,x,s)$(原始再帰関数)を使う。
次の 2 つの事実を使う。どちらもこの記事では証明しない。
$A\subset\mathbb{N}^k$ とする。
半決定可能な集合は、計算可能枚挙(computably enumerable)、帰納的可算(recursively enumerable)ともよばれる。空でない半決定可能な集合は計算可能な全域関数の値域として並べ上げられ、この言い換えが「枚挙」の名の由来である(OLT26 Theorem 30.9、p. 455。この記事では証明しない)。(A) により、定義の「Turing 計算可能」は「μ再帰的」に置き換えてよい。決定可能な $A$ は μ再帰関数 の記事の意味の再帰的な関係である。
$$
H:=\{(e,x)\in\mathbb{N}^2\mid M_e\text{ は入力 }x\text{ で停止する}\},\qquad K:=\{e\in\mathbb{N}\mid(e,e)\in H\}
$$
とおく。$H$ を 停止集合、$K$ を 自己停止集合 という。$H$ が決定可能かどうかという問いを 停止問題 という。
停止したときのテープの形は問わない。万能Turing機械 の記事の万能関数 $u(e,x)$ は、停止したテープが形の正しい $1^y$ のときだけ値をもつので、その定義域は $H$ に含まれるが、一般には $H$ より小さい(同記事の例「停止しない番号と形の正しくない出力」の 2)。
個々の機械については、このように停止するかどうかが分かることも多い。停止問題が問うのは、すべての番号と入力に対して一様に答える 1 つの手順があるかどうかである。
停止までのステップ数を区切れば、判定はできる。
すべての $e,x,s$ について、$\operatorname{Hlt}(e,\operatorname{conf}(e,x,s))$ が成り立つことは、$M_e$ が入力 $x$ で $s$ ステップ以内に停止することと同値である。とくに
$$
H_{\le}:=\{(e,x,s)\mid M_e\text{ は入力 }x\text{ で }s\text{ ステップ以内に停止する}\}
$$
は決定可能であり、$(e,x)\in H\iff\exists s\,\bigl((e,x,s)\in H_{\le}\bigr)$ である。
$M_e$ の入力 $x$ からの計算を $C_0,C_1,\dots$ とする。万能Turing機械 の記事の定理「万能関数の標準形」の証明の段 1 により、$C_s$ が存在すれば $\operatorname{conf}(e,x,s)$ は $C_s$ を表し、計算が $C_n$($n< s$)で停止していれば $\operatorname{conf}(e,x,s)=\operatorname{conf}(e,x,n)$ である。$s$ ステップ以内に停止するなら、停止様相 $C_n$($n\le s$)を表す $\operatorname{conf}(e,x,s)=\operatorname{conf}(e,x,n)$ について、同記事の補題「1 ステップの関数の正しさ」により $\operatorname{Hlt}$ が成り立つ。$s$ ステップ以内に停止しないなら、$C_s$ は存在して停止様相でなく、同じ補題により $\operatorname{Hlt}$ は成り立たない。
$\operatorname{Hlt}$ は原始再帰的な関係、$\operatorname{conf}$ は原始再帰関数なので、$H_{\le}$ の特性関数 $(e,x,s)\mapsto\chi_{\operatorname{Hlt}}(e,\operatorname{conf}(e,x,s))$ は原始再帰関数であり、(A1) により Turing 計算可能である。最後の主張は定義から明らかである。$\square$
自己停止集合 $K$ と停止集合 $H$ は、どちらも決定可能でない。すなわち、入力 $(e,x)$ に対して、$M_e$ が入力 $x$ で停止するなら $1$、停止しないなら $0$ を出力して必ず停止する Turing 機械は存在しない。
$K$ について. $K$ が決定可能だとすると、$\chi_K$ は Turing 計算可能なので、(A2) により μ再帰関数である。全域関数 $g(x,s):=\chi_K(x)$ に μ 作用素を施して
$$
d(x):\simeq\mu s\,[\,g(x,s)=0\,]
$$
とおく。$g$ は全域的なので、$d(x)$ は $\chi_K(x)=0$ のとき $0$ で、$\chi_K(x)=1$ のとき定義されない。すなわち、$d(x)$ が定義されるのは $x\notin K$ のときちょうどである。$d$ は μ再帰関数なので、(A1) により Turing 計算可能であり、(B) により $M_e$ が $d$ を計算する番号 $e$ がある。Turing機械 の記事の定義「Turing 機械が計算する関数」により、$M_e$ は $d(x)$ が定義されるとき停止し、定義されないとき停止しない。したがってすべての $x$ について
$$
(e,x)\in H\iff d(x)\text{ が定義される}\iff x\notin K\iff(x,x)\notin H
$$
である。$x=e$ とおくと $(e,e)\in H\iff(e,e)\notin H$ となり、矛盾する。
$H$ について. $H$ が決定可能なら、$\chi_K(x)=\chi_H(x,x)$ は Turing 計算可能な関数と $x\mapsto(x,x)$ の合成なので Turing 計算可能になり、前半に反する。$\square$
証明の要は、「自分の番号を入力されたときに停止するかどうか」を反転させる機械 $M_e$ を作り、それに自分自身の番号を与えることである。これは Cantorの対角線論法 と同じ形をしている。行を機械 $M_0,M_1,\dots$、列を入力 $0,1,\dots$ として「停止する・しない」の表を作ると、$d$ は対角線を反転したものであり、どの行とも対角線のところで食い違う。停止の判定ができるなら $d$ が計算でき、表のどこかの行に現れるはずなので矛盾する。
万能Turing機械 の記事の定理「万能関数の全域的な延長の不存在」の後の注意も、同じ結論を別の道筋で述べている。そこでは、停止の判定ができれば万能関数を全域的な計算可能関数に延長できてしまうことから矛盾を導いている。
停止問題は決定できないが、「停止する」側は確かめられる。
$H$ と $K$ は半決定可能である。
$h(e,x):\simeq\mu s\,\bigl[\,1\mathbin{\dot-}\chi_{\operatorname{Hlt}}(e,\operatorname{conf}(e,x,s))=0\,\bigr]$ とおく。μ 作用素を施す関数は原始再帰関数なので全域的であり、$h$ は μ再帰関数である。lem-hp-record により、$h(e,x)$ が定義されるのは、ある $s$ で $M_e$ が入力 $x$ で $s$ ステップ以内に停止するとき、すなわち $(e,x)\in H$ のときちょうどであり、そのとき値は停止までのステップ数である。(A1) により $h$ は Turing 計算可能なので、$H=\operatorname{dom}h$ は半決定可能である。$K$ は $x\mapsto h(x,x)$ の定義域である。$\square$
$h$ を計算する機械は、番号 $e$ の機械を入力 $x$ で 1 ステップずつ動かし、停止したらそのステップ数を出力する。停止しなければ $h$ を計算する機械も停止しない。これが「動かしてみれば停止する側だけは確かめられる」ことの正確な形である。lem-hp-record と合わせると、$H$ は決定可能な集合 $H_{\le}$ の射影であり、「ステップ数 $s$ が存在する」という量化記号 1 つが決定不能性を生んでいる。
$A\subset\mathbb{N}$ について、$A$ が決定可能であることと、$A$ と補集合 $\mathbb{N}\setminus A$ がともに半決定可能であることは同値である。
決定可能なら:$\chi_A$ は (A2) により μ再帰関数で、$f(x):\simeq\mu s\,[\,1\mathbin{\dot-}\chi_A(x)=0\,]$ は $x\in A$ のときちょうど定義される μ再帰関数である。(A1) により Turing 計算可能なので、$A$ は半決定可能である。$\chi_{\mathbb{N}\setminus A}=1\mathbin{\dot-}\chi_A$ も Turing 計算可能なので、補集合も同様である。
逆を示す。$A=\operatorname{dom}f$、$\mathbb{N}\setminus A=\operatorname{dom}g$($f,g$ は Turing 計算可能)とし、(B) により $M_{e_1}$ が $f$ を、$M_{e_2}$ が $g$ を計算する番号 $e_1,e_2$ をとる。Turing機械 の記事の定義「Turing 機械が計算する関数」により、$x\in A$ は $M_{e_1}$ が入力 $x$ で停止することと、$x\notin A$ は $M_{e_2}$ が入力 $x$ で停止することと同値である。
$$
t(x):\simeq\mu s\,\bigl[\,\bigl(1\mathbin{\dot-}\chi_{\operatorname{Hlt}}(e_1,\operatorname{conf}(e_1,x,s))\bigr)\cdot\bigl(1\mathbin{\dot-}\chi_{\operatorname{Hlt}}(e_2,\operatorname{conf}(e_2,x,s))\bigr)=0\,\bigr]
$$
とおく。どの $x$ も $A$ か $\mathbb{N}\setminus A$ に属するので、どちらかの機械が停止し、lem-hp-record により $t$ は全域的な μ再帰関数である。
$$
\chi_A(x)=\chi_{\operatorname{Hlt}}\bigl(e_1,\operatorname{conf}(e_1,x,t(x))\bigr)
$$
を示す。$x\in A$ なら、$x\notin\mathbb{N}\setminus A$ なので $M_{e_2}$ は入力 $x$ で停止せず、$t(x)$ は $M_{e_1}$ が $t(x)$ ステップ以内に停止する最小の $s$ であり、右辺は $1$ である。$x\notin A$ なら $M_{e_1}$ は停止しないので、lem-hp-record により右辺は $0$ である。右辺は μ再帰関数の合成なので、(A1) により $\chi_A$ は Turing 計算可能である。$\square$
証明の手順は、2 台の機械を交互に 1 ステップずつ動かし、先に停止したほうで答えを決めるものである。片方だけでは、停止しないときに答えが出ない。
$\mathbb{N}\setminus K$ と $\mathbb{N}^2\setminus H$ は半決定可能でない。
$\mathbb{N}\setminus K$ が半決定可能なら、thm-hp-semidecidable と thm-hp-post により $K$ は決定可能になり、thm-hp-undecidable に反する。$\mathbb{N}^2\setminus H=\operatorname{dom}g$($g$ は Turing 計算可能)なら、$\mathbb{N}\setminus K=\operatorname{dom}(x\mapsto g(x,x))$ は半決定可能になり、前半に反する。$\square$
全域的な Turing 計算可能関数 $b\colon\mathbb{N}^2\to\mathbb{N}$ で、$(e,x)\in H$ ならば $M_e$ が入力 $x$ で $b(e,x)$ ステップ以内に停止するようなものは存在しない。
そのような $b$ があったとする。$(e,x)\in H$ なら $M_e$ は $b(e,x)$ ステップ以内に停止し、$(e,x)\notin H$ ならどのステップ数でも停止しないので、lem-hp-record により
$$
\chi_H(e,x)=\chi_{\operatorname{Hlt}}\bigl(e,\operatorname{conf}(e,x,b(e,x))\bigr)
$$
である。$b$ は (A2) により μ再帰関数なので、右辺は全域的な μ再帰関数であり、(A1) により $\chi_H$ は Turing 計算可能になって thm-hp-undecidable に反する。$\square$
言い換えると、どんな計算可能な関数 $b$ をとっても、$b(e,x)$ ステップより長く動いてから停止する組 $(e,x)$ がある。停止するまで待つ時間を前もって計算で見積もることはできない。
thm-hp-semidecidable により $K=\operatorname{dom}f$ となる Turing 計算可能な $f$ があり、(B) により $f$ を計算する機械 $M_{e_0}$ がある。この 1 台の機械について、$\{x\mid(e_0,x)\in H\}=K$ は決定可能でない。停止問題の難しさは、無限個の機械を相手にすることから来るだけでなく、1 台の機械の中にすでに現れる。
停止問題は、ほかの問題が決定可能でないことを示す出発点になる。問題 $B$ を解く手順から停止問題を解く手順が作れれば、$B$ も決定可能でない。この方法で次のことが示される。いずれもこの記事では証明しない。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 停止までのステップ数に上限がない | 上限 $s$ も入力する $H_{\le}$ | 決定不能性 |
| すべての番号の機械を相手にする | 停止しない機械 1 台の番号 $e$ を固定した $\{x\mid(e,x)\in H\}=\emptyset$ | 決定不能性 |
| 状態の集合が有限 | 状態を無限個もつ「機械」 | $\chi_K$ が計算できないこと |
1 行目:lem-hp-record により $H_{\le}$ は決定可能である。
2 行目:ex-hp-examples の 2 の機械では、どの $x$ でも停止しないので、集合は空で決定可能である。ただし ex-hp-single-machine のように、1 台の機械を固定しても決定可能でない場合がある。どの番号で決定可能になるかは、機械によって違う。
3 行目:Turing機械 の記事の反例の確かめの 2 行目は、状態を無限個許すと任意の関数 $g\colon\mathbb{N}\to\mathbb{N}$ を「計算」する機械が作れることを示している。$g=\chi_K$ にとれば、自己停止集合の特性関数も「計算」できてしまう。thm-hp-undecidable の証明が使ったのは、機械が有限のデータで決まり番号 $e$ をもつこと((B))である。
表の行は条件を外す例であるが、条件はそのままで対象の集合を取り替えると、成り立つことが変わる場合もある。$K$ は半決定可能だが(thm-hp-semidecidable)、補集合 $\mathbb{N}\setminus K$ は半決定可能でない(cor-hp-complement)。停止する側と停止しない側は対称でない。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する