轉自:http://blog.163.com/bit_runner/blog/static/5324221820101120115718334/
Kolmogorov複雜度和哥德爾定理的信息理論版本 - Chaitin定理及其數學證明
定義一:若對於給定的字符串s, 輸出該字符串的二進制程序的最短代碼長度爲K(s),就稱K(s)爲字符串s的Kolmogorov複雜度。將輸出s的由一串二進制代碼組成的程序叫做s的一種描述。將描述中長度最短的一種叫做最小描述,用d(s)來表示。|d(s)|則用來表示最小描述的長度。於是有
K(s) = | d(s) |
定理一: 一般而言,Kolmogorov複雜度是不可計算的,或者說不存在通用函數K(s),
它能對任何給定的字符串s給出Kolmogorov複雜度。
證明: 假如存在這麼一種以s爲輸入,以K(s)爲輸出的函數,那麼就可以編寫如下程序
產生複雜字符串的函數 function GenerateComplexString ( int X)
for i = 1 to infinity:
for each string s of length exactly i
if K(s) >= X
print s
quit
對於任意給定的輸入,以上程序對具有每一種可能的長度的字符串逐一進行測試,直到找到某個複雜度不小於X的字符串s爲止。然後再把這個複雜度不小於X的字符串s打印出來。因此,對於任意給定的X,這個程序都能輸出複雜度不小於X的字符串s。
但是以上程序長度是有限的,可假設這個長度爲U。考慮到輸入X的位數基本上與LOG(X) 成正比( 此地LOG表以2爲低的對數。),於是可認爲程序的大致長度加上輸入的長度爲 U + LOG(X)。由於X比LOG(X)增長得快,所以存在X,使得U + LOG(X) < X 也就是說存在一個程序,其長度連帶輸入的長度居然比X小。而不小於X的Kolmogorov複雜度按定義就是對於給定的由上述程序輸出的字符串s,沒有任何一個程序可以輸出s而其長度比X還要短。這就與U + LOG(X) < X 矛盾。
[證畢]
定理二(哥德爾定理的信息理論版本 - Chaitin定理)
對於每一種(包含性)充裕的形式系統F,存在常量c, 對於任何字符串s,該形式系統不能證明
K(s) > c。
證明
假設 Tm爲長度爲m的圖靈計算機,其功能爲
Tm = “ 對於某個字符串s, 找到最小的x, 使得在形式系統F下證明 命題 K(s)> c的證明過程的哥德爾數= x。”
令c > m。現在我們要證明圖靈計算機Tm不會停機。也就是說對於任何字符串s,F都不能證明 K(s) > c.
假設圖靈機Tm停機,那麼圖靈機Tm輸出字符串s,它滿足K(s) > c。另一方面,根據K(s)的定義, K(s) <=m。但是 m < c, 所以
K(s) < c。 矛盾。
於是圖靈機Tm停機是不可能的。也就是說對於任何字符串s,形式系統F不能證明
K(s) > c。
絕大多數人接受如下的論調:
哥德爾定理的信息理論版本-Chaitin定理的本質是在形式系統中,人們不能證明對象的複雜度大於理論本身的複雜度。
但是對此也有人堅決反對。