算法复杂性是19964-1966年由索洛莫诺夫、科尔莫戈罗夫和柴廷分别独立提出的,粗略的说,算法复杂性就是产生特定的图形花纹(或符号序列)的最短程序的长度与图形花纹(或符号序列)本身的大小之比的极限。这里‘长度’和‘大小’均按二进制位数计,而‘程序’则是在普适的理论计算机上执行。
复杂性定义在这样的理解上:一个实际系统总是通过人们的某种观测被认识的,而各种观测通常都产生一个或一些数据序列。
例如脉冲星的光信息或者人类的心电图和脑电图序列、托卡马克热核聚变装置的各种光、电仪器的测量输出数据序列等。
因此一个实际系统常常用一个或一些数据序列来代表。
这个思想可以推广到代表实际系统的符号序列(图形花纹在现代的数字技术意义上也可以被一个或一些数据或符号序列来表示)。如果(如同在 20 世纪中叶那样)大家特别重视再现这些数据或符号序列的计算机程序的长短,就可以用程序的长短来表示相应实际系统的复杂性的大小。
“不难明白,上述算法复杂性其实是随机数的一种判据。为写出实质上比给定数更短的程序,需利用该数包含的某种规律,若无规律可循,依定义该数就是随机的,相应的最短程序只能是在打印语句中照抄该数。程序长度比该数多出 PRINT 五个字母,取无穷极限后就没有差别了”
显然,这种定义必然导致的结论是:系统越随机就越复杂,算法复杂性单调地依赖于随机性。
这代表了比较早期的认识。当科学界普遍接受了 20 世纪 60 年代以来的一些物理学具有根本性的新认识之后,大家根本地改变了这种认为越随机就越复杂的观点。