13.5 停止確率
13.4 節は機械を一つ取り替え,値を持つプログラムの全体が語頭のない集合になるようにした.その代償として係数2が入ったが,得たものは大きい.重み2−|𝑠|の総和が1を超えなくなったので,プログラムの全体に確率としての読み方が付いたからである.本節はまず,13.2 節が𝐾Uについて示した計算不可能性が𝐾Vでも成り立つことを見て,そこからVの停止の判定不可能性を出す.そのうえで,値を持つプログラム全体の重みを一つの実数にまとめ,その実数もまた計算できないことを示す.
停止問題という語を先に断っておく.プログラムを走らせる前に,それが値を返すかどうかを言い当てる問題のことである.13.2 節はこれに触れなかった.以下で判定できないと述べるのも,13.4 節で固定したVの停止についてだけである.同じ論法は 定義 13.1.4 のUについても通るが,本書はVについてだけ書く.
記述長も停止も決められない
定理 13.5.1. 自然数𝑥に𝐾V(𝑥)を対応させる関数は計算可能でない.
この主張は 命題 13.4.6 からも出る.𝐾V(𝑥) =2𝐾U(𝑥) +1だから,一方が計算可能なら他方も計算可能で,定理 13.2.3 を𝑦 :=0に当てれば矛盾するからである.以下でそうせずに Berry の探索をもう一度書くのは,矛盾を出す段がVの側の不変性,すなわち 定理 13.4.7 だけに乗ることを見せるためである.以下の証明も,𝐾V(𝑥) ≥𝑘を満たす𝑥があることを言う一段では 命題 13.4.6 を経由するが,そこから先にUは現れない.
証明. 𝑥 ↦𝐾V(𝑥)が計算可能だとする.
𝑘 ∈ℕに対し,𝐾V(𝑥) ≥𝑘を満たす𝑥のうち最小のものを𝑔(𝑘)と書く.そのような𝑥があることを見る.系 13.2.2 を𝑦 :=0に当てると𝐾U(𝑥) ≥𝑘を満たす𝑥があり,命題 13.4.6 より𝐾V(𝑥) =2𝐾U(𝑥) +1 ≥𝑘である.よって𝑔(𝑘)は定まる.𝑔(𝑘)は,𝑥 =0,1,2,…の順に𝐾V(𝑥)を計算して値が𝑘以上になる最初の𝑥を返す探索で求まり,この探索は必ず停止する.そこでM(𝑧,𝑦) :=𝑔(𝑧)(第2引数は使わない)と定めると,Church–Turing のテーゼよりMは計算可能であり,とくに 定義 13.1.3 の意味で機械である.
定理 13.4.7 をこのMに当てて定数𝑏 ∈ℕをとる.𝑘 ∈ℕとし,𝑠を𝑘の二進表示のビット列とすると,𝑠が表す自然数は𝑘だからM(𝑠,0) =𝑔(𝑘)であり,𝐾V(𝑔(𝑘)) ≤2|𝑘| +𝑏である.いっぽう𝑔(𝑘)の定め方から𝑘 ≤𝐾V(𝑔(𝑘))である.二つを合わせると,すべての𝑘 ∈ℕについて
𝑘≤2|𝑘|+𝑏が成り立つ.
これは𝑘を大きくとると破れる.𝑘 :=2𝑏+4とおくと,2𝑏+4の二進表示は1の後ろに0を𝑏 +4個並べたものだから|𝑘| =𝑏 +5であり,上の不等式は2𝑏+4 ≤3𝑏 +10になる.ところが𝑏についての帰納法より2𝑏 ≥𝑏 +1だから
2𝑏+4=16⋅2𝑏≥16𝑏+16>3𝑏+10である.矛盾した.◼
証明の筋は 定理 13.2.3 とまったく同じ Berry の探索で,違いは 定理 13.1.7 の代わりに 定理 13.4.7 を当てるところだけである.そこで係数2が入るので,破れる場所を探す不等式が𝑘 ≤|𝑘| +𝑏ではなく𝑘 ≤2|𝑘| +𝑏になる.右辺は𝑘の二進表示の桁数の2倍だから,𝑘が倍になるたびに2しか増えない.係数がいくつであっても,桁数に比例する量が𝑘そのものに追いつくことはないので,同じ矛盾が出る.
次に見るのはビット列を引数にとる対応についての主張である.13.1 節が計算可能と呼んだのは自然数を引数にとる関数だったので,ビット列を自然数に読み替える約束を先に一つ決めておく.
定義 13.5.2(ビット列を引数にとる対応の計算可能性). ビット列𝑠に,その先頭へ1を置いた列が表す自然数を対応させる読み替えを考える.ビット列に自然数を対応させる対応が 計算可能 であるとは,自然数を引数にとる計算可能な関数があって,どのビット列𝑠についても,𝑠の読み替え先を引数にしたその関数の値が,もとの対応が𝑠に与える値に等しいことをいう.
読み替えは単射で,像は1以上の自然数の全体である.先頭が1のビット列は,定義 13.1.2 より,それが表す自然数の二進表示そのものだからである.0は像に入らないので,定義 13.5.2 は自然数を引数にとる関数の0での値に何も要求していない.次の 系 13.5.3 の主張と 定理 13.5.8 の証明は,どちらもこの約束のうえにある.
系 13.5.3. ビット列𝑠に,V(𝑠)が値を持つとき1を,持たないとき0を返す対応は,定義 13.5.2 の意味で計算可能でない.
証明. その対応が計算可能だとする.𝑥 ∈ℕを与えて次の探索を行う.ビット列を長さの短い順に,長さの等しいものは先頭から見て0が先に来る順に一本ずつ並べ,各𝑠について,仮定した対応でV(𝑠)が値を持つかどうかを調べる.持たなければ次へ進む.持つならばVを𝑠に走らせて値を求め,それが𝑥に等しければ|𝑠|を返し,等しくなければ次へ進む.
命題 13.4.5 よりV(𝑠) =𝑥を満たす𝑠があるから,この探索は必ず停止する.並べ方が長さの短い順だから,返る値はV(𝑠) =𝑥を満たす𝑠の長さの最小,すなわち𝐾V(𝑥)である.値を持つと分かったプログラムだけを走らせているので,途中で止まらなくなることもない.よって𝑥 ↦𝐾V(𝑥)は計算の手続きで書き下せて,Church–Turing のテーゼより計算可能である.これは 定理 13.5.1 に反する.◼
系 13.5.3 が停止問題と呼ばれるものの,Vについての形である.Vに渡すプログラムについては,走らせる前に止まるかどうかを言い当てる手続きが無い.証明が使ったのは一手だけで,止まるかどうかが前もって分かるなら,短いプログラムから順に全部試して最短のものを見つけられる,というものである.逆に言えば,𝐾Vを求める手続きが無い理由は,短いプログラムを試し尽くせないところにある.走らせてみて止まらないとき,それが「まだ止まっていない」のか「永久に止まらない」のかが区別できない.
停止確率
定義 13.5.4(停止確率).
Ω:=∑𝑠:V(𝑠) が値を持つ2−|𝑠|と定め(𝑠はVが値を持つビット列の全体をわたる.可算個の和は 13.4 節で置いた約束のとおり,有限部分和の上限として読む),Vの 停止確率 と呼ぶ.
第3章 3.1 節と 3.4 節は,確率空間の点の集合をΩと書いている.本章のΩはそれとは別のもので,Vについて定まる一つの実数である.どちらも引数をとらないので,章をまたいで読むときは気をつけたい.この記号は Chaitin が導入したもので,記号そのものがこの量の名前として通っているため,本書では書き換えずに使う.
Ωの読み方は 定義 13.4.8 の𝑃Vと同じである.でたらめに投げたビット列をVに読ませるとき,𝑃V(𝑥)が「値が𝑥になる重み」だったのに対し,Ωは「何であれ値が返る重み」である.命題 13.5.5 はこれが0と1のあいだにあることを言っているので,確率と呼んでよい.両端はもっと狭められる.例 13.5.9 が1/4 ≤Ω ≤1/2を与える.
計算可能な実数
Ωが計算できるかどうかを問うには,実数について計算可能であるとは何かを決めなければならない.13.1 節で計算可能と呼んだのは自然数を引数にとる関数のことだったから,そのままでは実数に当てられないからである.決め方は素朴で,どんな精度を指定されてもその精度まで近い値を返す手続きがあることをいう.
定義 13.5.6(計算可能な実数). 𝑟を0以上の実数とする.𝑟が 計算可能 であるとは,自然数を値にとる計算可能な数列𝑎0,𝑎1,…があって,すべての𝑛 ∈ℕについて
𝑎𝑛2−𝑛≤𝑟+2−𝑛かつ𝑟≤𝑎𝑛2−𝑛+2−𝑛が成り立つことをいう.
二つの不等式を合わせると,𝑎𝑛 2−𝑛と𝑟の差が2−𝑛以下だと言っている.すなわち𝑎𝑛は𝑟を2−𝑛の刻みで測った目盛りの読みであり,𝑛を大きくすれば刻みはいくらでも細かくなる.この形をとった理由は二つある.一つは,近づける列を自然数の列にできることである.刻みの幅2−𝑛は𝑛で決まってしまうので,動くのは目盛りの読みだけであり,有理数の列を持ち出さずに済む.有理数の列で定めるなら,先に有理数の上での計算可能性を定めなければならない.もう一つは,差を引き算で書かずに,どちらの向きも足し算の形にしてあることである.有理数の計算可能な列で定める流儀もあり,そちらの列からは丸めを一段はさんでこの形の列が得られるが,本書はそれを示さない.その一段は形式化もされていない.
道具をもう一つ借りる.予算つきの実行(Kleene の標準形定理)と呼ぶ.計算の手続きで書き下せる部分関数と自然数𝑡に対し,その部分関数を与えられた引数に手数の予算𝑡で走らせた結果が定まり,結果は値を持たないか一つの自然数を返すかのどちらかである.借りるのは次の三つである.
- 予算𝑡と引数から結果を求める対応は計算可能である.
- 𝑡 ≤𝑡′のとき,予算𝑡で値𝑣が返るなら予算𝑡′でも𝑣が返る.
- その部分関数がその引数で値𝑣を持つことと,ある予算𝑡で結果が𝑣になることとは同値である.
当てる先は 定義 13.4.3 のVで,使うのは 補題 13.5.7 のΩ𝑡の定め方とその証明,および 定理 13.5.8 の証明である.本書はこれを証明しない.計算モデルを一つ選ばなければ「手数」そのものが定まらず,そこは 13.1 節で借りた枠組みの外にあるからである.
補題 13.5.7(下からの近似). 𝑡 ∈ℕに対し
Ω𝑡:=∑2−|𝑠|と定める(和は,長さが𝑡以下で,Vが予算𝑡で値を返すビット列𝑠の全体をわたる).このとき次の三つが成り立つ.第1に,2𝑡 Ω𝑡は自然数であり,𝑡 ↦2𝑡 Ω𝑡は計算可能な数列である.第2に,Ω𝑡は𝑡について単調非減少である.第3に,Ω𝑡の𝑡にわたる上限はΩに等しい.
証明.
-
和がわたる集合は,長さ𝑡以下のビット列の全体という有限集合の部分集合だから有限である.その元𝑠は|𝑠| ≤𝑡を満たすので2𝑡 2−|𝑠| =2𝑡−|𝑠|は自然数であり,2𝑡Ω𝑡はそれらの有限個の和だから自然数である.計算可能であることを見る.長さ𝑡以下のビット列を並べる手続きは有限回の繰り返しで書け,各々について予算𝑡で値が返るかどうかは予算つきの実行の第1の性質より計算可能に決まり,返るものについて2𝑡−|𝑠|を足す手続きも有限回で終わる.よって全体は必ず停止する手続きで書き下せて,Church–Turing のテーゼより計算可能である.
-
𝑡 ≤𝑡′とする.長さが𝑡以下なら長さは𝑡′以下であり,予算つきの実行の第2の性質より,予算𝑡で値が返るなら予算𝑡′でも返る.よってΩ𝑡′の和がわたる集合はΩ𝑡のそれを含み,項が非負だからΩ𝑡 ≤Ω𝑡′である.
-
まずΩ𝑡 ≤Ωを見る.予算つきの実行の第3の性質より,予算𝑡で値が返るビット列ではVは値を持つ.よってΩ𝑡は 定義 13.5.4 の和の有限部分和であり,和を有限部分和の上限として定めたことからΩ𝑡 ≤Ωである.逆向きを見る.Vが値を持つビット列からなる有限集合𝐹をとると,同じ性質より,各𝑠 ∈𝐹にある予算𝑡𝑠があって値が返る.𝐹は有限だから,𝑡𝑠と|𝑠|を𝑠 ∈𝐹の全体にわたって超える自然数𝑡∗がとれる.第2の主張と同じ理由で𝐹の元はどれも予算𝑡∗で値が返り,長さも𝑡∗以下だから,𝐹はΩ𝑡∗の和がわたる集合に含まれる.項が非負だから∑𝑠∈𝐹2−|𝑠| ≤Ω𝑡∗である.Ωはこれら有限部分和の上限だから,ΩはΩ𝑡の上限以下である.二つを合わせて,上限はΩに等しい.
◻
Ω𝑡はΩを下から近づける.予算を増やせば止まるプログラムが見つかっていくので値は増えるいっぽうで,どこまでも増やせばΩに届く.ところが,いまΩ𝑡がΩにどれだけ近いかは,これだけでは分からない.まだ見つかっていない停止するプログラムがどれだけの重みを持つかを言う手立てが無いからである.次の定理が示すのは,その手立ては手続きとしては存在しないということである.
定理 13.5.8(停止確率は計算可能でない). Ωは 定義 13.5.6 の意味で計算可能でない.
証明の要点は一つだけである.Ωを上からも近づけられるなら,「あとどれだけの重みが残っているか」が分かり,残りが2−𝑛を切った段から先では,長さ𝑛のプログラムがもう止まらないと言い切れる.下からの近似Ω𝑡は 補題 13.5.7 のとおり手続きで求まるので,上からも近づけられると停止が判定できてしまう.
証明. 命題 13.5.5 よりΩは0以上だから 定義 13.5.6 を当てられる.Ωが計算可能だとし,その定義の数列𝑎0,𝑎1,…をとる.
各𝑛 ∈ℕについて,条件
𝑎𝑛+22−(𝑛+2)≤Ω𝑡+2−(𝑛+1)を満たす𝑡を探す.そのような𝑡があることを見る.補題 13.5.7 の第3の主張よりΩ𝑡の上限はΩであり,2−(𝑛+2)は正だから,Ω −2−(𝑛+2) <Ω𝑡を満たす𝑡がある.定義 13.5.6 の第1の不等式を𝑛 +2に当てると𝑎𝑛+2 2−(𝑛+2) ≤Ω +2−(𝑛+2)だから,この𝑡について
𝑎𝑛+22−(𝑛+2)≤Ω+2−(𝑛+2)<Ω𝑡+2−(𝑛+2)+2−(𝑛+2)=Ω𝑡+2−(𝑛+1)である.
探索が手続きになることを見る.条件の両辺に2𝑡+𝑛+2を掛けると
𝑎𝑛+22𝑡≤(2𝑡Ω𝑡)2𝑛+2+2𝑡+1となり,補題 13.5.7 の第1の主張よりこれは自然数どうしの比較である.𝑎は計算可能な数列だから,𝑛と𝑡から両辺を求めて比べる手続きは有限回の計算で終わる.いま見たとおり条件を満たす𝑡はあるので,𝑛を与えて条件を満たす最小の𝑡を返す探索は必ず停止し,Church–Turing のテーゼよりこの対応は計算可能である.その値を𝑡𝑛と書く.
𝑡𝑛での近さを見る.定義 13.5.6 の第2の不等式を𝑛 +2に当てるとΩ ≤𝑎𝑛+2 2−(𝑛+2) +2−(𝑛+2)であり,𝑡𝑛が条件を満たすことと合わせて
Ω≤Ω𝑡𝑛+2−(𝑛+1)+2−(𝑛+2)<Ω𝑡𝑛+2−𝑛である(右側は2−(𝑛+1) +2−(𝑛+2) =3 ⋅2−(𝑛+2) <4 ⋅2−(𝑛+2) =2−𝑛による).
停止を判定する.ビット列𝑠をとり,𝑛 :=|𝑠|と置く.V(𝑠)が値を持つことと,Vを𝑠に予算𝑡𝑛で走らせて値が返ることは同値である.一方の向きは予算つきの実行の第3の性質から出る.逆を示す.V(𝑠)が値を持ち,予算𝑡𝑛では値が返らないとすると,𝑠はΩ𝑡𝑛の和がわたる集合に属さない.いっぽうその集合の元も𝑠も,どれもVが値を持つビット列だから,その集合に𝑠を足したものは 定義 13.5.4 の和の有限部分和を与え,
Ω𝑡𝑛+2−𝑛≤Ωである.これは直前に得た不等式に反する.
矛盾を出す.いま見たことから,ビット列𝑠に対してV(𝑠)が値を持つかどうかは,𝑡|𝑠|を求めてから予算𝑡|𝑠|でVを走らせれば決まる.𝑛 ↦𝑡𝑛は計算可能で,予算つきの実行の第1の性質より結果を求める対応も計算可能だから,この判定は必ず停止する手続きで書き下せて,Church–Turing のテーゼより計算可能である.これは 系 13.5.3 に反する.◼
したがって,計算できないのはΩの値そのものというより,近似の誤差のほうである.
例 13.5.9(停止確率の両側からの見積もり). 1/4 ≤Ω ≤1/2である.
証明. 下から抑える.先頭のビットが0であるビット列𝑑をとる.定義 13.1.4 よりU(𝑑,0)は𝑑の先頭の0より後ろのビット列が表す自然数だから,そのような𝑑ではつねに値を持つ.𝑠𝑑を𝑑の自己限定形(定義 13.4.3)とすると,𝑠𝑑の先頭から最初の0までの1の個数は|𝑑|,その後ろは𝑑だから,定義 13.4.3 よりV(𝑠𝑑) =U(𝑑,0)であり,とくにV(𝑠𝑑)は値を持つ.その長さは|𝑠𝑑| =2|𝑑| +1である.また𝑠𝑑の最初の0より後ろが𝑑だから,𝑑 ≠𝑑′なら𝑠𝑑 ≠𝑠𝑑′である.
長さごとに数える.𝑗 ≥0とすると,先頭が0で長さが𝑗 +1のビット列は,後ろの𝑗ビットの選び方だけあるから2𝑗本であり,そのそれぞれについて|𝑠𝑑| =2(𝑗 +1) +1 =2𝑗 +3である.
𝐽 ≥0を任意にとる.いま数えたビット列のうち|𝑑| ≤𝐽 +1にあたる𝑠𝑑は相異なる有限個で,どれもVが値を持つから,それらの重みの和は 定義 13.5.4 の和の有限部分和である.その値は
𝐽∑𝑗=02𝑗2−(2𝑗+3)=𝐽∑𝑗=02−𝑗−3=14(1−2−(𝐽+1))である.和を有限部分和の上限として定めたことからΩはこの値以上であり,𝐽を大きくすると右辺は1/4に近づくから,Ω ≥1/4である.
上から抑える.まず,Vが値を持つビット列の先頭のビットはつねに1である.命題 13.4.4 よりそのようなビット列𝑠はあるビット列𝑑の自己限定形であり,𝑑が空列だとすると𝑠は0の一文字で,V(𝑠) =U(𝑑,0)は 定義 13.1.4 より値を持たないからである.よって|𝑑| ≥1であり,𝑠は1で始まって,その長さは|𝑠| =2|𝑑| +1 ≥3である.
Vが値を持つビット列𝑠に,その先頭の1を落とした列𝑠−を対応させる.𝑠は先頭に1を戻せば𝑠−から決まるから,この対応は単射であり,|𝑠−| =|𝑠| −1 ≥2である.𝑠−の全体は空列を含まない語頭のない集合である.空列を含まないことは長さが2以上であることによる.またVが値を持つ二つのビット列𝑠と𝑠′について𝑠−が(𝑠′)−の語頭なら,先頭に1を戻した𝑠は𝑠′の語頭であり,命題 13.4.4 よりVが値を持つビット列の全体は語頭のない集合だから𝑠 =𝑠′となり,したがって𝑠− =(𝑠′)−である.
Vが値を持つビット列の有限個の集まりを𝐹とすると,いま見たことと 補題 13.4.2 から
∑𝑠∈𝐹2−|𝑠|=12∑𝑠∈𝐹2−|𝑠−|≤12である.和を有限部分和の上限として定めたことからΩ ≤1/2である.◼
下からの評価が使ったのは,先頭のビットが0であるビット列ではUがつねに値を持つという 定義 13.1.4 の一事だけである.そのようなビット列は長さごとに倍々に増え,その自己限定形はどれもVで止まるので,それだけでΩの1/4は埋まる.上からの評価が使ったのは,値を持つプログラムがどれも1で始まるという一事だけで,それだけで 命題 13.5.5 の1が半分になる.定理 13.5.8 が言っているのは,こうして両側から挟んでいく作業に終わりが見えないということであって,個々の見積もりができないということではない.実際 補題 13.5.7 のΩ𝑡は,予算𝑡を与えれば有限の計算で求まる.
Ωが出るのは本節までである.次節が測るのは一つの自然数についての記述の長さで,Vが値を持つプログラムの全体にわたる重みは相手にしない.次節は𝐾Vに戻り,記述を二つの部分に分ける見方を入れる.対象そのものを直に書き下すかわりに,まず対象を含む有限集合を書き,次にその中での位置を書く.前半が対象の型を,後半が型の中でのばらつきを担うという分け方で,第12章の型による二段符号と同じ考えを,分布を持たない一つの対象に当てたものである.
InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.