说一下描述复杂性

c
chebyshev
楼主 (未名空间)

以下是我根据记忆写的:
(1)
给定一个计算模型。例如ANSI C。
对一个字符串s, 考虑最短的可以printf这个字符串的程序p。
P本身是个字符串,p的长度定义为在这个模型下的描述复杂度。记为K_C(s)。

因为其他计算模型和ansi C只差一个常数。
那么我们可以找到很多定理,这些定理的证明文本,对这个常数不变。这时,因为这些定理和计算模型无关,我们记之为
K(s)。

(2)
考虑如下悖论:
至少要用二百个汉字来定义的数之最小者。
如果此数存在,上面的定义少于二百字,矛盾。

所以K(s)是不可计算函数。

(3)
考虑n bit的数,总共有power(2,n)个。小于n bit的数,等比数列算一下,总数有
power(2,n)-1个。所以对任意zip程序,不可能压缩所有的n位数。

(例如2位数有00,01,10,11四个。
小于2位的数只有3个: 0,1,null。对应于,压缩程序无屏幕输出,屏幕输出0,屏幕输
出1)

所以有限长的不可压缩数总是存在的。因此universal algorithmic AI是不存在的。所以
universal AI是一个介于猴子敲键盘的过程,以及一个程序之间的东西。它就是一个环境,根据规则和通信,演化和淘汰出一些算法。这个环境的规则设置和IO是universal AI。

我回忆了两天,才回忆出十八年前,我对压缩感兴趣,是因为自己发现了最后这个2位
数压缩的例子。真是老了,就不写了。

那时候我想了好多办法。还想过用windows机器上已有的大文件当字符串。

我认为描述复杂性将来会在AI上下文里,成为显学。李明教授那本书是杰作。但是后来很遗憾,他做了十八年的生物信息等课题。没有做AI。

b
bigBalls

这个悖论说明这句话不能用来定义一个数,所以要把它排除出可以定义数的语句集。不能说明不存在一个符合这句话的描述的数。

g
guvest

你自己去查课本。有个传统技术可以把悖论翻译成程序或者字符串操作。我这里略过。

【 在 bigBalls() 的大作中提到: 】

: 这个悖论说明这句话不能用来定义一个数,所以要把它排除出可以定义数的语句集。不

: 能说明不存在一个符合这句话的描述的数。