13.1 記述の長さと万能機械

第2章から第12章まで,系列がどれだけ縮むかはつねに分布を通して測ってきた.第2章の漸近等分配性は情報源の分布からエントロピーを取り出し,第4章の符号長の下界も,第12章の冗長度も,分布があってはじめて書ける量である.ところが実際に手元にあるのは,分布ではなく一本の系列である.個並べた系列と,コインを回投げて得た系列を並べれば,前者のほうが単純だと言いたくなる.どちらも同じ一様分布から同じ確率で出うるのだから,この単純さは分布では説明できない.

本章は,一つの対象そのものに複雑性の尺度を与える.考え方は素朴で,その対象を書き出す手続きのうち,いちばん短いものの長さを複雑性とする.個並べた系列は「回書け」という短い手続きで書き出せる.コイン投げの結果にそのような手続きがあるとは限らず,短い手続きを持つ対象がどれだけあるかは 13.2 節で数える.手続きを長さで測るには,手続きを読んで実行する側の規約を一つ決めなければならない.規約を取り替えれば長さも変わるので,このままでは対象だけで決まる量にならない.本節は規約を一つ固定する作り方を与え,そう固定して測ると,どの規約で測るより定数のぶんしか損をしないこと(定理 13.1.7系 13.1.8)までを示す.

本章では対数の底をにとる.測るのはビット列の長さであり,の形の量を数えるので,指数と対数の底をそろえておくと式が読みやすい.底を明示するため,以下ではと書く.エントロピー定義 1.1.1)と二値エントロピー例 1.1.2)もこの底で測り,単位はビットである.対数が狭義単調増加であること(補題 8.2.5)も本章を通して使う.

計算の手続き

本章が組み立てるものは,どれも計算の手続きで書ける対応である.その言葉を,本書は定義しない.定義するには計算モデル(Turing 機械や部分再帰関数)を一つ選んで書き下す必要があり,それは本書の主題ではないからである.そのかわり,以下で手続きと呼ぶものの姿を先に述べておく.有限個の場合分けと,有限回の繰り返しと,止まるとは限らない探索とを組み合わせて書き下せるもの,というのがそれである.最後の一つがあるために,手続きは引数によっては答えを返さないことがある.たとえば,自然数を受け取っての順に調べ,より小さい数が見つかったところで止めてその数を返す,という手続きは,どのについても止まらないので,どの引数でも答えを返さない.答えが返らない理由はつねに,手続きが止まらないことにある.

定義 13.1.1(部分計算可能な部分関数と計算可能な関数). 自然数をいくつか受け取って自然数を返す部分関数のうち,計算の手続きで定まるものを 部分計算可能 と呼ぶ.部分計算可能な部分関数のうち,すべての引数で値を持つものを 計算可能 と呼ぶ.

部分関数と書いたのは,いま見たとおり手続きが引数によっては答えを返さないからである.値を持たない引数があってよい,という一点だけが,関数との違いである.

そのうえで,計算可能性の理論から二つ借りる.一つめを 部分計算可能関数の番号づけと万能定理 と呼ぶ(Kleene).自然数の対から自然数への部分関数の全体は非可算だが,手続きは有限個の文字を並べて書き下せるものなので,手続きで定まる部分関数は,書き下し方の全体と同じく高々可算個しかない.番号を与えられる余地があるのはそのためで,借りるのは次の主張である.自然数の対から自然数への部分計算可能な部分関数の全体に番号を与える対応があり,しかも三つ組を対応させる部分関数もまた部分計算可能である.

依存範囲は本章の全節である.本章が固定する二つの機械の定め方がこの枠組みの上にあるから,本章のどの主張もこれを認めたうえでの主張である.ただし直に当てるのは 定義 13.1.4 の万能機械定理 13.1.7 の二つで,13.4 節以降はそれらを経由してのみ依存する.後半の,三つ組を受け取る部分関数もまた部分計算可能だという主張を借りるのは,自身が計算の手続きで定まることを言うためで,当てるのは 定義 13.1.4 の直後である.を実際に走らせる手続きを組み立てる 13.4 節から 13.6 節までは,その一事に乗っている.

二つめを Church–Turing のテーゼ と呼ぶ.いま述べた姿で書き下せる対応,すなわち有限個の場合分けと有限回の繰り返しと止まるとは限らない探索とで書ける対応は 定義 13.1.1 の意味で部分計算可能であり,そのうち必ず停止して答えを返すものは計算可能である,という主張である.当てるのは本章が書き下す手続きで,本章のどの節にも一つ以上ある.ほかの主張はそれらを経由してのみこれに依存する.これは定理ではない.「計算の手続き」という言葉を 定義 13.1.1 のクラスで代表させるという約束であり,その言葉を定義しないと決めた以上,証明できる種類の主張ではない.

自然数とビット列

記述はビット列で書き,その長さを測る.いっぽう 定義 13.1.1 が相手にしているのは自然数を受け取る部分関数だから,二つを行き来する対応を決めておかなければならない.

定義 13.1.2(自然数とビット列の対応). 自然数には二進表示のビット列を対応させ,そのビット数をと書く(には空列を対応させるのでである).逆に,自然数を引数にとる関数にビット列を渡すときは,を二進表示として読んだ値を渡し,これを表す自然数 と呼ぶ(空列が表す自然数はとする).どの自然数についても,その二進表示が表す自然数はもとの自然数に等しい.ビット列については,が空列であるかの先頭のビットがであるとき,が表す自然数の二進表示はに等しい.

たとえばであり,についてである.二つの向きは対称ではない.戻らないのは先頭にの並ぶビット列で,たとえばが表す自然数は,その二進表示はであってには戻らない.先頭のが消えるというこの非対称は,13.4 節で機械を取り替える理由になる.二進表示として読ませる列の先頭にを足しても表す自然数は変わらないので,同じ値を出す指示がいくらでも長く作れてしまい,そこで邪魔になるからである.集合の要素数を書くと字面が重なるが,そちらは引数が集合である.

機械と記述長

定義 13.1.3(機械と記述長). 自然数の対から自然数への部分計算可能な部分関数を 機械 と呼ぶ.機械にビット列を渡すとは,が表す自然数を第引数に与えることをいい,その値をと書く.とは,がその引数で値を持ち,その値がであることをいう.機械に対し

𝐾M(𝑥𝑦):=min{|𝑠|:M(𝑠,𝑦)=𝑥}

と定め(はビット列の全体をわたる),についての 記述長 と呼ぶ.そのようなビット列が一つも無いときはと定める.

には,つねに機械を添字として書く.既刊の章は裸のを,第4章 4.3 節4.5 節第12章 12.3 節では Kraft の不等式の左辺として,第5章 5.3 節ではオッズの逆数の総和として,第6章 6.6 節では証明の中の定数として使っている.本章のはつねに機械を添字にとり,引数もとるので,裸のは本章に現れない.

形式化上の注記(本節共通). 一般の機械についての記述長,すなわち 定義 13.1.3に名前を与えた宣言は無く,その最小を使って書いた 系 13.1.8 に対応する単独の宣言も無い.機械を取り替えたときの評価は invariance (InformationTheory/Shannon/Kolmogorov/Invariance.lean) が,最小をとらずに記述そのものの長さを直に扱う形で述べている.

読み下しておく.に渡す指示で,は最初から手元にある知識である.は,を知ったうえでに書き出させる指示のうち,いちばん短いもののビット数にほかならない.機械は 定義 13.1.3 のとおり,ビット列を 定義 13.1.2 の表す自然数を通してしか見ない.先頭にを並べても値は変わらず長さだけが増えるから,この最小は,を満たす自然数の二進表示の長さの最小に等しい.それでも指示をビット列で書いて測るのは,このあとのがビット列そのものを読むからで,同じ形の式で二つを比べられるようにするためである.この量はを取り替えれば大きくも小さくもなる.極端な場合を見ておくと,引数によらずを返す機械をとれば,空列を渡すだけでが出るのでである.だから記述長そのものは対象だけで決まる量ではなく,機械と対象の組についての量である.本節の残りは,機械を一つ固定する作り方を与え,その機械で測ると,どの機械で測るより定数のぶんしか損をしないことを示す.

万能機械

指示の出し方を二つ用意し,先頭のビットで見分けることにする.一つめは「これから書くとおりに書け」で,先頭にを置き,その後ろにの二進表示をそのまま並べる.二つめは「番号の機械を,これから書く指示で走らせろ」で,先頭のに続けて番号の個数で書き,区切りのを置いてから指示を並べる.一つめは誰にでも使えるかわりにの長さだけ払う.二つめは,に見合った機械があれば短く済むかわりに,その機械の番号を書く分だけ余計に払う.この見分け方で,次の機械を定める.

定義 13.1.4(万能機械とコルモゴロフ複雑性). ビット列の対に自然数を対応させる部分関数を,の先頭のビットで場合を分けて次のように定める(が空列のとき,は値を持たない).

の先頭のビットがのとき,その後ろのビット列をとして,が表す自然数とする.

の先頭のビットがのとき,番目のビットから最初のが現れるまでのの個数を,そのより後ろのビット列をとし(番目以降にが現れないときは番目以降のビットの個数をを空列とする),とする.ここでは,部分計算可能関数の番号づけと万能定理が与える番号の部分関数である.

この万能機械 と呼ぶ.に対し

𝐾U(𝑥𝑦):=min{|𝑠|:U(𝑠,𝑦)=𝑥}

と定め(はビット列の全体をわたる),を知ったうえでのコルモゴロフ複雑性 と呼ぶ.また,第引数に何も渡さないことの代用としてを置き,と書く.

形式化: 万能機械 universalEval,コルモゴロフ複雑性 condComplexitycomplexity (ソース)

定義 13.1.3 の意味の機械ではない.機械はビット列を,それが表す自然数を通してしか見ないのに対し,はビット列そのものを読み,先頭のビットで場合を分けるからである.では,なぜ機械のほうをはじめからビット列の上で定めなかったのか.借りた番号づけが自然数の部分関数に番号を与えるものだからである.番号の相手が自然数を読む以上,定義 13.1.3 の機械もそれに合わせるほかない.が機械でないことで困ることは無い.以下でについて使うのは記述長の式と,が計算の手続きで定まるという一事だけで,どちらも 定義 13.1.3 の枠に入っていることを要求しないからである.

記述長は 定義 13.1.3 と同じ形の式で定まるので,の添字が機械の名前かかで読み分ければよい.を万能と呼ぶのは,どの機械の記述も定数の払いで真似できるからであって(定理 13.1.7),が機械の一つだからではない.その自身も計算の手続きで定まる.先頭のビットを読んで場合を分け,の並びを数えるところは Church–Turing のテーゼが与え,番号の部分関数を走らせるところは部分計算可能関数の番号づけと万能定理の後半が与える.

形式化上の注記(本章共通). 本文は,いまについて見たように,書き下した手続きが計算の手続きで定まることを Church–Turing のテーゼで認めて先へ進む.形式化の側は,そのうちのいくつかについて部分計算可能であることを証明している.自己限定万能機械そのものは prefixUniversalEval_partrec (InformationTheory/Shannon/Kolmogorov/PrefixComputability.lean),その機械を手数の予算をつけて走らせる手続きは prefixEvaln_primrec (InformationTheory/Shannon/Kolmogorov/OmegaNoncomputable.lean),型と型類から系列を復元する手続きは typeDecoder_partrec (InformationTheory/Shannon/Kolmogorov/EntropyRateUpper.lean),二部記述から対象を復元する手続きは twoPartUnpack_partreclistIndexDecoder_partrec,一点集合の符号を求める手続きは singletonCode_partrec (InformationTheory/Shannon/Kolmogorov/SufficientStatistic.lean) である.そのものについての宣言は無い.prefixUniversalEval_partrec が扱うのは,と同じ場合分けを第引数をに固定して書き直した部分関数である.

二つの出し方を式にするのは 命題 13.1.6定理 13.1.7 で,その前に,を定める最小が実際に達成されることを見ておく.

命題 13.1.5. とすると,かつを満たすビット列が存在する.

証明. を,の後ろにの二進表示をつないだビット列とする.の先頭のビットはで,その後ろはの二進表示だから,定義 13.1.4 よりの二進表示が表す自然数,すなわちである.よって集合は空でない自然数の集合であり,最小元をもつ.その最小元はにほかならず,しかもを満たすあるビット列の長さだから,そのが求めるものである.

形式化: condComplexity_spec (ソース)

命題 13.1.6. とするとである.

証明. を,の後ろにの二進表示をつないだビット列とすると,定義 13.1.4 よりである.の長さはの二進表示のビット数より大きいからであり,定義 13.1.4 の最小はこの値以下である.

形式化: condComplexity_le_natLen_add_one (ソース)

命題 13.1.6 は,どの自然数も,その二進表示の前にビットを添えるだけで書き出せることを言っているにすぎない.どんなに複雑な対象でも,複雑性はそれを書き下す長さにを足した値を超えない,という当たり前の上界である.おもしろいのはここから先で,機械を工夫すればこの上界をどれだけ下回れるか,そして工夫の余地がどこで尽きるかである.

不変性定理

定理 13.1.7(不変性定理). を機械とすると,定数があって,すべてのとすべてのビット列について,ならばが成り立つ.

証明. 部分計算可能関数の番号づけと万能定理より,となる番号がある.とおく.

とビット列を満たすとする.を,個並べ,次にを置き,最後にをつないだビット列とする.の先頭のビットはで,番目のビットから最初のが現れるまでのの個数は,そのより後ろはだから,定義 13.1.4 の先頭がの場合に当たってである.の長さはだから,定義 13.1.4 の最小はこの値以下である.

形式化: invariance (ソース)

系 13.1.8. を機械とすると,定数があって,すべてのについてである.

証明. 定理 13.1.7 の定数をとり,とする.のときは不等式が成り立つ.そうでないときは,定義 13.1.3 の最小をとる集合が空でないので,かつを満たすビット列がある(自然数の空でない部分集合は最小元をもつ).定理 13.1.7 をこのに当てるとである.

系 13.1.8 が,本節のはじめに述べた問いへの答えである.機械をどう選び直しても,より本質的に大きくなることはない.ずれはという定数までで,にもにも依らず,の番号だけで決まる.したがって,を固定して測ることは,どの機械で測るより定数のぶんしか損をしない.コルモゴロフ複雑性が対象の量として意味を持つのは,この一点による.

抑えているのは片側だけであることに注意したい.逆にで抑えることは,機械によってはできない(をけっして出力しない機械では 定義 13.1.3 よりである).機械の選び方に左右されないと言えるのはこの片側までで,別の番号づけから同じ作り方で組み立てた機械とのあいだでの値がどれだけ違いうるかについて,本書は何も述べない.一つのについてのの値そのものも,定義 13.1.4 が固定した番号づけに依って決まる.本章がにつねに機械を添字として書くのは,このためである.

例 13.1.9(の冪). 定数があって,すべてのについて次の二つが成り立つ.第でありである.第である.

証明. の二進表示はの後ろに個並べたものだからであり,命題 13.1.6に当てて第の主張を得る.

の主張に移る.M(𝑧,𝑦) :=2𝑧(第引数は使わない)と定めると,からを求める手続きは有限回の繰り返しで書けて必ず停止するから,Church–Turing のテーゼよりは計算可能であり,とくに 定義 13.1.3 の意味で機械である.定理 13.1.7 をこのに当てて定数をとる.とし,の二進表示のビット列とすると,が表す自然数はだからであり,である.

二つの上界の違いは,何を書き下しているかの違いである.第の上界という数そのものを書き写す長さで,第の上界を書いて「の冪をとれ」と言う長さである.の二進表示の桁数だから,が倍になるたびにしか増えない.したがってを大きくすれば,どこかで第の上界のほうが小さくなる.どこで小さくなるかはで決まり,定理 13.1.7 の証明のとおりに与えられた番号で決まるから,番号づけの取り方に依る.定理 13.1.7 が言っているのは,このように機械の側へ寄せた指示を,が定数の払いで真似できるということである.

本節は,記述を測る規約を一つに固定した.次節はその規約のもとで,短く書ける対象がどれだけあるかを数える.数えられるのは,指示のほうがビット列で,長さで区切れば本数が決まるからである.

InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.