# Computational Complexity Theory

**DOI:**https://doi.org/10.1007/0-306-48332-7_67

Many problems that arise in operations research and related fields are *combinatorial* in nature: problems where we seek the optimum from a very large but finite number of solutions. Sometimes such problems can be solved quickly and efficiently, but often the best solution procedures available are slow and tedious. It therefore becomes important to assess how well a proposed procedure will perform.

The theory of *computational complexity* addresses this issue. Complexity theory is a comparatively young field, with seminal papers dating from 1971–1972 ([1], [5]). Today, it is a wide field encompassing many subfields. For a formal treatment, see [6]. As we shall see, the theory partitions all realistic problems into two groups: the ‘easy’ and the ‘hard’ to solve, depending on how complex (hence how fast or slow) the computational procedure for that problem is. The theory defines still other classes, but all but the most artificial mathematical constructs fall into these two. Each of them...

### References

- [1]Cook, S.A.: ‘The complexity of theorem proving procedures’,
*Proc. 3rd Annual ACM Symposium on Theory of Computing*, ACM, 1971, pp. 151–158.Google Scholar - [2]
- [3]Hardy, G.H., and Wright, E.M.:
*An introduction to the theory of numbers*, Clarendon Press, 1979.Google Scholar - [4]Hopcroft, J.E., and Ullman, J.D.:
*Introduction to automata theory, languages, and computation*, Addison-Wesley, 1979.Google Scholar - [5]Karp, R.M.: ‘Reducibility among combinatorial problems’, in R.E. Miller and J.W. Thatcher (eds.):
*Complexity of Computer Computations*, Plenum, 1972, pp. 85–103.Google Scholar - [6]
- [7]