大数据课程笔记3:Kolmogorov Complexity

来源:互联网 发布:恋夜秀场破解版软件 编辑:程序博客网 时间:2024/05/23 13:04

这是大数据算法的课程笔记,这节讲的是Kolmogorov Complexity的定义以及三个性质。


定义

先有个图灵机的定义,然后有了一个Universal Turing Machine (UTM)的定义。

假设存在输入y和输出x,使用一种Turing Machine T,运行程序p,可以从y中生成x,定义为x=T(p,y)

定义Kolmogorov Comlexity,基于yx的复杂性定义为argmin|p|, such that x=T(p,y),为H(x|y)

x的Kolmogorov复杂性定义为H(x|),即从空集生成x的图灵机程序长度的最小值,注意其为Turing Machine和数据x的函数。

三个性质

然后讨论Kolmogorov Comlexity的三个性质: Invariance, Unbounded, Non-computable

Invariance Theorem

Invariance: Given any description language L, the optimal description language is at least as efficient as L, with some constant overhead.

即Kolmogorov Complexity不随Turing Machine的变化而变化,最多差一个有限大的常数。其核心是运行程序p的Turing Machine的代码长度是固定的,不与p有关。

例如存在两种Turing Machine,分别使用C++和Java,那么定义在C++和Java的两个Kolmogorov Complexity,最多差一个有限大的常数。编译运行C++的程序和C++程序长度无关,使用Java编写C++运行程序的Java代码长度也是固定的,最大不超过一个常数C。则有KolmC(Java,p)KolmC(C++,p)+KolmC(Java,C++)

这个小于等于号是因为KolmC为所有合法程序长度的最小值,而使用Java编写C++运行程序,然后运行程序p的程序只为合法程序之一。

Unbounded Theorem

Unboundable Kolmogorov complexity: nx:K(x)n

证明方法是反证法,即假设nx:K(x)n,在程序长度有限的情况下,最多有2n+1个程序,可能的输出最多有2n+1个。但x的可能性是无穷的,得到矛盾,假设不成立。

Non-Computable

Kolmogorov complexity is not computable

computable指的是存在Turing Machine计算相应程序。

不可计算性的证明使用的反证法:

假设存在某个Turing Machine的程序,ComputeKolmComplexity(s),计算数据s的Kolmogorov Complexity,程序长度小于C,其中C1M

构造程序G如下:

i = 1while True    for s in |s| ==i        if ComputeKolmComplexity(s) > 2M            return s;    i = i + 1;

即按照字符串长度,从小到大逐一枚举所有可能字符串,当计算出来的Kolmogorov Complexity大于2M的时候输出,即G的输出字符串s的Kolmogorov Complexity大于2M。但是G的程序长度不超过1M+1000,所以有1M+10002M,导出矛盾。

综上假设不成立,Kolmogorov Complexity不可计算。

原创粉丝点击