An additivity theorem for plain Kolmogorov complexity
📝 Original Info
- Title: An additivity theorem for plain Kolmogorov complexity
- ArXiv ID: 1111.4372
- Date: 2012-02-16
- Authors: Bruno Bauwens, Alexander Shen
📝 Abstract
We prove the formula C(a,b) = K(a|C(a,b)) + C(b|a,C(a,b)) + O(1) that expresses the plain complexity of a pair in terms of prefix and plain conditional complexities of its components.💡 Deep Analysis

📄 Full Content
So more caution is needed. Assume that the ≤-inequality is Let us prove the reverse inequality. In this proof we use the interpretation of prefix-free complexity as the logarithm of a priori probability (see, e.g., [7] for details). If n = C (a, b) is given, one can start enumerating all pairs (x, y) such that C (x, y) ≤ n; there are at most 2 n+1 of them and the pair (a, b) is among them. For fixed x, for each pair (x, y) in this enumeration we add 2 -n-1 to the probability of x; in this way we approximate (from below) the semimeasure P(x|n) = N x 2 -n-1 . Therefore, we get an upper bound for K (a|n):
where N a is the number of y’s such that C (a, y) ≤ n. On the other hand, given a and n, we can enumerate all these y, and b is among them, so b can be described by its ordinal number in this enumeration, therefore
.
Summing these two inequalities, we get the desired result.
We can now get several known O(1)-equalities for complexities as corollaries of Theorem 1.
• Recall that C (a, C (a)) = C (a), and K (a, K (a)) = K (a) (the O(1)-additive terms are omitted here and below), since the shortest program for a also describes its own length.
• For empty b we get C (a) = K (a| C (a)), see also [3,6].
• For empty a we get C (b) = C (b| C (b)), see also [3,6].
• The last two equalities imply that C (u|
The direct proof for last three statements is also easy. In other terms, K (a|i
• More generally, we may let a be some fixed computable function of b:
One can also see that Theorem 1 can be formally derived from Levin’s results mentioned above. One may complain that Theorem 1 is a bit strange since it uses prefix-free complexity in one term and plain complexity in the second (conditional) part. As we have already noted, one cannot use C in both parts: C (a, b) can exceed even C (a) + C (b) by a logarithmic term. One may then ask whether it is possible to exchange plain and prefix-free complexity in the two terms we have and prove that C (a, b) equals something like
It turns out that it is not possible: even the inequality C (a, b) ≤ C (a) + K (b|a) + O( 1) is not true. At first it seems that one could concatenate a self-delimiting program q that produces b given a and a (plain) program p that produces a, in the hope that the endpoint of q can be reconstructed, and then the rest is p. However, this idea does not work: the program q is self-delimiting only when a is known; to know a we need to have p, and to know p we need to know where q ends, so there is a vicious circle here. Let us show that the problem is unavoidable and that for infinitely many pairs (x, y) we have
where n = |x| + |y| is the total length of both strings. To construct such a pair, let n = 2 k for some k, and choose a string r of length n and a natural number i < n such that C (r, i) ≥ n + logn. (For every n, there are n2 n pairs (r, i), so one of them has high complexity.) Let x = r 1 . . . r i and y = r i+1 . . . r n . Note that C (x, y) = C (r, i) ≥ n+logn and that C (x) ≤ i. Furthermore,
There is still some chance to get a formula for the plain complexity of a pair (x, y) that involves only plain complexities, assuming that we add some condition in the left hand side, i.e., to get some formula of the type C (a, b|?) =?. Unfortunately, the best result in this direction that we managed to get is the following observation: Using the relativized version of the statement C (z) = C (z| C (z)), we conclude that C (x|k, l) = k and C (y|x, k, l) = l. Let us prove now that C (x, y|k, l) = k + l. Indeed, the standard proof of Kolmogorov-Levin theorem shows that for any x, y, k ′ , l ′ such that
Hence if C (x|k, l) = k and C (y|x, k, l) = l for some k and l, we have C (x, y|k, l) ≥ k + l (otherwise k and l can be decreased to get a contradiction). By concatenation we obtain also that C (x, y|k, l) ≤ k + l, so C (x, y|k, l) = k + l (all equations with O(1)-precision).
It remains to show that C (x, y|k, l) = k + l implies C (x, y|k) = k + l and, similarly, C (x, y|l) = k + l. Indeed, a program of length k + l that maps (k, l) to (x, y), can be used to map k (or l) to (x, y): knowing the length of the program and one of the values of k and l, we reconstruct the other value.
One can ask what can be said about pairs (k ′ , l ′ ) such that C (x|l ′ ) ≤ k ′ and C (y|x, k ′ ) ≤ l ′ . The pair (k, l) given by the theorem is not necessarily coordinate-wise minimal: for example, taking a large k ′ that contains full information about y we may let l ′ = 0. Indeed, C (x|0) ≤ k ′ (since k ′ is large) and C (y|x, k ′ ) ≤ 0 (since k ′ determines y). However, to get some de
📸 Image Gallery
