Shen, Uspensky & Vereshchagin — Chapter 6

General Scheme for Complexities

A unified framework for comparing plain, prefix, monotone, and decision complexities. Oracles and relativization.

Prerequisites: Chapters 1–5 (C, K, KM, their properties and relationships).
8
Chapters
1
Simulations
8
Quizzes

Chapter 0: The Zoo of Complexities

We've now seen three major complexity notions: plain C(x), prefix K(x), and monotone KM(x). Each has its strengths. This chapter steps back to see the big picture: what do all these complexities have in common, and how do they differ?

The complexity zoo:
C(x): plain. Simplest. Good for counting arguments and combinatorics.
K(x): prefix. Satisfies Kraft. Good for probability and randomness.
KM(x): monotone. Good for infinite sequences and dimension.
CD(x): decision complexity (new in this chapter). Good for structural analysis.

The general scheme: each complexity is defined by a class of "machines" (decompressors) and a notion of "description." Different constraints on the machines give different complexities, but the same universality argument works in each case.

Check: All complexity notions share which common feature?

Chapter 1: Decision Complexity

Decision complexity CD(x) uses a different kind of "description": instead of a program that produces x, we use a program that decides membership in a set containing x.

Definition: CD(x) is the length of the shortest program for a total decidable set A such that x ∈ A and |A| ≤ 2n, where n is the program length. The set A is the "description" — it narrows down which string x is, and the program length measures how much narrowing is needed.

This is a fundamentally different perspective. Plain complexity asks: "what is the shortest program that outputs x?" Decision complexity asks: "what is the smallest decidable set that singles out x (within a size constraint)?"

The relation: C(x) ≤ CD(x) + O(1). Decision complexity is never less than plain complexity (up to a constant). Intuitively, if you can decide membership in a small set containing x, you can also enumerate that set and find x by its index, giving a short description.

Check: Decision complexity uses descriptions that are...

Chapter 2: Comparing Complexities

How do the different complexities relate? Here is the hierarchy:

C(x) ≤ CD(x) + O(1) ≤ K(x) + O(1) ≤ C(x) + 2 log C(x) + O(1)

In words: plain ≤ decision ≤ prefix, and all three are within O(log n) of each other for strings of length n. The differences are logarithmic, not linear.

PairRelationshipGap
C vs KC(x) ≤ K(x) ≤ C(x) + 2 log C(x) + O(1)O(log n)
C vs KMKM(x) ≤ K(x) + O(1)O(1)
K vs KMKM(x) ≤ K(x) ≤ KM(x) + O(log n)O(log n)
C vs CDC(x) ≤ CD(x) + O(1)Can be O(log n)

For most applications (incompressibility method, combinatorial proofs), the O(log n) difference is negligible and any complexity works. The distinction matters only for precise characterizations of randomness (which require K or KM).

Check: The gap between plain and prefix complexity is at most...

Chapter 3: Conditional Variants

Each complexity has a conditional version: C(x|y), K(x|y), KM(x|y), CD(x|y). The conditional version measures how much information x contains beyond what y provides.

The general pattern: conditional complexity C(x|y) is defined using a decompressor that takes both a description and the "hint" y as input. The universal machine for conditional complexity simulates all conditional decompressors.

All chain rules look similar:
C(x,y) = C(x) + C(y|x) + O(log n)
K(x,y) = K(x) + K(y|x*) + O(1)
The prefix version has O(1) error instead of O(log n) — one of the key advantages of prefix complexity.

Conditional complexities satisfy the same basic properties: non-growth under computable transformations, counting arguments, upper semicomputability (or lower semicomputability for the associated semimeasures).

Check: The chain rule for prefix complexity has error term...

Chapter 4: Oracles

An oracle is a set A ⊆ N that a machine can query: "is n ∈ A?" in one step. Machines with oracle access can compute things that ordinary machines cannot.

The complexity with oracle A is denoted CA(x), KA(x), etc. It measures the shortest description when the decompressor has access to oracle A.

Oracles can only help: CA(x) ≤ C(x) + O(1) always. Having more information (the oracle) can only make descriptions shorter. But the improvement depends on how much x "correlates" with A.

A particularly important case: A = the halting set (the set of all programs that halt). With a halting oracle, complexity becomes computable! CHalt(x) can be computed, because we can now check all programs up to a given length and determine which ones halt.

The oracle hierarchy: A0 = ∅ (no oracle), A1 = halting set, A2 = halting set for machines with oracle A1, etc. Each level gives strictly more computational power. Complexity relative to An is denoted C(n)(x).

Check: With a halting oracle, Kolmogorov complexity becomes...

Chapter 5: The Hierarchy

The different complexities form a natural hierarchy, unified by the general scheme. Here is the complete picture:

Plain C(x)
Arbitrary computable decompressor. No constraints on domain.
↓ add prefix-free constraint
Prefix K(x)
Domain is prefix-free. Kraft inequality holds. ∑2−K(x) ≤ 1.
↓ add monotonicity constraint
Monotone KM(x)
Extending input extends output. Semimeasure on tree.
↓ different direction: use decidable sets
Decision CD(x)
Smallest decidable set containing x. Total machines.

Each level adds a constraint that makes the complexity more structured but potentially larger. The extra structure buys us better theorems (Kraft inequality, chain rule with O(1) error, Levin-Schnorr characterization).

Check: Adding the prefix-free constraint to the description language buys us...

Chapter 6: Complexity Map

The visualization below shows how the different complexity notions relate for a given string length n.

Complexity Comparison

For strings of length n, the different complexities are close but not identical. The bars show typical values and their relationships.

String length n100
Check: For strings of length 1000, the gap between C(x) and K(x) is at most about...

Chapter 7: Summary

ComplexityMachine typeKey property
C(x)Arbitrary partial computableSimplest. Counting argument.
CD(x)Total decidable setsUses set membership, not output.
K(x)Prefix-free domainKraft inequality. Probability link.
KM(x)Monotone mappingMonotone in prefix order. Dimension.
CA(x)Oracle access to ARelativized complexity.
Looking ahead: Chapter 7 builds the definitive bridge between Kolmogorov complexity (individual strings) and Shannon entropy (random variables). The connection is deep: for a random variable X, the expected prefix complexity E[K(X)] is approximately H(X), the Shannon entropy.
Final check: The general scheme unifies all complexities by showing they all arise from...