[閒聊] 柯式複雜度與奧坎剃刀

作者: 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 年之前是綠藍,之後是藍綠
反而是第二種比較簡單,第一種反而是對時間做了不必要的假設
所以即使是原版的奧坎剃刀,還是會因為語言的不同而產生不同的結果
你其實是很難嚴格的說某某理論真的比較簡潔的
作者: cities516 (安安路過)   2022-05-15 03:18:00
確實
作者: ririoshi (角落住民)   2022-05-15 03:20:00
之前在推理遊戲裡有稍微認識剃刀 讚讚
作者: jaspergod (神遊)   2022-05-15 03:21:00
有趣
作者: JenniferLope (ㄚ)   2022-05-15 04:01:00
大師
作者: Padkomywaifu (政治正確去吃屎)   2022-05-15 08:23:00
有意思
作者: emptie ([ ])   2022-05-15 08:38:00
interesting

Links booklink

Contact Us: admin [ a t ] ucptt.com