Cobham's thesis, also known as Cobham–Edmonds thesis (named after Alan Cobham and Jack Edmonds), asserts that computational problems can be feasibly computed on some computational device only if they can be computed in polynomial time; that is, if they lie in the complexity class P. In modern terms, it identifies tractable problems with the complexity class P.
Formally, to say that a problem can be solved in polynomial time is to say that there exists an algorithm that, given an n-bit instance of the problem as input, can produce a solution in time O(nc), the letter O is big-O notation and c is a constant that depends on the problem but not the particular instance of the problem.
Alan Cobham's 1965 paper entitled "The intrinsic computational difficulty of functions" is one of the earliest mentions of the concept of the complexity class P, consisting of problems decidable in polynomial time. Cobham theorized that this complexity class was a good way to describe the set of feasibly computable problems.
While Cobham's thesis is an important milestone in the development of the theory of computational complexity, it has limitations as applied to practical feasibility of algorithms. The thesis essentially states that "P" means "easy, fast, and practical," while "not in P" means "hard, slow, and impractical." But this is not always true, because the thesis abstracts away some important variables that influence the runtime in practice:
- It ignores constant factors and lower-order terms.
- It ignores the size of the exponent. The time hierarchy theorem proves the existence of problems in P requiring arbitrarily large exponents.
- It ignores the typical size of the input.
All three are related, and are general complaints about analysis of algorithms, but they particularly apply to Cobham's thesis since it makes an explicit claim about practicality. Under Cobham's thesis, a problem for which the best algorithm takes n200 instructions is considered feasible, and a problem with an algorithm that takes 20.00001 n instructions infeasible—even though one could never solve an instance of size n = 2 with the former algorithm, whereas an instance of the latter problem of size n = 106 could be solved without difficulty. In fields where practical problems have millions of variables (such as Operations Research or Electronic Design Automation), even O(n3) algorithms are often impractical.
- Oded Goldreich (2008), Computational complexity: a conceptual perspective, Cambridge University Press, p. 128, ISBN 978-0-521-88473-0
- Dexter Kozen (2006), Theory of computation, Birkhäuser, p. 4, ISBN 978-1-84628-297-3
- Egon Börger (1989), Computability, complexity, logic, Elsevier, p. 225, ISBN 978-0-444-87406-1
- Steven Homer and Alan L. Selman (1992), "Complexity Theory", in Alan Kent and James G. Williams (ed.), Encyclopedia of Computer Science and Technology, 26, CRC Press
- Alan Cobham (1965), The intrinsic computational difficulty of functions (PDF)
- Edmonds, Jack (1965). "Paths, trees, and flowers". Can. J. Math. 17: 449–467. doi:10.4153/CJM-1965-045-4.
- Meurant, Gerard (2014). Algorithms and Complexity. p. p. 4. ISBN 978-0-08093391-7.
A problem is said to be feasible if it can be solved in polynomial time (as stated for the first time in Edmonds  [1965, Paths, trees, and flowers])).
- D. Pisinger, 2003. "Where are the hard knapsack problems?" Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark, see  Archived 2015-11-23 at the Wayback Machine, accessed 31 January 2015.
- Rotman, Brian (18 June 2003). "Will the digital computer transform classical mathematics?". Phil. Trans. R. Soc. Lond. A. 361 (1809): 1675–1690. doi:10.1098/rsta.2003.1230. PMID 12952680.