※画像は生成AIによるイメージです。
K(x) = min{|p| : U(p) = x}
U: 万能チューリングマシン
p: プログラム
|p|: プログラムの長さ(ビット)
「xを出力する最短プログラムの長さ」
| 文字列 | 複雑性 | 理由 |
|---|---|---|
| 0000...0(n個) | O(log n) | "0をn回出力" |
| 01010101...(n桁) | O(log n) | "01をn/2回出力" |
| ランダム列 | ≈ n | 圧縮不可能 |
| πの最初のn桁 | O(log n) | πの計算プログラム |
任意の2つの万能チューリングマシンU₁, U₂に対して:
|K_{U₁}(x) - K_{U₂}(x)| ≤ c
c: U₁とU₂のみに依存する定数
→ 定義はマシン選択に(定数を除いて)依存しない
K(x)を計算するアルゴリズムは存在しない。
証明スケッチ(対角線論法):
K(x)が計算可能と仮定
→ 「K(x) > n となる最小のx」を出力するプログラム
→ このxの複雑性は O(log n) だが K(x) > n
→ 矛盾
K(x) ≤ |x| + c
(xをそのまま出力するプログラム)
ほとんどの長さnの文字列xに対して:
K(x) ≥ n - O(1)
(圧縮できない文字列が大多数)
MDL(Minimum Description Length):
最良のモデルM* = argmin_M [L(M) + L(D|M)]
L(M): モデルの記述長
L(D|M): モデルを与えた下でのデータの記述長
→ オッカムの剃刀の形式化
xがランダム ⟺ K(x) ≥ |x| - c
圧縮不可能 = ランダム = パターンがない