楼主:
int0x80 (请逐项修改)
2022-05-15 03:15:25一个字串的 Kolmogorov complexity 指的是能够输出这个字串的最短的程式的长度
以 python 为例:
abcabcabcabcabcabcabcabcabcabc
可以用以下程式输出
print("abc"*10)
但是若是像
ababccbaaabcccbababcccbababbaa
则没有明显比直接印出来这个字串还要简单的方法
所以第一个例子的 Kolmogorov complexity 比较低,比较“不复杂”
有人认为这个方法可以做为奥坎剃刀的理论基础
理由是,假如宇宙是一个因为随机而产生的巨大机器
那比较短、比较简单的机器应该比较有机会因随机而产生
假如把已观察到的宇宙化成一个字串
在预测接下来的结果时就可以选择让 Kolmogorov complexity 较低的那一个
但这个方法有一个问题,就是 Kolmogorov complexity 是绑定一个通用图灵机的
不同的通用图灵机下的 Kolmogorov complexity 会有不同的结果
举例的话,可能某个字串用A语言可以很短的写出来,但用B语言却办不到
固然有 invariance theorem 在,也就是任意两种通用图灵机下的差距会是常数
理由很简单,假如字串s可以很简单的用A语言写出来
对B语言来说,可以写一个A语言的解释器然后再接上A语言用来生出s的程式
那差距就只有A语言解释器的长度,这会是一个只与A,B有关的常数
但考虑到奥坎剃刀想做的事:
“我们应该选择某某理论,因为这个理论比较简洁”
就比较困难了,因为对于任意的字串s,我可以定义一个新的语言 python-s
这个语言所做的事和python一模一样,只有当程式码完全空白时会输出s
这样的话s在python-s底下的复杂度就是 0
当然也可以对任意的字串定义新的语言,python-出师表、python-冷炸鸡等等
想比较特定的两个字串然后说其中一个比较“复杂”是比较困难的
实际上原版的奥坎剃刀就有类似的问题了
Nelson Goodman 提出了 new riddle of induction (绿蓝和蓝绿)
我们所有观察到的祖母绿都是绿色的,考虑以下两种论述:
1. 所有祖母绿都是绿色的
2. 所有祖母绿在 2038 年之前是绿色的,之后会变成蓝色的
两种论述都符合我们的观察,但第二种会被奥坎剃刀淘汰掉,因为它做了不必要的假设
但考虑另一个世界,在这个世界的语言中
没有绿色或蓝色的说法,只有“绿蓝”以及“蓝绿”
绿蓝:在 2038 年之前是绿色,之后是蓝色
蓝绿:在 2038 年之前是蓝色,之后是绿色
那么对于相同祖母绿的观察,第二种理论可以很简单的表示成
2. 所有祖母绿都是绿蓝
但第一种理论却必须写成
1. 所有祖母绿在 2038 年之前是绿蓝,之后是蓝绿
反而是第二种比较简单,第一种反而是对时间做了不必要的假设
所以即使是原版的奥坎剃刀,还是会因为语言的不同而产生不同的结果
你其实是很难严格的说某某理论真的比较简洁的