13.4 自己限定万能機械と万能確率

13.3 節は,情報源が出した長さのブロックの複雑性を平均し,その値が文字あたりでエントロピーに近づくことを示した.そこで測っていたのは分布から出た系列であり,主役は分布のほうだった.本節から先は分布を持ち出さない.以下に現れる対象は情報源ではなく,一つの自然数と一つの機械だけである.

13.3 節までの記述長は,一つの対象に最短の記述の長さを与えるものだった.見ているのは最短の一本だけで,同じ対象に短い記述が何本あるかは値に効かない.本節は測り方を裏返す.プログラムをでたらめに書いたとき,その対象が出てくる確率を,対象の重みとするのである.こう測れば,短い記述を持つ対象ほど重く,短い記述を何本も持つ対象はそのぶんさらに重い.二つの測り方は無関係ではなく,本節の 定理 13.4.10 が,記述の短さと重みの大きさが係数の範囲で互いを決めることを示す.この重みを情報源の分布に結びつける話,すなわちその対数を第12章の意味の万能符号の符号長として読む話は,本書では扱わない.

重みの作り方は素朴である.プログラムをでたらめなビット列だと思えば,投げたビットがちょうどになる確率はだから,を出すプログラムについてこれを足し合わせればよい.足した値が確率として読めるためには,プログラムの側に一つ条件が要る.読む側が,渡されたビットをどこまで読めばプログラムが終わるかを,読んだ範囲だけで決められることである.プログラムが自分の終わりを自分で告げる,と言ってもよい.そうなっていれば,値を持つプログラムのどの一本も,他の一本の先頭には現れない.

定義 13.1.4はそうなっていない.は先頭がでその後ろが任意のビット列であるものすべてに値を持つので,たとえばも値を持ち,前者は後者の語頭(定義 4.1.2)である.終わりを告げる手立てがないぶん,同じ値を出すプログラムがいくらでも長く作れて,重みの和がそれに引きずられる.先頭がで長さがのプログラムは本あるから,重みの和は長さごとにになり,全部足すといくらでも大きくなる.

そこで機械を取り替える.値を持つプログラムのどの一本も他の一本の語頭にならないような機械をとれば,重みの総和はを超えない.本節はそのような機械を一つ固定し,その機械についての記述長と重みを定めて,二つが定数倍の範囲で互いを決めることを見る.は別々の量だが無関係ではなく,命題 13.4.6 が両者を等式で結ぶ.固定する機械の作り方は,渡すビット列の長さをの個数で書くという最も素朴なものである.そのぶん前置きが記述と同じだけの長さを食い,係数が本節から 13.6 節までの評価に残りつづける.前置きをもっと短く書く作り方はあるが,本書はこの一つだけを固定して,その係数ごと引き受ける.以下で係数が,13.6 節で係数が現れるのは,どれもこの一つの選択から来ている.

語頭のない集合

定義 13.4.1(語頭のない集合). ビット列の集合語頭のない集合 であるとは,の元について,の語頭(定義 4.1.2)ならばが成り立つことをいう.

形式化: PrefixFree (ソース)

第4章 定義 4.1.2 の語頭符号は,相異なる文字に与えた符号語のあいだに語頭の関係が無いことを要求していた.定義 13.4.1 はその条件を,符号語の集合そのものについて言い換えたものである.違いは二つある.写像ではなく集合について述べていることと,集合が無限であってよいことである.無限であってよいところが本節に効く.機械が値を持つプログラムは無限にあるからである.

和を一つ約束しておく.非負の実数を項とする可算個の和は,有限個の項を選んで足したものの全体の上限として定める(上に有界でなければとする).項が有限個のときは通常の和に一致すること,項の並べ方に依らないこと,項ごとに大小があればそのまま和の大小になることを既知とする.この約束を使うのは,本節の 補題 13.4.2定義 13.4.8命題 13.4.9定理 13.4.10例 13.4.1113.5 節定義 13.5.4命題 13.5.5補題 13.5.7定理 13.5.8例 13.5.9,および第14章 14.6 節定義 14.6.6 である.これらの和を実数として扱うのは,本章では 命題 13.4.9命題 13.5.5 で値が以下であることを示したあとだけである.第14章 14.6 節が実数として扱うのは別の上界を通してで,そちらは出力アルファベットの大きさの対数で和を抑える.

形式化上の注記(本節と 13.5 節に共通). いま約束した和は,形式化ではどれも拡張非負実数の値として定義されている.そちらでは和が有限であることを先に示さずに書けるので,本文が上限として置いた定義の段は形式化に現れない.有限部分和の上限をとる段そのものは,形式化の証明にはそのまま現れる.13.5 節定義 13.5.6以上の実数について書く条件も,形式化では同じ拡張非負実数の上の述語として書かれている.

補題 13.4.2. を,空列を含まない 定義 13.4.1 の意味の語頭のない集合とすると

𝑠𝑆2|𝑠|1

が成り立つ(は無限であってよい).

証明. の有限部分集合とする.を有限アルファベット,とし,にその列自身を対応させる写像をとする.は空列を含まないからの文字を並べた空でない有限列であり,定義 4.1.1 の意味で上の二元情報源符号である.相異なるについての語頭だとすると,定義 13.4.1 よりとなって相異なることに反するから,は語頭符号である.よって 定理 4.2.1 よりである.

にわたる和を有限部分和の上限として定めたことから,主張の左辺はいま抑えた有限和の全体の上限であり,どの有限和も以下だから,上限も以下である.

形式化: PrefixFree.tsum_inv_two_pow_length_le_one (ソース)

補題 13.4.2 は Kraft の不等式(定理 4.2.1)を,無限の符号語の集合へ広げたものにほかならない.第4章では符号語の本数が有限だったので,長さがいちばん長い符号語をとって木の深さを固定できた.集合が無限だとその深さがとれないので,有限部分集合ごとに第4章の不等式を当て,上限をとって全体に広げる.上限をとる操作が入るぶん,等号がどこで成り立つかの話は落ちるが,以下という上界はそのまま残る.空列を含まないという仮定は,定理 4.2.1 を経由するために要る条件であって,結論には要らない.空列を含む語頭のない集合は空列だけからなり,そのとき和はだからである.

自己限定万能機械

定義 13.4.3(自己限定形と自己限定万能機械). ビット列に対し,個並べ,を一つ置き,そのあとにをつないだビット列を自己限定形 と呼ぶ(その長さはである).ビット列に自然数を対応させる部分関数を次のように定める.の先頭から最初のが現れるまでのの個数を,そのより後ろのビット列をとする(が現れないときはを空列とする).のときとし,そうでないときは値を持たないとする.自己限定万能機械 と呼ぶ.に対し

𝐾V(𝑥):=min{|𝑠|:V(𝑠)=𝑥}

と定める(はビット列の全体をわたる.そのようなビット列が一つも無いときはとする).

形式化: 自己限定形 selfDelimit,機械 prefixUniversalEval,記述長 prefixComplexity (ソース)

本節のは,機械についての記述長である.の作り方を変えたときにの値がどれだけ動くかについて,本書は何も述べない.本章がにつねに機械を添字として書くのは,このためでもある.

の読み方は,長さを先に書いておく,というだけのものである.に渡したいビット列があるとき,その長さをの個数で書き,区切りのを置いてからを並べる.読む側はを数えて長さを知り,区切りのあとをちょうどその長さだけ読めばよいので,どこで読み終えるかが読んだ範囲だけで決まる.長さが合わないプログラムを捨てるのはそのためで,捨てておかないと,同じに対して前置きの長さの違うプログラムがいくつも値を持ってしまう.はじめに見た,プログラムが自分の終わりを自分で告げるという形が,ここで具体の姿をとる.自己限定という名前もそこから来ている.

と同じく,定義 13.1.3 の意味の機械ではない.13.1 節について述べたとおり,機械はビット列をそれが表す自然数を通してしか見ないのに対し,はビット列そのものを読むからである.いっぽうも計算の手続きで定まる.の並びを数えて長さを比べるところは有限回の繰り返しで,残りはを走らせるところだから,Church–Turing のテーゼよりは部分計算可能である.

命題 13.4.4. が値を持つビット列は,どれもあるビット列の自己限定形(定義 13.4.3)である.とくに,が値を持つビット列の全体は 定義 13.4.1 の意味で語頭のない集合であり,空列を含まない.

証明. が値を持つとし,定義 13.4.3をとる.が現れないときはが空列でだから,が空列であることを意味する.ところが空列についてはも空列でとなり,定義 13.1.4 より空列に対するは値を持たない.よってにはが現れ,個並べ,を一つ置き,長さのビット列をつないだ形である.これはの自己限定形にほかならない.

空列を含まないことは,いま見たとおりである.語頭のない集合であることを示す.で値を持ち,の語頭だとする.前段よりはあるビット列の,はあるビット列の自己限定形であり,の先頭から最初のまでのの個数はについてはである.とすると,個並べた直後の位置で,のビットはであり,のビットはである(の先頭ビットはすべてだからである).この位置はの中にある.より大きいからである.いっぽうの語頭なら,この位置の二つのビットは一致しなければならず,矛盾する.としても,個並べた直後の位置で同じ矛盾が出る.よってであり,である.長さの等しい語頭は列そのものだからである.

形式化: 自己限定形であること dom_imp_mem_range,語頭のない集合であること prefixUniversalEval_dom_prefixFree,空列を含まないこと prefixUniversalEval_nil_not_dom (ソース)

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

証明. 命題 13.1.5に当てると,を満たすビット列がある.の自己限定形とすると,の先頭から最初のまでのの個数は,その後ろはだから,定義 13.4.3 よりである.よって集合は空でない自然数の集合であり,最小元をもつ.その最小元はにほかならず,しかもを満たすあるビット列の長さだから,そのが求めるものである.

形式化: prefixComplexity_spec (ソース)

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

証明. 上から抑える.命題 13.1.5に当てて,かつを満たすビット列をとる.の自己限定形とすると,命題 13.4.5 の証明と同じ読み方でであり,だから,定義 13.4.3 の最小はこの値以下である.

下から抑える.とすると,命題 13.4.4 よりはあるビット列の自己限定形である.このとき 定義 13.4.3に等しいのでであり,が従う.よって 定義 13.1.4 の最小よりであり,である.を満たすは任意だったから,その長さの最小である以上である.

形式化上の注記. 命題 13.4.6 に対応する単独の宣言は無い.形式化は同じ等式を,に渡すビット列の長さの最小値について prefixComplexity_eq_two_mul_payloadComplexity_add_one (InformationTheory/Shannon/Kolmogorov/Levin.lean) として持っている.そこに現れる payloadComplexity は,本文のにあたる量をの側から定め直したもので,二つが一致することを述べる宣言は無い.定義を開けば同じ部分関数についての最小だが,その等式には名前が与えられていないからである.

命題 13.4.6 は,本書のから完全に決まることを言っている.すなわち記述長の側では,機械を取り替えたことで新しく得たものは何も無い.得たものは重みの側にある.命題 13.4.4 のとおりが値を持つプログラムの全体は語頭のない集合なので,補題 13.4.2 よりそれらの重みの総和はを超えない.このあと 定義 13.4.8 で入れるを確率として読めるのは,この一点による.を置いたのはそのためである.

等式が成り立つのは 定義 13.4.3 で機械を一つに固定したからであって,値を持つプログラムの全体が語頭のない集合であるような機械の一般について成り立つ話ではない.情報理論の文献が語頭複雑性と呼ぶ量は,そのような機械のうち,どの機械の記述も定数の払いで真似できるものをとって定めるもので,機械の取り方に定数のずれが残るぶん,命題 13.4.6 のような等式を主張として持たない.読者が本書の外で語頭複雑性を引くときは,本書のとは別の量である.

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

証明. 定理 13.1.7 をこのに当てて定数をとり,と置く.とビット列を満たすとすると,定理 13.1.7 よりである.命題 13.4.6 と合わせて

𝐾V(𝑥)=2𝐾U(𝑥)+12|𝑠|+2𝑏0+1=2|𝑠|+𝑏

である.

形式化: prefix_invariance (ソース)

定理 13.4.7定理 13.1.7 の違いは係数だけである.定理 13.1.7 の右辺はに定数を足したものだったので,が大きくなるほど払いは相対的に軽くなった.定理 13.4.7 の右辺は倍なので,そうはならない.ただし,このを定数に落とした形が成り立たない,とまでは 定理 13.4.7 からは出ない.定理 13.4.7 は一つの上界を与えるだけで,これより良い上界が無いことは言っていないからである.

万能確率

定義 13.4.8(万能確率). に対し

𝑃V(𝑥):=𝑠:V(𝑠)=𝑥2|𝑠|

と定め(を満たすビット列の全体をわたる),万能確率 と呼ぶ.

形式化: universalProb (ソース)

はつねにを添字にとり,引数を一つとる.第10章から第12章までが裸ので書いてきた分布とは別の量であり,13.3 節と書いた積分布とも関係がない.が測っているのは,でたらめに投げたビット列をに読ませたとき,が出てくる重みである.を出すプログラムが短いほど,そのプログラムの重みは大きい.すなわちは,短く書ける対象ほど大きな値をとる.次の 定理 13.4.10 が言うのは,この対応が定数倍の範囲で逆向きにも成り立つことである.

命題 13.4.9. とするとである.とくにである.

証明. 左の不等式を示す.命題 13.4.5 よりかつを満たすビット列がある.定義 13.4.8 の和はこのの項を含み,項はどれも非負だから,和はこの項の値以上である.

右の不等式を示す.を満たすビット列の全体をと置くと,が値を持つビット列の全体の部分集合である.命題 13.4.4 より後者は空列を含まない語頭のない集合であり,その部分集合も同じ条件を満たすから,補題 13.4.2に当ててを得る.最後に,は正だからである.

形式化: 左の不等式 universalProb_ge_two_pow_neg_prefixComplexity,右の不等式 universalProb_le_one (ソース)

形式化上の注記. 正値性に対応する単独の宣言は無い.左の不等式に紐付けた宣言と,が正であることを合わせれば得られる.

定理 13.4.10(記述長と万能確率). とすると

log2𝑃V(𝑥)𝐾V(𝑥)2(log2𝑃V(𝑥))+1

が成り立つ.

証明. 命題 13.4.9 よりだから,は定まる.

左の不等式を示す.命題 13.4.9 の左の不等式に 補題 8.2.5 を当てるとであり,両辺の符号を変えてを得る.

右の不等式の準備としてを示す.とすると,命題 13.4.6 の証明で見たとおりはあるビット列の自己限定形で,かつである.そこで,個並べ,を一つ置き,そのあとにをつないだビット列をと書く.の前置きの個だけ剥がした列である.その長さは

|˜𝑠|=(|𝑑|𝐾U(𝑥))+1+|𝑑|=|𝑠|𝐾U(𝑥)

である.剥がすのは,を出すプログラムの重みの和を 補題 13.4.2 に持ち込むためである.が値を持つビット列そのものに 補題 13.4.2 を当てても以下しか出ないが,長さをどれもだけ縮めてから当てれば,縮めたぶんがの因子として残る.なお,長さの本数をで抑えて長さごとに足しても同じ上界は出る.ここでこの形をとるのは,次節の 例 13.5.9 が上からの評価に同じ剥がし方を使うからである.

対応は単射である.というのもの最初のより後ろがで,の自己限定形としてから決まるからである.またの全体は空列を含まない語頭のない集合である.の語頭だとして,に対応するビット列をと書く.の先頭には個並んでその直後がであり,の先頭には個並ぶ.とすると,個並べた直後の位置で,のビットはであり,のビットはである.この位置はの中にある.より大きいからである.いっぽうの語頭なら,この位置の二つのビットは一致しなければならず,矛盾する.としても,個並べた直後の位置で同じ矛盾が出る.よってであり,となるから,長さの等しい語頭は列そのものだからである.空列でないことは,を含むことによる.

を満たすの有限個の集まりをとすると,いま見たことと 補題 13.4.2 から

𝑠𝐹2|𝑠|=2𝐾U(𝑥)𝑠𝐹2|˜𝑠|2𝐾U(𝑥)

である.和を有限部分和の上限として定めたことから,である.

右の不等式を示す.いま示した不等式に 補題 8.2.5 を当てると,すなわちである.命題 13.4.6 と合わせて

𝐾V(𝑥)=2𝐾U(𝑥)+12(log2𝑃V(𝑥))+1

を得る.

形式化: 左の不等式 neg_logb_universalProb_le_prefixComplexity (ソース),右の不等式 prefixComplexity_le_two_mul_neg_logb_universalProb (ソース)

定理 13.4.10 は,記述の短さと重みの大きさが同じことを測っているという主張である.左の不等式は,を出すプログラムが一本でも短ければ重みが大きいという当たり前の向きで,最短の一本だけを数えて出る.右の不等式が言っているのは逆向きで,重みが大きければ短いプログラムが実際にあるということである.こちらは短いプログラムが一本もない場合を排除しなければならないので,長いプログラムがいくら集まっても重みが稼げないこと,すなわち 補題 13.4.2 の数え上げが要る.挟み撃ちの幅は係数で,が大きいほど広がる.

この幅は,一方についての主張をもう一方へ移すときに効く.の値を返す手続きが無いことは 定理 13.2.3 で見たので,命題 13.4.6 よりについても同じことが言える.ところが 定理 13.4.10 は幅のある挟み撃ちなので,の値についても同じだ,とはここから出ない.本書はの計算可能性を述べない.

この形の主張は Levin の符号化定理と呼ばれる.文献の主張は,値を持つプログラムの全体が語頭のない集合であるような機械のうち,どの機械の記述も定数の払いで真似できるものについてのもので,記述長とをとった重みが定数の差で一致するという,係数のない鋭い形をしている.本書が示すのは 定理 13.4.10 の係数の挟み撃ちまでであり,文献の形は示さない.形式化もされていない.

命題 13.4.9 の左の不等式は最短の一本だけを見ており,和はまだ効いていない.和が効く例を一つ見ておく.

例 13.4.11(の万能確率). であり,である.とくに 命題 13.4.9 の左の不等式は等号ではない.

証明. を求める.空列に対して定義 13.1.4 より値を持たないからである.いっぽうの一文字からなるビット列をとると,の先頭のビットはでその後ろは空列だから,定義 13.1.4 よりは空列が表す自然数,すなわちである.よってであり,命題 13.4.6 よりである.

下から抑える.に対し,個並べたビット列,の自己限定形(定義 13.4.3)とする.の先頭のビットはで,その後ろは個並べた列だから,定義 13.1.4 よりはその列が表す自然数,すなわちである.よって 定義 13.4.3 よりであり,その長さはである.長さが違うからは相異なる.

を任意にとる.は相異なる有限個のビット列で,どれもの値がだから,それらの重みの和は 定義 13.4.8 の和の有限部分和である.その値は

𝐽𝑗=12(2𝑗+1)=12𝐽𝑗=14𝑗=16(14𝐽)

である.和を有限部分和の上限として定めたことからはこの値以上であり,を大きくすると右辺はに近づくから,である.最後にである.

証明が数えたプログラムは,個,を一つ,個と並べたもので,ごとに一本ずつある.に渡る部分はどれも「これから書くとおりに書け」という同じ指示で,違うのは後ろに並ぶの個数だけである.最短の一本が重みを持ち,残りが合わせてを足す.が最短の記述だけでなく記述の本数も見ていることが,ここで初めて数として出る.次節の 例 13.5.9 の下からの評価は,同じ数え方を,に渡る部分がで始まるプログラムの全体に広げる.

次節は,この機械について二つの計算不可能性を示す.一つはの値を返す手続きが無いこと,もう一つはが値を持つかどうかを答える手続きが無いことである.そのうえで,値を持つプログラム全体の重みを一つの実数にまとめ,その実数もまた計算できないことを見る.

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