An Overview of Complexity Theory
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.
KeywordsPolynomial Time Decision Problem Turing Machine Travel Salesman Problem Travel Salesman Problem
- Ahuja RK, Magnanti TL, Orlin JB (1993) Network flows: theory, algorithms, and applications. Prentice-Hall, Englewood Cliffs, NJ. ISBN: 013617549XGoogle Scholar
- Brassard G, Bratley P (1988) Algorithmics theory and practice. Prentice-Hall, Englewood Cliffs, NJGoogle Scholar
- Cook S (1971) The complexity of theorem-proving procedures. Proceedings of the third annual ACM symposium on theory of Computing, pp 151–158Google Scholar
- Du D, Ko K (2000) Theory of computational complexity. Wiley, New YorkGoogle Scholar
- Garey MR, Johnson DS (1979) Computers and intractability: A guide to the theory of NP-completeness. W.H. Freeman, San Francisco, CAGoogle Scholar
- 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
- Kozen, DC (2006) Theory of computation. Springer-Verlag, BerlinGoogle Scholar
- Martin JC (1996) Introduction to languages and the theory of computation. McGraw-Hill, New YorkGoogle Scholar
- Papadimitriou CH (1994) Computational complexity. Addison-Wesley, Reading, MAGoogle Scholar
- Papadimitrious CH, Steiglits K (1982) Combinatorial optimization: Algorithms and complexity. Prentice-Hall, Englewood Cliffs, NJGoogle Scholar
- Sipser M (1996) Introduction to the theory of computation. Preliminary Edition. PWS PublishingGoogle Scholar
- Sipser M (1997) Introduction to the theory of computation. PWS PublishingGoogle Scholar
- Turing A (1936) On computable numbers with an application to the entscheidnungs problem. Proc Lond Math Soc ser 2, 42:230–265Google Scholar
- Wood D (1987) Theory of computation. Wiley, New YorkGoogle Scholar