“对于程序依次枚举、次序可能无规则的可数编码请求,不能预先排序全部码长。Kraft–Chaitin 构造维护每种长度至多一个空闲子树,在同一 Kraft 预算下在线分配程序;这把静态码长条件转…”
形式陈述 ​
前缀机、通用机与最短描述 ​
前缀机是一个从有限二进制串到有限二进制串的部分可计算函数
存在一台通用前缀机
没有程序输出
有效编码定理与随机性刻画 ​
Kraft–Chaitin 定理。 设程序逐个枚举请求
就可以有效地给每个请求分配不同程序
Levin–Schnorr 定理。 在公平币测度下,无限二进制序列
也就是说,所有有限前缀的压缩亏损
直觉
短程序占用一块较大的码树空间:长度
反方向则把检验看成压缩资源。第
先构造通用前缀机 ​
枚举所有部分可计算函数的程序,并交错模拟每个程序在所有有限输入上的计算。对固定编号
所得机器
用前缀自由的编号标记
不同编号的标记互不为前缀;同一编号内则由
Kraft–Chaitin:请求到来时就分配码字 ​
维护已分配程序集合
收到长度
从
若
为何总找得到
矛盾。算法因此可逐项完成,不必预知未来请求,也不用把无限请求按长度排序。
机器
有效开集如何得到不可撤回的前缀自由枚举 ​
Levin–Schnorr 的反方向需要把有效开集
其中
具体做法是维护当前已输出的有限前缀自由集合
这些新柱集恰好组成
Levin–Schnorr 的两个方向 ​
随机序列没有无界压缩亏损 ​
对每个整数
交错运行所有程序,观察停机输出,即可统一枚举这些开集;完全不必计算哪个程序最短。为了估计质量,在数学上为每个输出串
对构成
于是
失败于有效检验会产生无界亏损 ​
反设
每当
因为
同一个串若在多个层出现,每次都计费;式 (4) 已经包括这些重复。Kraft–Chaitin 定理构造一台机器,通用性再给一个独立于
例子与边界
乱序码长仍可在线分配 ​
依次请求
| 请求长度与输出 | 分配的程序 | 分配后空闲串 |
|---|---|---|
| 初始 | — | |
000 |
1, 01, 001 |
|
001 |
1, 01 |
|
1 |
01 |
|
01 |
无 |
程序 1 虽然到第三步才出现,先前一直为它保留着完整子树。若第一步任意选取空闲空间并打碎这棵子树,单有剩余总质量并不自动保证后续短码字可分配;每个长度至多一块空闲空间的不变量正避免这种碎片化。
再看开集枚举:原程序先输出 000,再输出 00。不可撤回转换先输出 000,第二次只补上 001,得到前缀自由集合 00 虽可维护一个有限显示列表,却不能作为此前编码程序的枚举过程。
一个具体检验如何变成压缩请求 ​
令
它直接展示了非随机序列的无界亏损。这个界无需最优压缩:例如专门编码长度还可能更短,但当前构造已经足以否定式 (2)。
不能省略的约束 ​
前缀自由要求落在程序域。把它删掉,就不能对最短程序直接使用式 (3) 的 Kraft 总预算,因而不能把式 (2) 原样换成任意普通机器的最短输入长度。反方向也没有为每个可能前缀长度都申请一个短程序;请求来自每层的互不相交柱集表示,并且用稀疏层
定理是关于一条无限序列的全部前缀。单个长串恰好难压缩,或在有限测试中没有发现压缩方法,都没有验证这个无限量词。证明只构造停机事件的枚举,不提供总能认证
推论与应用
若通用机改为
开集检验与压缩描述给出同一随机性的两种入口:式 (3) 把短描述变成合法检验,式 (4) 把检验失败变成同一台机器中的一系列压缩见证。结合 Martin-Löf 随机序列具有测度一,可知满足统一亏损界的序列存在且几乎处处成立;这不是通过穷举计算最短程序来找出某条具体随机序列。
参考资料
- [1] Rodney G. Downey, Denis R. Hirschfeldt, André Nies and Sebastiaan A. Terwijn, Calibrating Randomness,作者公开稿,§3.3.2,printed pp. 9–12:通用前缀机、Theorem 3.9 的 Kraft–Chaitin 分配以及 Theorem 3.8 的随机性等价证明。本页把空闲码树不变量、全部层的预算与有效枚举分开展开。
- [2] Laurent Bienvenu, Caractérisations de l’aléatoire par les jeux : imprédictibilité et stochasticité, doctoral thesis, 2008,§1.2.2,Remarks 1.2.4、1.2.6,printed p. 4:有效开集及其统一前缀自由枚举表示。上文给出处理全部既有柱集、无需撤回的有限层细分算法。