Blum axioms
In computational complexity theory the Blum axioms or Blum complexity axioms are axioms that specify desirable properties of complexity measures on the set of computable functions. The axioms were first defined by Manuel Blum in 1967.[1]
Importantly, Blum's speedup theorem and the Gap theorem hold for any complexity measure satisfying these axioms. The most well-known measures satisfying these axioms are those of time (i.e., running time) and space (i.e., memory usage).
Definition
[edit]To begin, we list all partial computable functions. That is, we assign a computable numbering of these functions: . For example, we may specify a specific programming language, then assign to be the lexicographically n-th syntactically valid program according to that. Two programs may compute the exact same partial function, but have different numberings. This allows us to distinguish their "complexity"
Abstractly, to say that we are measuring the "complexity" of program means finding a function , such that for any program input , the complexity/cost of computing on that input is . If program does not halt on , then should be undefined. Otherwise, should be a definite natural number. This gives us the first axiom:
- The domains of and are identical.
Further, the complexity measure should be computable in some sense, for non-computable complexity measures is not interesting in practice. This gives us the second axiom:
- There is a program that, given any , decides whether . Note that if is undefined, then by definition is FALSE for all . In other words, the set is recursive.
These are the Blum axioms. A Blum complexity measure is a pairing that satisfies the Blum axioms.
Given a Blum complexity measure, and any total computable function , we define to be the class of functions of complexity class bounded by . That is, consists of total computable functions , such that there exists some , such that .
The definition of complexity class is sometimes loosened to , the class of functions bounded by for almost all inputs. That is, consists of total computable functions , such that there exists some , such that for all but finitely many .
Examples
[edit]Time complexity is a Blum complexity measure. To decide whether , simulate for steps. If the machine halts before steps are done, then output TRUE, else output FALSE.
Similarly, space complexity, or computable combinations thereof, is a Blum complexity measure.
is not a complexity measure, since it fails the second axiom.
Properties
[edit]All statements assume begin with "For any Blum complexity measure ...".
There are arbitrarily difficult ways of computing any function: Any total computable , and any partial computable , there exists some such that , and for any , if is defined, then .[2]: Thm. 3.18
There are functions that are arbitrarily high in complexity class: Any total computable , there exists total computable functions not in .[2]: Thm. 3.20
Gap theorem: Given any total computable , there exists a total computable function such that .
The construction is constructive. That is, the proof of the theorem is simply a program that, given a program for computing , outputs a program that computes .[2]: Thm. 3.26
The McCreight and Meyer union theorem:[3] Let be a total computable function, such that for any , for all but finitely many . Then there exists a total computable function such that .
Compression theorem:[2]: Thm. 3.28 Let be a total computable function. There exists a total computable function such that, for any :
- If is defined, then . This condition is used to avoid trivially stacking up complexity in the output size.
- For any program such that , we have for almost all . This gives the universal lower bound.
- for almost all . This gives the existential upper bound.
Complexity classes
[edit]For a total computable function complexity classes of computable functions can be defined as
is the set of all computable functions with a complexity less than . is the set of all boolean-valued functions with a complexity less than . If we consider those functions as indicator functions on sets, can be thought of as a complexity class of sets.
References
[edit]- ^ Blum, Manuel (1967). "A Machine-Independent Theory of the Complexity of Recursive Functions" (PDF). Journal of the ACM. 14 (2): 322–336. doi:10.1145/321386.321395. S2CID 15710280.
- ^ a b c d Smith, Carl H. (1994), "Abstract Complexity Theory", A Recursive Introduction to the Theory of Computation, New York, NY: Springer New York, pp. 68–90, doi:10.1007/978-1-4419-8501-9_4, ISBN 978-1-4612-6420-0
- ^ McCreight, E. M.; Meyer, A. R. (1969-05-05). "Classes of computable functions defined by bounds on computation: Preliminary Report". Proceedings of the first annual ACM symposium on Theory of computing. STOC '69. New York, NY, USA: Association for Computing Machinery: 79–88. doi:10.1145/800169.805423. ISBN 978-1-4503-7478-1.
- Boas, Peter van Emde (1975), Bečvář, Jíří (ed.), "Ten years of speedup", Mathematical Foundations of Computer Science 1975 4th Symposium, Mariánské Lázně, September 1–5, 1975, vol. 32, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 13–29, doi:10.1007/3-540-07389-2_179, ISBN 978-3-540-07389-5
- Bridges, Douglas S. (1994), "Abstract Complexity Theory", Computability, vol. 146, New York, NY: Springer New York, pp. 93–115, doi:10.1007/978-1-4612-0863-1_7, ISBN 978-1-4612-6925-0