13.2 圧縮できない対象と計算不可能性
13.1 節は一つの自然数に𝐾Uという尺度を与え,機械の選び方が定数のずれにしか効かないことを見た.尺度が定まったので,次は何が測れるかである.命題 13.1.6 はどの𝑥についても𝐾U(𝑥) ≤|𝑥| +1を与えていた.すなわち,どの対象も自分を書き写す長さでは書き出せる.問いは逆向きで,それより短く書き出せる対象がどれだけあるかである.
答えは数え上げから出る.短い指示は本数が限られているので,短く書き出せる対象も本数が限られている.本節の主張はすべてこの一行から出る.どんな長さをとってもそれ以上の複雑性をもつ対象があること(系 13.2.2)も,𝐾Uの値を返す手続きが無いこと(定理 13.2.3)もそうである.
記述の短い対象を数える
定理 13.2.1. 𝑦,𝑘 ∈ℕとすると,集合{𝑥 ∈ℕ :𝐾U(𝑥 ∣𝑦) <𝑘}は有限であり,その要素数は2𝑘より小さい.
証明. 𝑆 :={𝑥 ∈ℕ :𝐾U(𝑥 ∣𝑦) <𝑘}とおく.各𝑥 ∈𝑆に対し,命題 13.1.5 より|𝑠| =𝐾U(𝑥 ∣𝑦)かつU(𝑠,𝑦) =𝑥を満たすビット列𝑠があるので,そのようなものを一つ選んで𝑠𝑥と書く.|𝑠𝑥| =𝐾U(𝑥 ∣𝑦) <𝑘である.
対応𝑥 ↦𝑠𝑥は単射である.というのも𝑥,𝑥′ ∈𝑆が𝑠𝑥 =𝑠𝑥′を満たすなら,Uは部分関数で,値を持つならその値は一つだから,𝑥 =U(𝑠𝑥,𝑦) =U(𝑠𝑥′,𝑦) =𝑥′となるからである.
長さが𝑘未満のビット列の本数を数える.長さ𝑗のビット列は2𝑗本だから,𝑗 =0,1,…,𝑘 −1について足して
20+21+⋯+2𝑘−1=2𝑘−1本である.𝑆の元はこの2𝑘 −1本の中の相異なるビット列に写るから,𝑆は有限で,その要素数は2𝑘 −1以下,とくに2𝑘より小さい.◼
数え方の要点は一つだけである.指示は対象を決めるが,対象は指示を決めない.それでも各𝑥に最短の指示を一つ選んでしまえば,選んだ先は相異なるので,対象の個数を指示の本数で抑えられる.そして指示はビット列だから,長さで区切れば本数が数えられる.長さが𝑘未満のビット列は2𝑘 −1本しかないので,複雑性が𝑘未満の対象も2𝑘 −1個までである.
系 13.2.2. 𝑦,𝑘 ∈ℕとすると,𝐾U(𝑥 ∣𝑦) ≥𝑘を満たす𝑥 ∈ℕが存在する.
証明. そのような𝑥が無いとすると,すべての𝑥 ∈ℕが𝐾U(𝑥 ∣𝑦) <𝑘を満たすので,定理 13.2.1 の集合はℕの全体になる.ところが 定理 13.2.1 よりその集合は有限であり,ℕは無限だから矛盾する.◼
系 13.2.2 は,どれだけ大きな𝑘をとっても,𝑘ビット未満では書き出せない自然数があると言っている.この意味で圧縮できない対象はいくらでもある.ただし証明は,そのような𝑥を一つも指していない.有限個しか無いはずの集合が全体になってしまう,という数え方の矛盾から存在を出しているだけである.指す手立てのほうは,次の 定理 13.2.3 の証明が扱う.そこでは,𝐾Uの値を返す手続きがあると仮定し,それを使って𝐾U(𝑥 ∣𝑦) ≥𝑘を満たす𝑥を探す手続きを組み立てて,矛盾を出す.
記述長を返す手続きはない
定理 13.2.3. 𝑦 ∈ℕとすると,自然数𝑥に𝐾U(𝑥 ∣𝑦)を対応させる関数は計算可能でない.
証明. 𝑦 ∈ℕを固定し,𝑥 ↦𝐾U(𝑥 ∣𝑦)が計算可能だとする.
𝑘 ∈ℕに対し,𝐾U(𝑥 ∣𝑦) ≥𝑘を満たす𝑥のうち最小のものを𝑓(𝑘)と書く.系 13.2.2 よりそのような𝑥は存在するので,𝑓(𝑘)は定まる.𝑓(𝑘)は,𝑥 =0,1,2,…の順に𝐾U(𝑥 ∣𝑦)を計算して,値が𝑘以上になる最初の𝑥を返す探索で求まり,この探索は必ず停止する.そこでM(𝑧,𝑦′) :=𝑓(𝑧)(第2引数は使わない)と定めると,Church–Turing のテーゼよりMは計算可能であり,とくに 定義 13.1.3 の意味で機械である.
定理 13.1.7 をこのMに当てて定数𝑏 ∈ℕをとる.𝑘 ∈ℕとし,𝑠を𝑘の二進表示のビット列とすると,𝑠が表す自然数は𝑘だからM(𝑠,𝑦) =𝑓(𝑘)であり,𝐾U(𝑓(𝑘) ∣𝑦) ≤|𝑠| +𝑏 =|𝑘| +𝑏である.いっぽう𝑓(𝑘)の定め方から𝑘 ≤𝐾U(𝑓(𝑘) ∣𝑦)である.二つを合わせると,すべての𝑘 ∈ℕについて
𝑘≤|𝑘|+𝑏が成り立つ.
これは𝑘を大きくとると破れる.𝑘 :=2𝑏+2とおくと,2𝑏+2の二進表示は1の後ろに0を𝑏 +2個並べたものだから|𝑘| =𝑏 +3であり,上の不等式は2𝑏+2 ≤2𝑏 +3になる.ところが𝑏についての帰納法より2𝑏 ≥𝑏 +1だから
2𝑏+2=4⋅2𝑏≥4𝑏+4>2𝑏+3である.矛盾した.◼
この証明は Berry のパラドックスと呼ばれる古い言い回しを,そのまま定理にしたものである.「三十文字未満の日本語で言い表せない最小の自然数」という言い回しは,二十三文字でその数を言い表しており,自分自身に反している.証明の𝑓(𝑘)がこの言い回しにあたり,𝑘を二進表示で書き下す|𝑘|ビットが「三十文字」にあたる.言い回しのほうは「言い表せる」という言葉が曖昧なためにパラドックスにとどまるが,𝐾Uの側ではその言葉が 定義 13.1.4 で確定しているので,パラドックスは𝐾Uが計算可能だという仮定への反証になる.
定理 13.2.3 が否定しているのは,すべての𝑥について𝐾U(𝑥 ∣𝑦)の値を返す手続きの存在である.個々の𝑥について上界を与えることは,命題 13.1.6 や 定理 13.1.7 のとおりできる.できないのは,どの𝑥についても与えた上界が最短だと確かめられる,一つの手続きを持つことのほうである.確かめようとすると,それより短い指示を試して,どれも𝑥を出さないことを見なければならない.短い指示は有限本しかないのだから全部走らせればよさそうだが,走らせた指示が値を返さないとき,まだ返っていないのか永久に返らないのかを見分けなければならない.その見分けがつかないことは,Uについても言える.見分けがつくなら,短い指示から順に,止まると分かったものだけを走らせて最短のものを見つけられ,定理 13.2.3 に反するからである.本書はこれを,13.4 節で固定する別の機械についてだけ 13.5 節で書く.
書き写す長さとの隔たり
例 13.2.4(書き写す長さはほぼ達成される). 𝑛 ≥1とする.0以上2𝑛未満のどの自然数𝑥についても𝐾U(𝑥) ≤𝑛 +1であり,0以上2𝑛未満の自然数のうち少なくとも一つは𝐾U(𝑥) ≥𝑛を満たす.
証明. 前半から見る.𝑥を0以上2𝑛未満の自然数とする.𝑥 =0なら|𝑥| =0 ≤𝑛である.𝑥 ≥1なら,𝑥の二進表示の桁数を𝑗として,先頭の桁が1であることから𝑥 ≥2𝑗−1であり,2𝑗−1 ≤𝑥 <2𝑛と 補題 8.2.5 より𝑗 ≤𝑛である.どちらの場合も|𝑥| ≤𝑛だから,命題 13.1.6 を𝑦 :=0に当てて𝐾U(𝑥) ≤|𝑥| +1 ≤𝑛 +1を得る.
後半に移る.定理 13.2.1 を𝑦 :=0,𝑘 :=𝑛に当てると,𝐾U(𝑥) <𝑛を満たす自然数は2𝑛個より少ない.0以上2𝑛未満の自然数はちょうど2𝑛個あるから,そのすべてが𝐾U(𝑥) <𝑛を満たすことはない.◼
例 13.2.4 の二つの評価の隔たりは1ビットである.上からは,𝑛ビットで書ける対象の複雑性はどれも𝑛 +1以下で,これは 命題 13.1.6 の書き写す上界にほかならない.下からは,そのうち少なくとも一つが𝑛以上で,これは 定理 13.2.1 の数え上げから出る.つまり,書き写すという素朴な手続きは,最悪の対象については1ビットしか損をしていない.機械を工夫する余地は,対象を選べば大きいが(例 13.1.9),すべての対象について一律に稼ぐことはできない.
ここまでの𝐾Uは一つの自然数についての量で,分布は一度も出てこなかった.次節は,情報源から出た長さ𝑛のブロックにこの量を当て,1文字あたりの平均が第2章のエントロピーに近づくことを示す.分布についての量と,一本の系列についての量が,そこで初めて結びつく.
InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.