基于字典序方法的信息提取
本质:分类问题
目录
理论基础
Kolmogorov 复杂性
定义:Kolmogorov复杂度可以定义为任何数学对象,但为简单起见,本文仅限于字符串。我们必须首先为字符串指定一种描述语言。这种描述语言可以基于任何计算机编程语言,如Lisp、Pascal或Java。如果P是一个输出字符串x的程序,那么P是x的描述。描述的长度就是P作为字符串的长度,乘以一个字符的位数
我们也可以为图灵机选择一个编码,其中编码是一个函数,它与每个图灵机M关联一个位串<M>。如果M是一个图灵机,在输入w时输出字符串x,则连接的字符串<M> w是对x的描述。对于理论分析,这种方法更适合构造详细的形式证明,在研究文献中通常是首选。本文讨论了一种非正式的方法
第一个字符串:abababababababababababababababab
第二个字符串:4c1j5b2p0cv4w1x8rx2y39umgw5q85s7
任何字符串s至少有一个描述。例如下面的程序可以输出第二个字符串:
function GenerateString2()
return "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7"
而第一个字符串是由(短得多的)伪代码输出的:
function GenerateString1()
return "ab" × 16
如果字符串s的描述d(s)是最小长度(即使用最少比特),则称之为s的最小描述,d(s)的长度(即最小描述中的比特数)为s的Kolmogorov复杂度,记为K(s)。
最短描述的长度取决于描述语言的选择;但是改变语言的影响是有限的(一个叫做不变定理的结果)。
Invariance 定理
非正式方法
从下面这些方面讲,存在一些描述语言是最优的:用某个描述语言得到的对某个对象的描述,可以将其连同一个固定的头信息放到最优描述语言中。头信息只取决于所用的语言,不受对象的描述影响,或者对象本身。
下面是最优描述语言的例子。一个描述由两个部分组成:
- 描述另一个描述语言的部分
- 用这种语言描述的对象部分
更技术性的术语中,第一个部分是一个计算机程序,第二个部分是能让程序输出此对象的输入。
Invariance定理如下:任意描述语言L,连同头信息,最优描述语言至少等于L的效率。
证明:
通过先把 L 表述成一个计算机程序 P (第一个部分),然后用原描述D作为程序的输入(第二个部分),可以把L中的任意一个描述D转换到最优语言。新的描述D′的长度为(近似地):
P的长度固定且不取决于D。因此,最多有一个固定的开销,且与被描述的对象无关。因此,最优语言一般最多是附加的固定开销。
更正式的方法:
定理:
如果 K1 和 K2 是对于图灵完备的描述语言 L1 和 L2 的复杂性函数,那么有一个常量 c -- c 只取决于选择 L1 还是 L2 -- 使得
证明:
根据对称性,有某个常量c使得对于所有串s
假设有L1语言的程序作为L2的解释器:
function InterpretLanguage(string p)
p 为 L2 语言的程序。解释器的特征由以下属性决定:
- 对输入 p 运行 InterpreLanguage 返回 p 的执行结果
因此,如果 P 是一个 L2 程序,是 s的最小描述,那么 InterpreteLanguage(P) 返回串 s 。s 的描述的长度是:
-
InterpreLanguage程序的长度,即常量 c;
-
PP 的长度,即 K2(s)
以上二者之和。复杂性的上限得到证明。