Kolmogorov複雜度(轉)

轉自: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定理的本質是在形式系統中,人們不能證明對象的複雜度大於理論本身的複雜度。 
但是對此也有人堅決反對。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章