柯氏复杂性
維基百科,自由的 encyclopedia
在算法信息论(计算机科学和数学的一个分支)中,一个对象比如一段文字的柯氏复杂性(亦作柯尔莫哥洛夫复杂性、描述复杂性、柯尔莫哥洛夫-柴廷(英语:Gregory Chaitin)复杂度、随机复杂度,或算法熵)是衡量描述这个对象所需要的信息量的一个尺度。柯氏复杂性是由安德雷·柯尔莫哥洛夫于1963年发现,所以用他的名字命名。[1][2]
以下面的两个长度为64的字符串为例。
0101010101010101010101010101010101010101010101010101010101010101
1100100001100001110111101110110011111010010000100101011110010110
第一个字符串可以用中文简短地描述为“重复32个‘01’”。第二个字符串没有明显的简短描述。
一个字符串的柯氏复杂性(或者,区别如后)是这个字符串的最短描述的长度。换言之,一个字符串的柯氏复杂性是能够输出且仅输出这个字符串的最短计算机/图灵机程序的长度。
这样的定义导致在使用不同的描述语言或者不同的图灵机的时候柯氏复杂性不一样。所以在讨论柯氏复杂性的时候,通常都事先固定一个通用图灵机作为参照。可以证明在使用做参照的时候,对任意的图灵机,都存在一个仅决定于和的常数使得对所有的字符串相对于的柯氏复杂性(或者)和相对于的柯氏复杂性(或者)都满足
- 。根据这点,通常确定了一个参照图灵机后就用和表示柯氏复杂性(省略)。
不难证明,任何字符串的柯氏复杂度都不会比字符串自身的长度超过太多。类似与上文中的0101字符串,它的柯氏复杂度和字符串的长度关系不大,因此并不复杂。