# An Overview of Complexity Theory

Chapter
Part of the Contributions to Management Science book series (MANAGEMENT SC.)

## Abstract

Computational complexity theory (Shortly: Complexity Theory) has been a central area of theoretical computer science since its early development in the mid-1960s. Its subsequent rapid development in the next three decades, has not only established it as a rich, exciting theory, but also has shown strong influence on many other related areas in computer science, mathematics, and operation research (Du and Ko 2000). However, the notions of algorithms and complexity are meaningful only when they are defined in terms of formal computation models (Du and Ko 2000).

Apparently, we need some models to base the foundation of complexity theory on them. In this chapter, we introduce only three basic models: deterministic turing machine (DTM), non-deterministic turing machine (NTM) and Oracle machine models. It should be noted there are also some other models (see Du and Ko 2000).

Using such models, allows us to separate the complexity notion from any physical machine. Hence, we can measure the time complexity of algorithms and hardness of problems independent from a specific machine which runs the algorithm(s). It should be noted that these are just abstract models; means, are defined mathematically (Sipser 1996).

The structure of this chapter is as follows. We first discuss why we actually need complexity theory. Then, we introduce three basic models of computation: DTM and NTM and Oracle model. Then we present a brief introduction about the concept of big O notation which is widely used in the complexity theory. In Sect. 2.5, the decision problems as a special form of problems are described. Following this section, the basic concepts of reduction are presented, which help us to make relationships between different classes of complexity and also provide a rich tool to identify the unknown complexity class of a new problem. Finally, we introduce the most popular classes of complexity: P> , NP, NP-complete and NP-hard. In each class, also, some known problems are presented.

## Keywords

Polynomial Time Decision Problem Turing Machine Travel Salesman Problem Travel Salesman Problem
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

## References

1. Agrawal M, Kayal N, Saxena N (2004) PRIMES is in P. Ann Math 160(2):781–793
2. Ahuja RK, Magnanti TL, Orlin JB (1993) Network flows: theory, algorithms, and applications. Prentice-Hall, Englewood Cliffs, NJ. ISBN: 013617549XGoogle Scholar
3. Brassard G, Bratley P (1988) Algorithmics theory and practice. Prentice-Hall, Englewood Cliffs, NJGoogle Scholar
4. Cook S (1971) The complexity of theorem-proving procedures. Proceedings of the third annual ACM symposium on theory of Computing, pp 151–158Google Scholar
5. Daskin MS (1995) Network and discrete location models: Algorithms, and applications. Wiley, New York
6. Du D, Ko K (2000) Theory of computational complexity. Wiley, New YorkGoogle Scholar
7. Garey MR, Johnson DS (1979) Computers and intractability: A guide to the theory of NP-completeness. W.H. Freeman, San Francisco, CAGoogle Scholar
8. Karp RM (1972) Reducibility among combinational problems. In: Miller R, Thatcher J (eds) Complexity of computer computations. Plenum Press, New York, pp 86–103Google Scholar
9. Kozen, DC (2006) Theory of computation. Springer-Verlag, BerlinGoogle Scholar
10. Martin JC (1996) Introduction to languages and the theory of computation. McGraw-Hill, New YorkGoogle Scholar
12. Papadimitrious CH, Steiglits K (1982) Combinatorial optimization: Algorithms and complexity. Prentice-Hall, Englewood Cliffs, NJGoogle Scholar
13. Sahni S, Horowitz E (1978) Combinational problems: Reducibility and approximation. Oper Res 26:718–759
14. Sipser M (1996) Introduction to the theory of computation. Preliminary Edition. PWS PublishingGoogle Scholar
15. Sipser M (1997) Introduction to the theory of computation. PWS PublishingGoogle Scholar
16. Turing A (1936) On computable numbers with an application to the entscheidnungs problem. Proc Lond Math Soc ser 2, 42:230–265Google Scholar
17. Wood D (1987) Theory of computation. Wiley, New YorkGoogle Scholar