Kolmogorov Complexity And Compression Distance
(LaTeX記法使えないのですごく雑です…)
アリスとボブの2人でコントスゲームをする。表(Head)と裏(Tail)で裏が多く出た方の勝ちというゲームである。コインは全部で20回トスする。
1回ゲームをした結果、以下のようになった。
- アリスが得た系列
HHHTHTHTTHTHHTHTTTTH
- ボブが得た系列
TTTTTTTTTTTTTTTTTTTT
アリスはイカサマだと抗議するが、ボブは以下のように反論する。
ボブ「コインを20回投げて現れる系列のパターンは HHHTHTHTTHTHHTHTTTTH
を得る確率も私が TTTTTTTTTTTTTTTTTTTT
を得る確率も全く同じなのだからこれは公平な勝負だよね」
ボブは彼とアリスが得る系列の確率が同じだからこの勝負は公平だと主張したわけである。賢いアリスは納得しない。 アリスは特定の系列を得る確率は、そのランダム性に関する情報を含んでいるわけではないのでこの文脈ではその主張は使えないと反論する。
アリスが自分の系列がボブの系列よりランダムであることを示すのは簡単に思える。 確率を使う代わりに、アリスは特定の系列(文字列、配列)がいかに記述しにくいかという観点で指摘をしようと思った。 しかしこれはあまり厳密ではないので、以下の議論ではKolmogorov複雑性として知られる数学的道具を用いてアリスの反論を助けていこう。 まず、ボブの系列をPythonで記述してみよう。
In [0]: 'T'*20
Out[0]: TTTTTTTTTTTTTTTTTTTT
このコードの長さ自体は6文字であり、元の20文字より短い。
In [1]: len("'T'*20")
Out[1]: 6
アリスの系列をPythonで記述しようとした場合、かなり複雑な記述になることは想像に難くない。おそらく20文字に等しいかそれ以上の長さになるだろう。
また、こうした記述を行う際は、記述言語も重要である。Pythonでは6文字だったが、JavaScriptでは以下のようになる。
>> "T".repeat(20)
"TTTTTTTTTTTTTTTTTTTT"
>> "\"T\".repeat(20)".length
14
記述言語が変わっただけで文字数が6文字から14文字に増えた点に注目してもらいたい。 文字列の複雑さは記述しようとしている文字だけでなく、それを記述する言語にも依存するのである。
ここまでの考察をまとめて数学的記述に落とし込むと、Kolmogorov複雑性 (KC) を以下のように定義できる。
ここで
ここでは文字列のKolmogorov複雑性を、その文字列を出力する最短プログラムの長さと定義している。 そしてこうして定義したKolmogorov複雑性が文字列のランダム性を示してくれるという考え方をする。 Kolmogorov複雑性が文字列の長さに等しい文字列は、Kolmogorov複雑性が文字列より短いものよりもランダムである、ということである。
さらに、Kolomogorov複雑性が以下のように文字列の長さ以上の場合は圧縮できない。
さらに注意点として、文字列のKolmogorov複雑性は計算不能であることも気をつけたい。すべての文字列のKolmogorov複雑性を保証するコンピュータは存在しない。 これは数学的事実である。このことを感覚的に理解するために以下のパラドックスを考えよう。
興味深い数のパラドックスは、「すべての自然数は興味深い」という主張を中心に展開する。 1は最初の数だから興味深い。2は最初の偶数であるから興味深い。3は最初の奇素数であるから興味深い。4=2x2、4=2+2だから4も興味深い。 このようにして多くの数について興味深い性質を見つけることができる。さて、ある時点で興味深い性質を持たない数にぶち当たったとしよう。 その数を「最初の興味深くない数」と名付けることにしよう。しかし「興味深くない」という事実そのものが興味深いのである。 ゆえに興味深くない数は実際は興味深い数なのである。
Kolmogorov Complexity and Our Search for Meaning - Nautilus
この考え方から類推して、我々は自分たちが考えた最短のプログラムを最短であることを証明することができないのである(なぜなのか考えてみよう)。
現状Pythonを使うかJavaScriptを使うかで複雑さが変わってしまう。これだと困るので言語
つまり以下のような言語が存在すると考える。
この式の言わんとするところは、文字列
ところで、先程述べたパラドックス(最短のプログラムは最短と証明できない)に立ち戻ってみよう。
このパラドックスによると
この問題に対処するために、有効な記述言語の集合に制約を設けて、単一の普遍的な記述方法
- チューリングマシンモデルにおける停止性問題とは、任意のコンピュータプログラムの記述と入力から、 そのプログラムが実行を終了するか、永遠に実行され続けるかを判定するというよく知られた問題である。(Halting problem - Wikipedia)
- 数学的には、停止性問題は
$w$ が$H(TM)$ の要素であるようなすべての組$(TM, w)$ 、ここで$H(TM)$ はチューリング・マシン$TM$ が停止ないし$\lbrace (TM, w): w \in H(TM) \rbrace $ である入力の集合を表す - 上記の表現は、チューリング・マシンには停止するかしないか分からない入力が存在することを含意している
したがって、我々の普遍言語
上記の観察から再出発して、Kolmogorov複雑性が言語にとらわれないものであるためには、
普遍言語
Kolmogorov複雑性の言語にとらわれない真の定義は以下のようになる。
Kolmogorov複雑性を定義すると、それを使って2つの文字列/オブジェクトがどれくらい似ているかを推定することができる。
2つの文字列間の 正規化情報距離(Normalized Information Distance) は以下のように定義できる:
ここで
正規化圧縮距離(Normalized Compression Distance) は以下のように定義できる。
ここで
アリスはこれらの知識を用いてボブをやり込めることができるだろう ✌