扶她是什么意思| n2o是什么气体| 今夕何夕什么意思| 总胆固醇高吃什么药| 奥司他韦是什么药| 什么是着相| 尿素氮是什么| 里急后重什么意思| 肋软骨炎挂什么科| 全身发烫但不发烧是什么原因| 各类病原体dna测定是检查什么| 精油有什么功效| 王羲之的儿子叫什么名字| 藏拙是什么意思| 乳腺增生挂什么科| 6月18号是什么日子| 8月30号什么星座| 重度抑郁症吃什么药| 婴儿出汗多什么原因| 什么金属最贵| 出虚汗是什么原因引起的怎么调理| 艾地苯醌片治什么病| 跑步后尿血是什么情况| 九月初三是什么星座| 高冷什么意思| 沈腾和马丽是什么关系| 中二病是什么意思| 禅修是什么意思| 什么不迫| 早搏吃什么药好| 内痔有什么症状| 孕妇为什么会水肿| 什么是碱性磷酸酶高怎么回事| 手信是什么| 肝不好吃什么药| 7月初七是什么日子| 小腿肚酸疼是什么原因| 什么样的人可以通灵| 喉咙发炎吃什么药好得快| 什么是二次元| 红眼病是什么原因引起的| 穿裙子搭配什么鞋子| 毛囊炎是什么原因引起的| 肝外胆管扩张什么意思| 月经喝什么比较好| 做什么检查确诊是白塞| 人为什么会胡思乱想| 5.29是什么星座| 什么是生源地| 再生纤维是什么| 阑是什么意思| 什么布料最凉快| 除草剂中毒有什么症状| 褐色分泌物是什么原因| 佃农是什么意思| ptc是什么意思| 撕漫男什么意思| 胃湿热吃什么中成药| 黄体破裂是什么原因| 手脱皮用什么药| 乳贴是什么| 小腹痛男性什么原因| 卵巢囊性结构是什么| 海绵体供血不足吃什么药| 妊娠高血压什么症状| 检查血压挂什么科| 安全期什么时候| 勾芡用什么淀粉| 幡是什么意思| 处女座上升星座是什么| 小孩子发烧抽搐是什么原因| 子宫内膜不均匀是什么意思| 女生胸部长什么样| 什么叫风湿| 月经期间同房有什么危害| 四大美女指什么生肖| alexanderwang是什么牌子| 七月三十是什么星座| 咳嗽变异性哮喘吃什么药| 女人什么时候最想男人| 什么拜之交| 什么时候有流星| 宝宝流鼻血是什么原因| 女同是什么意思| 淋巴滤泡增生是什么意思严重吗| 认贼作父是什么意思| 前列腺液是什么颜色| 坐月子什么意思| 梦见自己生了个儿子是什么意思| 铄字五行属什么| 双子座女和什么星座最配| 什么水果对胃好更养胃| 三伏天吃什么水果好| 人这一生什么最重要| 为什么会早产| 胃疼吃什么药管用| 书五行属性是什么| 套作是什么意思| 双肾囊肿什么意思| 早泄阳痿吃什么药| 骨质疏松打什么针| 痰湿阻滞吃什么中成药| 710是什么意思| 慢性胰腺炎吃什么药效果最好| 精子发黄是什么原因| 老夫是什么意思| s是什么车| 生姜能治什么病| 吃什么食物下奶快而且奶多| 梦见很多蛇是什么意思| 398是什么意思| 脂溢性皮炎用什么洗发水| 保鲜袋什么材质好| 手术室为什么那么冷| 发烧输液输的是什么药| 今年85岁属什么生肖| 春天有什么花开| 君臣佐使是什么意思| 红薯什么时候传入中国| 股长是什么职位| 窜稀吃什么药| 嘴角起痘是什么原因| 肚脐眼痒是什么原因| 肺炎吃什么| 鼻息肉是什么症状| 阑尾粪石是什么| 黑乎乎的什么| 一九四九年属什么生肖| 耳钉后面的塞子叫什么| 牙齿是什么材质| 第一次坐飞机需要注意什么| 二垒是什么意思| 煞气是什么意思| mch是什么意思| mi什么意思| 腿毛长的男人代表什么| 正襟危坐什么意思| 数字7代表什么意思| 手上长红点是什么原因| 小白脸是什么意思| 6.25是什么日子| lop是什么意思| 梦到前男友是什么意思| 越五行属性是什么| 晚上喝红酒配什么小吃| 囊中之物是什么意思| acu是什么| 便秘吃什么药最好最快| 检点是什么意思| 梦见吃西瓜是什么征兆| 一年级又什么又什么| 银消病用什么药效果最好| 甲亢做什么检查| 梦见蛇和老鼠是什么意思| 吃什么水果减肥最快| 肺纤维灶是什么意思| 梦见打老婆是什么预兆| 胰岛素是干什么的| 淀粉吃多了有什么危害| 揣测是什么意思| 病毒感染是什么原因| 孕妇感冒了对胎儿有什么影响| pci手术全称是什么| 3月5日是什么星座的| 口干口苦口臭是什么原因| 锶对人体有什么好处| 为什么会尿频| 额头冒痘是什么原因| 民政局局长什么级别| 诸葛亮为什么气死周瑜| 子宫肌瘤吃什么好| 毫无违和感是什么意思| 大便化验隐血阳性什么意思| 百福骈臻是什么意思| 咖啡配什么好喝| 孕妇怕冷是什么原因| 脚后跟疼用什么药好| 太阳筋疼是什么原因| 承上启下是什么意思| g6pd是检查什么的| 镜子碎了有什么征兆吗| 喝酒眼睛红是什么原因| 朱砂属于五行属什么| 你算什么男人歌词| 白蜡烛代表什么| 女人长期喝西洋参有什么好处| 希特勒为什么要杀犹太人| 3月什么星座| 月经下不来是什么原因| 虎口长痣代表什么| 右脚踝肿是什么原因引起的| 什么时候量血压最准| 什么办法退烧快| 子宫内膜厚吃什么食物好| 心存芥蒂是什么意思| 肛瘘是什么原因引起的| 在水一方是什么意思| barbie是什么意思| 黑瞎子是什么动物| 甜虾是什么虾| 茶油有什么功效| 东坡肉属于什么菜系| ml 什么意思| 尿毒症是什么原因导致的| 解大便时有鲜血流出是什么原因| 白天看见蛇有什么预兆| 果脯是什么东西| 尼维达手表什么档次| 花开花落不见你回头是什么歌| 逼上梁山什么意思| 蓝莓什么味道| 虫草是什么| 保外就医是什么意思| skll什么牌子| 月经先期是什么意思| 地藏菩萨为什么不能拜| 手表seiko是什么牌子| 6月12是什么星座| 3.1415926是什么意思| 九牛一毛什么意思| 第六感是什么意思| 细菌性毛囊炎用什么药| 为什么德牧不能打| 家里有蜈蚣是什么原因| 男性孕前检查挂什么科| 什么细节能感动摩羯男| 牛在五行中属什么| 什么是符号| cop是什么意思| 分娩是什么意思| 为什么一吃饭就胃疼| 尿道感染用什么消炎药| 什么叫肠化生| 肺部结节是什么意思啊| 发什么发什么| 1.24是什么星座| 什么是修养| 土生土长是什么生肖| 动脉硬化有什么危害| 没有润滑油用什么代替| 什么叫排比句| 二月四号是什么星座| 什么是甘油| 什么样的梅花| 山竹什么人不能吃| 胃寒吃什么药好| 不以为然什么意思| 嘴唇边缘发黑是什么原因| 18度穿什么衣服合适| 喇叭裤配什么上衣| 有加有减先算什么| 有什么好| 身上经常痒是什么原因| 至死不渝下一句是什么| 超声检查是什么| 尿道刺痛吃什么药| opc是什么意思| 胃肠感冒什么症状| 电解工是干什么的| 冲服是什么意思| 原位杂交技术检查什么| 什么细节能感动摩羯男| 金蝉脱壳比喻什么| 在五行中属什么| 百度

关于2017年第二批首次进入我省公路建设市场施工企...

百度 我们要避免脱实向虚,要从制造业大国迈向制造业强国,现在我们处在进行时过程中”,“凡是成功的企业,要攀登到事业顶峰,都要靠心无旁骛攻主业。

In algorithmic information theory (a subfield of computer science and mathematics), the Kolmogorov complexity of an object, such as a piece of text, is the length of a shortest computer program (in a predetermined programming language) that produces the object as output. It is a measure of the computational resources needed to specify the object, and is also known as algorithmic complexity, Solomonoff–Kolmogorov–Chaitin complexity, program-size complexity, descriptive complexity, or algorithmic entropy. It is named after Andrey Kolmogorov, who first published on the subject in 1963[1][2] and is a generalization of classical information theory.

This image illustrates part of the Mandelbrot set fractal. Simply storing the 24-bit color of each pixel in this image would require 23 million bytes, but a small computer program can reproduce these 23 MB using the definition of the Mandelbrot set, the corner coordinates of the image and the parameters of the color mapping. Thus, the Kolmogorov complexity of this image is much less than 23 MB in any pragmatic model of computation. PNG's general-purpose image compression only reduces it to 1.6 MB, smaller than the raw data but much larger than the Kolmogorov complexity.

The notion of Kolmogorov complexity can be used to state and prove impossibility results akin to Cantor's diagonal argument, G?del's incompleteness theorem, and Turing's halting problem. In particular, no program P computing a lower bound for each text's Kolmogorov complexity can return a value essentially larger than P's own length (see section §?Chaitin's incompleteness theorem); hence no single program can compute the exact Kolmogorov complexity for infinitely many texts.

Definition

edit

Intuition

edit

Consider the following two strings of 32 lowercase letters and digits:

abababababababababababababababab , and
4c1j5b2p0cv4w1x8rx2y39umgw5q85s7

The first string has a short English-language description, namely "write ab 16 times", which consists of 17 characters. The second one has no obvious simple description (using the same character set) other than writing down the string itself, i.e., "write 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7" which has 38 characters. Hence the operation of writing the first string can be said to have "less complexity" than writing the second.

More formally, the complexity of a string is the length of the shortest possible description of the string in some fixed universal description language (the sensitivity of complexity relative to the choice of description language is discussed below). It can be shown that the Kolmogorov complexity of any string cannot be more than a few bytes larger than the length of the string itself. Strings like the abab example above, whose Kolmogorov complexity is small relative to the string's size, are not considered to be complex.

The Kolmogorov complexity can be defined for any mathematical object, but for simplicity the scope of this article is restricted to strings. We must first specify a description language for strings. Such a description language can be based on any computer programming language, such as Lisp, Pascal, or Java. If P is a program which outputs a string x, then P is a description of x. The length of the description is just the length of P as a character string, multiplied by the number of bits in a character (e.g., 7 for ASCII).

We could, alternatively, choose an encoding for Turing machines, where an encoding is a function which associates to each Turing Machine M a bitstring <M>. If M is a Turing Machine which, on input w, outputs string x, then the concatenated string <M> w is a description of x. For theoretical analysis, this approach is more suited for constructing detailed formal proofs and is generally preferred in the research literature. In this article, an informal approach is discussed.

Any string s has at least one description. For example, the second string above is output by the pseudo-code:

function GenerateString2()
    return "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7"

whereas the first string is output by the (much shorter) pseudo-code:

function GenerateString1()
    return "ab" × 16

If a description d(s) of a string s is of minimal length (i.e., using the fewest bits), it is called a minimal description of s, and the length of d(s) (i.e. the number of bits in the minimal description) is the Kolmogorov complexity of s, written K(s). Symbolically,

K(s) = |d(s)|.

The length of the shortest description will depend on the choice of description language; but the effect of changing languages is bounded (a result called the invariance theorem, see below).

Plain Kolmogorov complexity C

edit

There are two definitions of Kolmogorov complexity: plain and prefix-free. The plain complexity is the minimal description length of any program, and denoted ? while the prefix-free complexity is the minimal description length of any program encoded in a prefix-free code, and denoted ?. The plain complexity is more intuitive, but the prefix-free complexity is easier to study.

By default, all equations hold only up to an additive constant. For example, ? really means that ?, that is, ?.

Let ? be a computable function mapping finite binary strings to binary strings. It is a universal function if, and only if, for any computable ?, we can encode the function in a "program" ?, such that ?. We can think of ? as a program interpreter, which takes in an initial segment describing the program, followed by data that the program should process.

One problem with plain complexity is that ?, because intuitively speaking, there is no general way to tell where to divide an output string just by looking at the concatenated string. We can divide it by specifying the length of ? or ?, but that would take ? extra symbols. Indeed, for any ? there exists ? such that ?.[3]

Typically, inequalities with plain complexity have a term like ? on one side, whereas the same inequalities with prefix-free complexity have only ?.

The main problem with plain complexity is that there is something extra sneaked into a program. A program not only represents for something with its code, but also represents its own length. In particular, a program ? may represent a binary number up to ?, simply by its own length. Stated in another way, it is as if we are using a termination symbol to denote where a word ends, and so we are not using 2 symbols, but 3. To fix this defect, we introduce the prefix-free Kolmogorov complexity.[4]

Prefix-free Kolmogorov complexity K

edit

A prefix-free code is a subset of ? such that given any two different words ? in the set, neither is a prefix of the other. The benefit of a prefix-free code is that we can build a machine that reads words from the code forward in one direction, and as soon as it reads the last symbol of the word, it knows that the word is finished, and does not need to backtrack or a termination symbol.

Define a prefix-free Turing machine to be a Turing machine that comes with a prefix-free code, such that the Turing machine can read any string from the code in one direction, and stop reading as soon as it reads the last symbol. Afterwards, it may compute on a work tape and write to a write tape, but it cannot move its read-head anymore.

This gives us the following formal way to describe K.[5]

  • Fix a prefix-free universal Turing machine, with three tapes: a read tape infinite in one direction, a work tape infinite in two directions, and a write tape infinite in one direction.
  • The machine can read from the read tape in one direction only (no backtracking), and write to the write tape in one direction only. It can read and write the work tape in both directions.
  • The work tape and write tape start with all zeros. The read tape starts with an input prefix code, followed by all zeros.
  • Let ? be the prefix-free code on ?, used by the universal Turing machine.

Note that some universal Turing machines may not be programmable with prefix codes. We must pick only a prefix-free universal Turing machine.

The prefix-free complexity of a string ? is the shortest prefix code that makes the machine output ?:?

Invariance theorem

edit

Informal treatment

edit

There are some description languages which are optimal, in the following sense: given any description of an object in a description language, said description may be used in the optimal description language with a constant overhead. The constant depends only on the languages involved, not on the description of the object, nor the object being described.

Here is an example of an optimal description language. A description will have two parts:

  • The first part describes another description language.
  • The second part is a description of the object in that language.

In more technical terms, the first part of a description is a computer program (specifically: a compiler for the object's language, written in the description language), with the second part being the input to that computer program which produces the object as output.

The invariance theorem follows: Given any description language L, the optimal description language is at least as efficient as L, with some constant overhead.

Proof: Any description D in L can be converted into a description in the optimal language by first describing L as a computer program P (part 1), and then using the original description D as input to that program (part 2). The total length of this new description D′ is (approximately):

|D′ | = |P| + |D|

The length of P is a constant that doesn't depend on D. So, there is at most a constant overhead, regardless of the object described. Therefore, the optimal language is universal up to this additive constant.

A more formal treatment

edit

Theorem: If K1 and K2 are the complexity functions relative to Turing complete description languages L1 and L2, then there is a constant c?– which depends only on the languages L1 and L2 chosen?– such that

?s. ?cK1(s) ? K2(s) ≤ c.

Proof: By symmetry, it suffices to prove that there is some constant c such that for all strings s

K1(s) ≤ K2(s) + c.

Now, suppose there is a program in the language L1 which acts as an interpreter for L2:

function InterpretLanguage(string p)

where p is a program in L2. The interpreter is characterized by the following property:

Running InterpretLanguage on input p returns the result of running p.

Thus, if P is a program in L2 which is a minimal description of s, then InterpretLanguage(P) returns the string s. The length of this description of s is the sum of

  1. The length of the program InterpretLanguage, which we can take to be the constant c.
  2. The length of P which by definition is K2(s).

This proves the desired upper bound.

History and context

edit

Algorithmic information theory is the area of computer science that studies Kolmogorov complexity and other complexity measures on strings (or other data structures).

The concept and theory of Kolmogorov Complexity is based on a crucial theorem first discovered by Ray Solomonoff, who published it in 1960, describing it in "A Preliminary Report on a General Theory of Inductive Inference"[6] as part of his invention of algorithmic probability. He gave a more complete description in his 1964 publications, "A Formal Theory of Inductive Inference," Part 1 and Part 2 in Information and Control.[7][8]

Andrey Kolmogorov later independently published this theorem in Problems Inform. Transmission in 1965.[9] Gregory Chaitin also presents this theorem in the Journal of the ACM?– Chaitin's paper was submitted October 1966 and revised in December 1968, and cites both Solomonoff's and Kolmogorov's papers.[10]

The theorem says that, among algorithms that decode strings from their descriptions (codes), there exists an optimal one. This algorithm, for all strings, allows codes as short as allowed by any other algorithm up to an additive constant that depends on the algorithms, but not on the strings themselves. Solomonoff used this algorithm and the code lengths it allows to define a "universal probability" of a string on which inductive inference of the subsequent digits of the string can be based. Kolmogorov used this theorem to define several functions of strings, including complexity, randomness, and information.

When Kolmogorov became aware of Solomonoff's work, he acknowledged Solomonoff's priority.[11] For several years, Solomonoff's work was better known in the Soviet Union than in the West. The general consensus in the scientific community, however, was to associate this type of complexity with Kolmogorov, who was concerned with randomness of a sequence, while Algorithmic Probability became associated with Solomonoff, who focused on prediction using his invention of the universal prior probability distribution. The broader area encompassing descriptional complexity and probability is often called Kolmogorov complexity. The computer scientist Ming Li considers this an example of the Matthew effect: "...to everyone who has, more will be given..."[12]

There are several other variants of Kolmogorov complexity or algorithmic information. The most widely used one is based on self-delimiting programs, and is mainly due to Leonid Levin (1974).

An axiomatic approach to Kolmogorov complexity based on Blum axioms (Blum 1967) was introduced by Mark Burgin in the paper presented for publication by Andrey Kolmogorov.[13]

In the late 1990s and early 2000s, methods developed to approximate Kolmogorov complexity relied on popular compression algorithms like LZW,[14] which made difficult or impossible to provide any estimation to short strings until a method based on Algorithmic probability was introduced,[15][16] offering the only alternative to compression-based methods.[17]

Basic results

edit

We write ? to be ?, where ? means some fixed way to code for a tuple of strings x and y.

Inequalities

edit

We omit additive factors of ?. This section is based on.[5]

Theorem. ?

Proof. Take any program for the universal Turing machine used to define plain complexity, and convert it to a prefix-free program by first coding the length of the program in binary, then convert the length to prefix-free coding. For example, suppose the program has length 9, then we can convert it as follows:?where we double each digit, then add a termination code. The prefix-free universal Turing machine can then read in any program for the other machine as follows:?The first part programs the machine to simulate the other machine, and is a constant overhead ?. The second part has length ?. The third part has length ?.

Theorem: There exists ? such that ?. More succinctly, ?. Similarly, ?, and ?.[clarification needed]

Proof. For the plain complexity, just write a program that simply copies the input to the output. For the prefix-free complexity, we need to first describe the length of the string, before writing out the string itself.

Theorem. (extra information bounds, subadditivity)

  • ?
  • ?

Note that there is no way to compare ? and ? or ? or ? or ?. There are strings such that the whole string ? is easy to describe, but its substrings are very hard to describe.

Theorem. (symmetry of information) ?.

Proof. One side is simple. For the other side with ?, we need to use a counting argument (page 38 [18]).

Theorem. (information non-increase) For any computable function ?, we have ?.

Proof. Program the Turing machine to read two subsequent programs, one describing the function and one describing the string. Then run both programs on the work tape to produce ?, and write it out.

Uncomputability of Kolmogorov complexity

edit

A naive attempt at a program to compute K

edit

At first glance it might seem trivial to write a program which can compute K(s) for any s, such as the following:

function KolmogorovComplexity(string s)
    for i = 1 to infinity:
        for each string p of length exactly i
            if isValidProgram(p) and evaluate(p) == s
                return i

This program iterates through all possible programs (by iterating through all possible strings and only considering those which are valid programs), starting with the shortest. Each program is executed to find the result produced by that program, comparing it to the input s. If the result matches then the length of the program is returned.

However this will not work because some of the programs p tested will not terminate, e.g. if they contain infinite loops. There is no way to avoid all of these programs by testing them in some way before executing them due to the non-computability of the halting problem.

What is more, no program at all can compute the function K, be it ever so sophisticated. This is proven in the following.

Formal proof of uncomputability of K

edit

Theorem: There exist strings of arbitrarily large Kolmogorov complexity. Formally: for each natural number n, there is a string s with K(s) ≥ n.[note 1]

Proof: Otherwise all of the infinitely many possible finite strings could be generated by the finitely many[note 2] programs with a complexity below n bits.

Theorem: K is not a computable function. In other words, there is no program which takes any string s as input and produces the integer K(s) as output.

The following proof by contradiction uses a simple Pascal-like language to denote programs; for sake of proof simplicity assume its description (i.e. an interpreter) to have a length of 1400000 bits. Assume for contradiction there is a program

function KolmogorovComplexity(string s)

which takes as input a string s and returns K(s). All programs are of finite length so, for sake of proof simplicity, assume it to be 7000000000 bits. Now, consider the following program of length 1288 bits:

function GenerateComplexString()
    for i = 1 to infinity:
        for each string s of length exactly i
            if KolmogorovComplexity(s) ≥ 8000000000
                return s

Using KolmogorovComplexity as a subroutine, the program tries every string, starting with the shortest, until it returns a string with Kolmogorov complexity at least 8000000000 bits,[note 3] i.e. a string that cannot be produced by any program shorter than 8000000000 bits. However, the overall length of the above program that produced s is only 7001401288 bits,[note 4] which is a contradiction. (If the code of KolmogorovComplexity is shorter, the contradiction remains. If it is longer, the constant used in GenerateComplexString can always be changed appropriately.)[note 5]

The above proof uses a contradiction similar to that of the Berry paradox: "1The 2smallest 3positive 4integer 5that 6cannot 7be 8defined 9in 10fewer 11than 12twenty 13English 14words". It is also possible to show the non-computability of K by reduction from the non-computability of the halting problem H, since K and H are Turing-equivalent.[19]

There is a corollary, humorously called the "full employment theorem" in the programming language community, stating that there is no perfect size-optimizing compiler.

Chain rule for Kolmogorov complexity

edit

The chain rule[20] for Kolmogorov complexity states that there exists a constant c such that for all X and Y:

K(X,Y) = K(X) + K(Y|X) + c*max(1,log(K(X,Y))).

It states that the shortest program that reproduces X and Y is no more than a logarithmic term larger than a program to reproduce X and a program to reproduce Y given X. Using this statement, one can define an analogue of mutual information for Kolmogorov complexity.

Compression

edit

It is straightforward to compute upper bounds for K(s)?– simply compress the string s with some method, implement the corresponding decompressor in the chosen language, concatenate the decompressor to the compressed string, and measure the length of the resulting string?– concretely, the size of a self-extracting archive in the given language.

A string s is compressible by a number c if it has a description whose length does not exceed |s| ? c bits. This is equivalent to saying that K(s) ≤ |s| ? c. Otherwise, s is incompressible by c. A string incompressible by 1 is said to be simply incompressible?– by the pigeonhole principle, which applies because every compressed string maps to only one uncompressed string, incompressible strings must exist, since there are 2n bit strings of length n, but only 2n ? 1 shorter strings, that is, strings of length less than n, (i.e. with length 0, 1, ..., n???1).[note 6]

For the same reason, most strings are complex in the sense that they cannot be significantly compressed?– their K(s) is not much smaller than |s|, the length of s in bits. To make this precise, fix a value of n. There are 2n bitstrings of length n. The uniform probability distribution on the space of these bitstrings assigns exactly equal weight 2?n to each string of length n.

Theorem: With the uniform probability distribution on the space of bitstrings of length n, the probability that a string is incompressible by c is at least 1 ? 2?c+1 + 2?n.

To prove the theorem, note that the number of descriptions of length not exceeding n ? c is given by the geometric series:

1 + 2 + 22 + ... + 2n ? c = 2n?c+1 ? 1.

There remain at least

2n ? 2n?c+1 + 1

bitstrings of length n that are incompressible by c. To determine the probability, divide by 2n.

Chaitin's incompleteness theorem

edit
?
Kolmogorov complexity K(s), and two computable lower bound functions prog1(s), prog2(s). The horizontal axis (logarithmic scale) enumerates all strings s, ordered by length; the vertical axis (linear scale) measures Kolmogorov complexity in bits. Most strings are incompressible, i.e. their Kolmogorov complexity exceeds their length by a constant amount. 9 compressible strings are shown in the picture, appearing as almost vertical slopes. Due to Chaitin's incompleteness theorem (1974), the output of any program computing a lower bound of the Kolmogorov complexity cannot exceed some fixed limit, which is independent of the input string s.

By the above theorem (§?Compression), most strings are complex in the sense that they cannot be described in any significantly "compressed" way. However, it turns out that the fact that a specific string is complex cannot be formally proven, if the complexity of the string is above a certain threshold. The precise formalization is as follows. First, fix a particular axiomatic system S for the natural numbers. The axiomatic system has to be powerful enough so that, to certain assertions A about complexity of strings, one can associate a formula FA in S. This association must have the following property:

If FA is provable from the axioms of S, then the corresponding assertion A must be true. This "formalization" can be achieved based on a G?del numbering.

Theorem: There exists a constant L (which only depends on S and on the choice of description language) such that there does not exist a string s for which the statement

K(s) ≥ L ? ? ? (as formalized in S)

can be proven within S.[21][22]

Proof Idea: The proof of this result is modeled on a self-referential construction used in Berry's paradox. We firstly obtain a program which enumerates the proofs within S and we specify a procedure P which takes as an input an integer L and prints the strings x which are within proofs within S of the statement K(x) ≥ L. By then setting L to greater than the length of this procedure P, we have that the required length of a program to print x as stated in K(x) ≥ L as being at least L is then less than the amount L since the string x was printed by the procedure P. This is a contradiction. So it is not possible for the proof system S to prove K(x) ≥ L for L arbitrarily large, in particular, for L larger than the length of the procedure P, (which is finite).

Proof:

We can find an effective enumeration of all the formal proofs in S by some procedure

function NthProof(int n)

which takes as input n and outputs some proof. This function enumerates all proofs. Some of these are proofs for formulas we do not care about here, since every possible proof in the language of S is produced for some n. Some of these are complexity formulas of the form K(s)?≥?n where s and n are constants in the language of S. There is a procedure

function NthProofProvesComplexityFormula(int n)

which determines whether the nth proof actually proves a complexity formula K(s)?≥?L. The strings s, and the integer L in turn, are computable by procedure:

function StringNthProof(int n)
function ComplexityLowerBoundNthProof(int n)

Consider the following procedure:

function GenerateProvablyComplexString(int n)
    for i = 1 to infinity:
        if NthProofProvesComplexityFormula(i) and ComplexityLowerBoundNthProof(i) ≥ n
            return StringNthProof(i)

Given an n, this procedure tries every proof until it finds a string and a proof in the formal system S of the formula K(s)?≥?L for some L?≥?n; if no such proof exists, it loops forever.

Finally, consider the program consisting of all these procedure definitions, and a main call:

GenerateProvablyComplexString(n0)

where the constant n0 will be determined later on. The overall program length can be expressed as U+log2(n0), where U is some constant and log2(n0) represents the length of the integer value n0, under the reasonable assumption that it is encoded in binary digits. We will choose n0 to be greater than the program length, that is, such that n0 > U+log2(n0). This is clearly true for n0 sufficiently large, because the left hand side grows linearly in n0 whilst the right hand side grows logarithmically in n0 up to the fixed constant U.

Then no proof of the form "K(s)≥L" with Ln0 can be obtained in S, as can be seen by an indirect argument: If ComplexityLowerBoundNthProof(i) could return a value ≥n0, then the loop inside GenerateProvablyComplexString would eventually terminate, and that procedure would return a string s such that

K(s)
n0 ? ? ? ? ? by construction of GenerateProvablyComplexString
> U+log2(n0) by the choice of n0
K(s) since s was described by the program with that length

This is a contradiction, Q.E.D.

As a consequence, the above program, with the chosen value of n0, must loop forever.

Similar ideas are used to prove the properties of Chaitin's constant.

Minimum message length

edit

The minimum message length principle of statistical and inductive inference and machine learning was developed by C.S. Wallace and D.M. Boulton in 1968. MML is Bayesian (i.e. it incorporates prior beliefs) and information-theoretic. It has the desirable properties of statistical invariance (i.e. the inference transforms with a re-parametrisation, such as from polar coordinates to Cartesian coordinates), statistical consistency (i.e. even for very hard problems, MML will converge to any underlying model) and efficiency (i.e. the MML model will converge to any true underlying model about as quickly as is possible). C.S. Wallace and D.L. Dowe (1999) showed a formal connection between MML and algorithmic information theory (or Kolmogorov complexity).[23]

Kolmogorov randomness

edit

Kolmogorov randomness defines a string (usually of bits) as being random if and only if every computer program that can produce that string is at least as long as the string itself. To make this precise, a universal computer (or universal Turing machine) must be specified, so that "program" means a program for this universal machine. A random string in this sense is "incompressible" in that it is impossible to "compress" the string into a program that is shorter than the string itself. For every universal computer, there is at least one algorithmically random string of each length.[24] Whether a particular string is random, however, depends on the specific universal computer that is chosen. This is because a universal computer can have a particular string hard-coded in itself, and a program running on this universal computer can then simply refer to this hard-coded string using a short sequence of bits (i.e. much shorter than the string itself).

This definition can be extended to define a notion of randomness for infinite sequences from a finite alphabet. These algorithmically random sequences can be defined in three equivalent ways. One way uses an effective analogue of measure theory; another uses effective martingales. The third way defines an infinite sequence to be random if the prefix-free Kolmogorov complexity of its initial segments grows quickly enough?— there must be a constant c such that the complexity of an initial segment of length n is always at least n?c. This definition, unlike the definition of randomness for a finite string, is not affected by which universal machine is used to define prefix-free Kolmogorov complexity.[25]

Relation to entropy

edit

For dynamical systems, entropy rate and algorithmic complexity of the trajectories are related by a theorem of Brudno, that the equality ? holds for almost all ?.[26]

It can be shown[27] that for the output of Markov information sources, Kolmogorov complexity is related to the entropy of the information source. More precisely, the Kolmogorov complexity of the output of a Markov information source, normalized by the length of the output, converges almost surely (as the length of the output goes to infinity) to the entropy of the source.

Theorem. (Theorem 14.2.5 [28]) The conditional Kolmogorov complexity of a binary string ? satisfies?where ? is the binary entropy function (not to be confused with the entropy rate).

Halting problem

edit

The Kolmogorov complexity function is equivalent to deciding the halting problem.

If we have a halting oracle, then the Kolmogorov complexity of a string can be computed by simply trying every halting program, in lexicographic order, until one of them outputs the string.

The other direction is much more involved.[29][30] It shows that given a Kolmogorov complexity function, we can construct a function ?, such that ? for all large ?, where ? is the Busy Beaver shift function (also denoted as ?). By modifying the function at lower values of ? we get an upper bound on ?, which solves the halting problem.

Consider this program ?, which takes input as ?, and uses ?.

  • List all strings of length ?.
  • For each such string ?, enumerate all (prefix-free) programs of length ? until one of them does output ?. Record its runtime ?.
  • Output the largest ?.

We prove by contradiction that ? for all large ?.

Let ? be a Busy Beaver of length ?. Consider this (prefix-free) program, which takes no input:

  • Run the program ?, and record its runtime length ?.
  • Generate all programs with length ?. Run every one of them for up to ? steps. Note the outputs of those that have halted.
  • Output the string with the lowest lexicographic order that has not been output by any of those.

Let the string output by the program be ?.

The program has length ?, where ? comes from the length of the Busy Beaver ?, ? comes from using the (prefix-free) Elias delta code for the number ?, and ? comes from the rest of the program. Therefore,?for all big ?. Further, since there are only so many possible programs with length ?, we have ? by pigeonhole principle. By assumption, ?, so every string of length ? has a minimal program with runtime ?. Thus, the string ? has a minimal program with runtime ?. Further, that program has length ?. This contradicts how ? was constructed.

Universal probability

edit

Fix a universal Turing machine ?, the same one used to define the (prefix-free) Kolmogorov complexity. Define the (prefix-free) universal probability of a string ? to be?In other words, it is the probability that, given a uniformly random binary stream as input, the universal Turing machine would halt after reading a certain prefix of the stream, and output ?.

Note. ? does not mean that the input stream is ?, but that the universal Turing machine would halt at some point after reading the initial segment ?, without reading any further input, and that, when it halts, its has written ? to the output tape.

Theorem. (Theorem 14.11.1[28]) ?

Implications in biology

edit

In the context of biology to argue that the symmetries and modular arrangements observed in multiple species emerge from the tendency of evolution to prefer minimal Kolmogorov complexity.[31] Considering the genome as a program that must solve a task or implement a series of functions, shorter programs would be preferred on the basis that they are easier to find by the mechanisms of evolution.[32] An example of this approach is the eight-fold symmetry of the compass circuit that is found across insect species, which correspond to the circuit that is both functional and requires the minimum Kolmogorov complexity to be generated from self-replicating units.[33]

Conditional versions

edit

The conditional Kolmogorov complexity of two strings ? is, roughly speaking, defined as the Kolmogorov complexity of x given y as an auxiliary input to the procedure.[34][35] So while the (unconditional) Kolmogorov complexity ? of a sequence ? is the length of the shortest binary program that outputs ? on a universal computer and can be thought of as the minimal amount of information necessary to produce ?, the conditional Kolmogorov complexity ? is defined as the length of the shortest binary program that computes ? when ? is given as input, using a universal computer.[36]

There is also a length-conditional complexity ?, which is the complexity of x given the length of x as known/input.[37][38]

Time-bounded complexity

edit

Time-bounded Kolmogorov complexity is a modified version of Kolmogorov complexity where the space of programs to be searched for a solution is confined to only programs that can run within some pre-defined number of steps.[39] It is hypothesised that the possibility of the existence of an efficient algorithm for determining approximate time-bounded Kolmogorov complexity is related to the question of whether true one-way functions exist.[40][41]

See also

edit

Notes

edit
  1. ^ However, an s with K(s) = n need not exist for every n. For example, if n is not a multiple of 7, no ASCII program can have a length of exactly n bits.
  2. ^ There are 1 + 2 + 22 + 23 + ... + 2n = 2n+1 ? 1 different program texts of length up to n bits; cf. geometric series. If program lengths are to be multiples of 7 bits, even fewer program texts exist.
  3. ^ By the previous theorem, such a string exists, hence the for loop will eventually terminate.
  4. ^ including the language interpreter and the subroutine code for KolmogorovComplexity
  5. ^ If KolmogorovComplexity has length n bits, the constant m used in GenerateComplexString needs to be adapted to satisfy n + 1400000 + 1218 + 7·log10(m) < m, which is always possible since m grows faster than log10(m).
  6. ^ As there are NL = 2L strings of length L, the number of strings of lengths L = 0, 1, ..., n ? 1 is N0 + N1 + ... + Nn?1 = 20 + 21 + ... + 2n?1, which is a finite geometric series with sum 20 + 21 + ... + 2n?1 = 20 × (1 ? 2n) / (1 ? 2) = 2n ? 1

References

edit
  1. ^ Kolmogorov, Andrey (Dec 1963). "On Tables of Random Numbers". Sankhyā: The Indian Journal of Statistics, Series A (1961-2002). 25 (4): 369–375. ISSN?0581-572X. JSTOR?25049284. MR?0178484.
  2. ^ Kolmogorov, Andrey (1998). "On Tables of Random Numbers". Theoretical Computer Science. 207 (2): 387–395. doi:10.1016/S0304-3975(98)00075-9. MR?1643414.
  3. ^ (Downey and Hirschfeldt, 2010), Theorem 3.1.4
  4. ^ (Downey and Hirschfeldt, 2010), Section 3.5
  5. ^ a b Hutter, Marcus (2025-08-07). "Algorithmic information theory". Scholarpedia. 2 (3): 2519. Bibcode:2007SchpJ...2.2519H. doi:10.4249/scholarpedia.2519. hdl:1885/15015. ISSN?1941-6016.
  6. ^ Solomonoff, Ray (February 4, 1960). A Preliminary Report on a General Theory of Inductive Inference (PDF). Report V-131 (Report). Revision published November 1960. Archived (PDF) from the original on 2025-08-07.
  7. ^ Solomonoff, Ray (March 1964). "A Formal Theory of Inductive Inference Part I" (PDF). Information and Control. 7 (1): 1–22. doi:10.1016/S0019-9958(64)90223-2. Archived (PDF) from the original on 2025-08-07.
  8. ^ Solomonoff, Ray (June 1964). "A Formal Theory of Inductive Inference Part II" (PDF). Information and Control. 7 (2): 224–254. doi:10.1016/S0019-9958(64)90131-7. Archived (PDF) from the original on 2025-08-07.
  9. ^ Kolmogorov, A.N. (1965). "Three Approaches to the Quantitative Definition of Information". Problems Inform. Transmission. 1 (1): 1–7. Archived from the original on September 28, 2011.
  10. ^ Chaitin, Gregory J. (1969). "On the Simplicity and Speed of Programs for Computing Infinite Sets of Natural Numbers". Journal of the ACM. 16 (3): 407–422. CiteSeerX?10.1.1.15.3821. doi:10.1145/321526.321530. S2CID?12584692.
  11. ^ Kolmogorov, A. (1968). "Logical basis for information theory and probability theory". IEEE Transactions on Information Theory. 14 (5): 662–664. doi:10.1109/TIT.1968.1054210. S2CID?11402549.
  12. ^ Li, Ming; Vitányi, Paul (2008). "Preliminaries". An Introduction to Kolmogorov Complexity and its Applications. Texts in Computer Science. pp.?1–99. doi:10.1007/978-0-387-49820-1_1. ISBN?978-0-387-33998-6.
  13. ^ Burgin, M. (1982). "Generalized Kolmogorov complexity and duality in theory of computations". Notices of the Russian Academy of Sciences. 25 (3): 19–23.
  14. ^ Zenil, Hector (2020). "A Review of Methods for Estimating Algorithmic Complexity: Options, Challenges, and New Directions". Entropy. 22 (6): 612. doi:10.3390/e22060612. PMC?7517143. PMID?33286384.
  15. ^ Delahaye, Jean-Paul; Zenil, Hector (2012). "Numerical evaluation of algorithmic complexity for short strings: A glance into the innermost structure of randomness". Applied Mathematics and Computation. 219 (1): 63–77. doi:10.1016/j.amc.2011.09.020.
  16. ^ Soler-Toscano, Fernando; Zenil, Hector; Delahaye, Jean-Paul; Gauvrit, Nicolas (2014). "Calculating Kolmogorov Complexity from the Output Frequency Distributions of Small Turing Machines". PLOS ONE. 9 (5): 74–85. Bibcode:2014PLoSO...996223S. doi:10.1371/journal.pone.0096223. PMC?4013017. PMID?24787763.
  17. ^ Zenil, Hector; Soler Toscano, Fernando; Gauvrit, Nicolas (2022). "Methods and Applications of Algorithmic Complexity: Beyond Statistical Lossless Compression". Emergence, Complexity and Computation. Springer Berlin, Heidelberg. doi:10.1007/978-3-662-64985-5. ISBN 978-3-662-64983-1.
  18. ^ Hutter, Marcus (2005). Universal artificial intelligence: sequential decisions based on algorithmic probability. Texts in theoretical computer science. Berlin New York: Springer. ISBN?978-3-540-26877-2.
  19. ^ Stated without proof in: P. B. Miltersen (2005). "Course notes for Data Compression - Kolmogorov complexity" (PDF). p.?7. Archived from the original (PDF) on 2025-08-07.
  20. ^ Zvonkin, A.; L. Levin (1970). "The complexity of finite objects and the development of the concepts of information and randomness by means of the theory of algorithms" (PDF). Russian Mathematical Surveys. 25 (6): 83–124. Bibcode:1970RuMaS..25...83Z. doi:10.1070/RM1970v025n06ABEH001269. S2CID?250850390.
  21. ^ Gregory J. Chaitin (Jul 1974). "Information-theoretic limitations of formal systems" (PDF). Journal of the ACM. 21 (3): 403–434. doi:10.1145/321832.321839. S2CID?2142553. Here: Thm.4.1b
  22. ^ Calude, Cristian S. (12 September 2002). Information and Randomness: an algorithmic perspective. Springer. ISBN?9783540434665.
  23. ^ Wallace, C. S.; Dowe, D. L. (1999). "Minimum Message Length and Kolmogorov Complexity". Computer Journal. 42 (4): 270–283. CiteSeerX?10.1.1.17.321. doi:10.1093/comjnl/42.4.270.
  24. ^ There are 2n bit strings of length n but only 2n-1 shorter bit strings, hence at most that much compression results.
  25. ^ Martin-L?f, Per (1966). "The definition of random sequences". Information and Control. 9 (6): 602–619. doi:10.1016/s0019-9958(66)80018-9.
  26. ^ Galatolo, Stefano; Hoyrup, Mathieu; Rojas, Cristóbal (2010). "Effective symbolic dynamics, random points, statistical behavior, complexity and entropy" (PDF). Information and Computation. 208: 23–41. arXiv:0801.0209. doi:10.1016/j.ic.2009.05.001. S2CID?5555443. Archived (PDF) from the original on 2025-08-07.
  27. ^ Alexei Kaltchenko (2004). "Algorithms for Estimating Information Distance with Application to Bioinformatics and Linguistics". arXiv:cs.CC/0404039.
  28. ^ a b Cover, Thomas M.; Thomas, Joy A. (2006). Elements of information theory (2nd?ed.). Wiley-Interscience. ISBN?0-471-24195-4.
  29. ^ Chaitin, G.; Arslanov, A.; Calude, Cristian S. (2025-08-07). "Program-size Complexity Computes the Halting Problem". Bull. EATCS. S2CID?39718973.
  30. ^ Li, Ming; Vitányi, Paul (2008). An Introduction to Kolmogorov Complexity and Its Applications. Texts in Computer Science. Exercise 2.7.7. Bibcode:2008ikca.book.....L. doi:10.1007/978-0-387-49820-1. ISBN?978-0-387-33998-6. ISSN?1868-0941.
  31. ^ Johnston, Iain G.; Dingle, Kamaludin; Greenbury, Sam F.; Camargo, Chico Q.; Doye, Jonathan P. K.; Ahnert, Sebastian E.; Louis, Ard A. (2025-08-07). "Symmetry and simplicity spontaneously emerge from the algorithmic nature of evolution". Proceedings of the National Academy of Sciences. 119 (11): e2113883119. Bibcode:2022PNAS..11913883J. doi:10.1073/pnas.2113883119. PMC?8931234. PMID?35275794.
  32. ^ Alon, Uri (Mar 2007). "Simplicity in biology". Nature. 446 (7135): 497. Bibcode:2007Natur.446..497A. doi:10.1038/446497a. ISSN?1476-4687. PMID?17392770.
  33. ^ Vilimelis Aceituno, Pau; Dall'Osto, Dominic; Pisokas, Ioannis (2025-08-07). Colgin, Laura L; Vafidis, Pantelis (eds.). "Theoretical principles explain the structure of the insect head direction circuit". eLife. 13: e91533. doi:10.7554/eLife.91533. ISSN?2050-084X. PMC?11139481. PMID?38814703.
  34. ^ Jorma Rissanen (2007). Information and Complexity in Statistical Modeling. Information Science and Statistics. Springer S. p.?53. doi:10.1007/978-0-387-68812-1. ISBN?978-0-387-68812-1.
  35. ^ Ming Li; Paul M.B. Vitányi (2009). An Introduction to Kolmogorov Complexity and Its Applications. Springer. pp.?105–106. doi:10.1007/978-0-387-49820-1. ISBN?978-0-387-49820-1.
  36. ^ Kelemen, árpád; Abraham, Ajith; Liang, Yulan, eds. (2008). Computational intelligence in medical informatics. New York?; London: Springer. p.?160. ISBN?978-3-540-75766-5. OCLC?181069666.
  37. ^ Ming Li; Paul M.B. Vitányi (2009). An Introduction to Kolmogorov Complexity and Its Applications. Springer. p.?119. ISBN?978-0-387-49820-1.
  38. ^ Vitányi, Paul M.B. (2013). "Conditional Kolmogorov complexity and universal probability". Theoretical Computer Science. 501: 93–100. arXiv:1206.0983. doi:10.1016/j.tcs.2013.07.009. S2CID?12085503.
  39. ^ Hirahara, Shuichi; Kabanets, Valentine; Lu, Zhenjian; Oliveira, Igor C. (2024). "Exact Search-To-Decision Reductions for Time-Bounded Kolmogorov Complexity". 39th Computational Complexity Conference (CCC 2024). Leibniz International Proceedings in Informatics (LIPIcs). 300. Schloss Dagstuhl – Leibniz-Zentrum für Informatik: 29:1–29:56. doi:10.4230/LIPIcs.CCC.2024.29. ISBN?978-3-95977-331-7.
  40. ^ Klarreich, Erica (2025-08-07). "Researchers Identify 'Master Problem' Underlying All Cryptography". Quanta Magazine. Retrieved 2025-08-07.
  41. ^ Liu, Yanyi; Pass, Rafael (2025-08-07), On One-way Functions and Kolmogorov Complexity, arXiv:2009.11514

Further reading

edit
edit
梦见输钱是什么预兆 甲减和甲亢有什么区别 昭和是什么意思 绞股蓝长什么样 下眼袋发青是什么原因
飞蚊症是什么引起的 肝气郁结吃什么药 炸腮有什么症状 温州人为什么会做生意 做飞机需要注意什么
1.25什么星座 桂圆不能和什么一起吃 gdp是什么意思 腊八蒜用什么醋比较好 重症肌无力是什么病
排卵期身体有什么症状表现吗 职业年金有什么用 肛门上长了个肉疙瘩是什么原因 土霉素治什么病 男人出虚汗是什么原因引起的
三七粉什么人不适合吃hcv9jop1ns5r.cn 1987年是什么年hcv9jop4ns0r.cn 唔什么意思hcv9jop5ns7r.cn 缘分是什么意思hcv9jop3ns2r.cn 大海是什么颜色tiangongnft.com
脸色暗沉发黑是什么原因hcv8jop5ns6r.cn 炉甘石是什么hcv9jop2ns8r.cn 肺气不足吃什么中成药hcv7jop5ns4r.cn 什么榴莲好吃hcv8jop3ns9r.cn 榴莲坏了是什么味道hcv9jop4ns7r.cn
舌头发麻是什么原因hcv9jop7ns0r.cn tct检查什么hcv9jop2ns2r.cn 人为什么要刷牙hcv9jop2ns8r.cn 共工是什么神hcv9jop7ns5r.cn 电解质水是什么hcv8jop0ns8r.cn
闷是什么意思fenrenren.com 切尔斯什么意思hcv9jop7ns0r.cn 肝内高回声是什么意思jinxinzhichuang.com 诺诺是什么意思hcv9jop1ns7r.cn 生肖狗和什么生肖相冲hcv7jop7ns0r.cn
百度