All Topics  
Computational complexity theory

 

   Email Print
   Bookmark   Link






 

Computational complexity theory



 
 
Computational complexity theory, as a branch of the theory of computation
Theory of computation

The theory of computation is the branch of computer science that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm....
 in computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
, investigates the problems related to the amounts of resources
Computational resource

In computational complexity theory, a computational resource is a resource used by some computational models in the solution of computational problems....
 required for the execution of algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s (e.g., processor execution time, primary memory (RAM), secondary memory (DISK)), and the inherent difficulty in providing efficient algorithms for specific computational problem
Computational problem

In theoretical computer science, a computational problem is a mathematical object representing a collection of questions that computers might want to solve....
s.

pical question of the theory is, "As the size of the input to an algorithm increases, how do the running time and memory requirements of the algorithm change and what are the implications and ramifications of that change?" In other words, the theory, among other things, investigates the scalability
Scalability

In telecommunications and software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner, or to be readily enlarged....
 of computational problems and algorithms. In particular, the theory places practical limits on what computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
s can accomplish.

A common approach to computational complexity in the worst-case analysis, i.e., the estimation of the maximal amount of the computational resources in question to run the algorithm.






Discussion
Ask a question about 'Computational complexity theory'
Start a new discussion about 'Computational complexity theory'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Computational complexity theory, as a branch of the theory of computation
Theory of computation

The theory of computation is the branch of computer science that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm....
 in computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
, investigates the problems related to the amounts of resources
Computational resource

In computational complexity theory, a computational resource is a resource used by some computational models in the solution of computational problems....
 required for the execution of algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
s (e.g., processor execution time, primary memory (RAM), secondary memory (DISK)), and the inherent difficulty in providing efficient algorithms for specific computational problem
Computational problem

In theoretical computer science, a computational problem is a mathematical object representing a collection of questions that computers might want to solve....
s.

Overview

A typical question of the theory is, "As the size of the input to an algorithm increases, how do the running time and memory requirements of the algorithm change and what are the implications and ramifications of that change?" In other words, the theory, among other things, investigates the scalability
Scalability

In telecommunications and software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner, or to be readily enlarged....
 of computational problems and algorithms. In particular, the theory places practical limits on what computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
s can accomplish.

A common approach to computational complexity in the worst-case analysis, i.e., the estimation of the maximal amount of the computational resources in question to run the algorithm. In a number of cases, the worst-case estimates are too pessimistic to explain good performance of some algorithm "in practice". To address the issue, other approaches have been pursued, such as average-case analysis or smoothed analysis
Smoothed analysis

Smoothed analysis is a way of measuring the Computational complexity theory. It gives a more realistic analysis of the practical performance of the algorithm, such as its running time, than using worst-case or average-case scenarios....
.

An axiomatic
Axiomatic system

In mathematics, an axiomatic system is any Set of axioms from which some or all axioms can be used in conjunction to logically derive theorems....
 approach to computational complexity was developed by Manuel Blum
Manuel Blum

Manuel Blum is a computer scientist who received the Turing Award in 1995 "In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking"....
. He introduced such measures of complexity as the size of a machine and axiomatic complexity measure of recursive functions. The time complexity and space complexity of algorithms are special cases of the axiomatic complexity measure. Blum's axiomatic approach
Blum axioms

In computational complexity theory the Blum axioms or Blum complexity axioms are axioms which specify desirable properties of complexity measures on the set of computable functions....
 helps to study computational complexity in the most general setting.

An important aspect of the theory is to categorize computational problems and algorithms into complexity class
Complexity class

In computational complexity theory, a complexity class is a set of problems of related complexity. A typical complexity class has a definition of the form:...
es. The most important open question of complexity theory is whether the complexity class P
P (complexity)

In computational complexity theory, P, also known as PTIME or DTIME, is one of the most fundamental complexity classes. It contains all decision problems which can be solved by a deterministic Turing machine using a polynomial amount of computation time, or polynomial time....
 is the same as the complexity class NP
NP (complexity)

In computational complexity theory, NP is one of the most fundamental complexity classes.The abbreviation NP refers to "Nondeterministic algorithm Polynomial time"....
, or is a strict subset as is generally believed. Shortly after the question was first posed, it was realised that many important industry problems in the field of operations research
Operations research

Operations Research in the USA, South Africa and Australia, and Operational Research in Europe and Canada, is an interdisciplinary branch of applied mathematics and formal science that uses methods such as mathematical modeling, statistics, and algorithms to arrive at optimal or near optimal solutions to complex problems....
 are of an NP subclass called NP-complete
NP-complete

In computational complexity theory, the complexity class NP-complete is a class of problems having two properties:* Any given solution to the problem can be verified quickly ; the set of problems with this property is called NP ....
. NP-complete problems have the property that solutions to these problems are quick to check, yet the current methods to find solutions are not "efficiently scalable" (as described more formally below). More importantly, if the NP class is larger than P, then no efficiently scalable solutions exist for these problems.

The openness of the P-NP problem prompts and justifies various research areas in the computational complexity theory, such as identification of efficiently solvable special cases of common computational problems, study of the computational complexity of finding approximate or heuristic solutions, research into the hierarchies of complexity classes, and the exploration of multivariate algorithmic approaches such as Parameterized complexity
Parameterized complexity

In computer science, parameterized complexity is a measure of complexity of problems with multiple input parameters. The theory of parameterized complexity was developed in the 1990s by Rod Downey and Michael Fellows....
.

Since many practically relevant graph problems are NP-hard, implying that presumably any exact algorithm requires time exponential in the input size, the relatively new idea of parameterized complexity is to take a two-dimensional view, where in addition to the input size we consider a parameter k; a typical parameter is the size of the solution. A problem is called fixed-parameter tractable (FPT) if an instance of size n can be solved in f(k)n^O(1) time, where f is an arbitrary computable function that absorbs the exponential part of the running time. Thus, whenever the parameter turns out to be small in practice, we can expect good running times. Various techniques to design fixed-parameter algorithms include data reduction, iterative compression, and colorcoding.

History

The first publication on computational complexity appeared in 1956 (Trahtenbrot 1956). However, this publication in Russian was for a long time unknown to the Western reader. That is why the beginning of studies in computational complexity can be attributed not only to Trahtenbrot (see also Trahtenbrot 1967), but also to Rabin (Rabin 1959; Rabin 1960; Rabin 1963), Hartmanis, Lewis and Stearns (Hartmanis and Stearns 1964; Hartmanis and Stearns 1965; Hartmanis, Lewis and Stearns 1965). The paper (Hartmanis and Stearns 1965) became the most popular in this area. As a result, some researchers attribute the beginning of computational complexity theory only to Hartmanis, Lewis and Stearns (see, for example, Aho, Hopcroft and Ullman 1976).

Research of Andrey Kolmogorov
Andrey Kolmogorov

Andrey Nikolaevich Kolmogorov was a Soviet Union Russian mathematician, preeminent in the 20th century who advanced various scientific fields ....
 in the theory of algorithms influenced the development of computational complexity theory. A notable early discovery was the Karatsuba algorithm
Karatsuba algorithm

The Karatsuba algorithm is an efficient multiplication algorithm that was discovered by Anatolii Alexeevitch Karatsuba in 1960 and published in 1962 ....
 in 1960, for the multiplication of two numbers. This algorithm disproved Kolmogorov's 1956 conjecture that the fastest multiplication algorithm must be , and thus helped launch the study of algorithms in earnest. In 1967, Manuel Blum
Manuel Blum

Manuel Blum is a computer scientist who received the Turing Award in 1995 "In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking"....
 developed an axiomatic complexity theory based on his axioms
Blum axioms

In computational complexity theory the Blum axioms or Blum complexity axioms are axioms which specify desirable properties of complexity measures on the set of computable functions....
 and proved an important result, the so called, speed-up theorem
Blum's speedup theorem

In computational complexity theory Blum's speedup theorem, first stated by Manuel Blum in 1967, is an important theorem about the complexity of computable functions....
.

The field was subsequently expanded by many researchers, including:

  • Manuel Blum
    Manuel Blum

    Manuel Blum is a computer scientist who received the Turing Award in 1995 "In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking"....
  • Allan Borodin
    Allan Borodin

    Allan Bertram Borodin is a mathematician and computational theorist who has done important work in computational complexity theory and algorithms....
  • Stephen Cook
    Stephen Cook

    Stephen Arthur Cook is a noted computer science.Cook formalised the notion of NP-completeness in a famous 1971 paper "The Complexity of Theorem Proving Procedures", which also contained Cook's theorem, a proof that the boolean satisfiability problem is NP-complete....
  • Michael Fellows
    Michael Fellows

    Michael Ralph Fellows is Professor at the University of Newcastle, Australia. Fellows is recognized as one of the founders of Parameterized complexity, a Computational complexity theory framework that uses structure in hard problems for the design and analysis of algorithm for their solution....
  • Michael R. Garey
  • Oded Goldreich
    Oded Goldreich

    Oded Goldreich is a professor of Computer Science at the Faculty of Mathematics and Computer Science of Weizmann Institute of Science, Israel. His research interests lie within the theory of computing....
  • Juris Hartmanis
    Juris Hartmanis

    Juris Hartmanis is a prominent computer scientist and computational theorist who, with Richard Stearns , received the 1993 Association for Computing Machinery Turing Award "in recognition of their seminal paper which established the foundations for the field of computational complexity theory"....
  • David S. Johnson
    David S. Johnson

    David Stifler Johnson is a computer scientist specializing in algorithms and optimization. He is currently the head of the Algorithms and Optimization Department of AT&T Labs Research....
  • Richard Karp
    Richard Karp

    Richard Manning Karp is a computer scientist and computational theorist, notable for research in the theory of algorithms, for which he received a Turing Award in 1985 and the Kyoto Prize in 2008....
  • Marek Karpinski
    Marek Karpinski

    Marek Karpinski is a computer scientist and mathematician known for his research in the theory of Algorithm and their applications, Combinatorial optimization, Computational complexity, and mathematical foundations....
  • Donald Knuth
    Donald Knuth

    Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
  • Leonid Levin
    Leonid Levin

    Leonid Anatolievich Levin is a Russian-American computer scientist best known for his work in defining NP-completeness. He studied under Andrey Kolmogorov....
  • Christos H. Papadimitriou
  • Alexander Razborov
    Alexander Razborov

    Aleksandr Aleksandrovich Razborov , sometimes known as Sasha Razborov, is a Russian mathematician and computational theorist who won the Nevanlinna Prize in 1990 for intruducting "approximation method" in proving Boolean circuit lower bounds of some essential algorithmic problems, and the G?del Prize with Steven Rudich in 2007 for their...
  • Richard Stearns
    Richard Stearns (computer scientist)

    Richard Edwin Stearns is a prominent computer scientist who, with Juris Hartmanis, received the 1993 Association for Computing Machinery Turing Award "in recognition of their seminal paper which established the foundations for the field of computational complexity theory"....
  • Leslie Valiant
    Leslie Valiant

    File:Leslie Valiant.jpgLeslie Gabriel Valiant is a Great Britain computer scientist and computational theorist.He was educated at King's College, Cambridge, Imperial College London, and University of Warwick where he received his Ph.D....
  • Andrew Yao
    Andrew Yao

    Andrew Chi-Chih Yao is a prominent computer scientist and computational theorist. Yao used the minimax to prove what is now known as Yao's Principle....


On August 6, 2002, the AKS primality test
AKS primality test

The AKS primality test is a deterministic algorithm primality test algorithm created and published by three Indian Institute of Technology Kanpur computer scientists, Manindra Agrawal, Neeraj Kayal, and Nitin Saxena on August 6, 2002 in a paper titled PRIMES is in P....
 (also known as Agrawal-Kayal-Saxena primality test and cyclotomic AKS test) was first published in a paper "PRIMES is in P" by three Indian Institute of Technology Kanpur
Indian Institute of Technology Kanpur

The Indian Institute of Technology Kanpur is one of the Indian Institutes of Technology, set up in the then-industrial city of Kanpur in 1960....
 computer scientists, Manindra Agrawal
Manindra Agrawal

Manindra Agrawal to educators Mr. Surendra P.Agarwal and Mrs. Himanshu B.Agarwal, is a Professor and Head of the Department of Computer Science and Computer Engineering at the Indian Institute of Technology, Kanpur....
, Neeraj Kayal
Neeraj Kayal

Neeraj Kayal is an Indian computer scientist.Kayal was born and brought up in Guwahati, India. He was awarded the National Talent Search Examination, as well as the Jagadis Bose National Science Talent Search Scholarship, both in 1996....
, and Nitin Saxena
Nitin Saxena

Nitin Saxena obtained his Ph.D. at the Computer Science Department of the Indian Institute of Technology Kanpur, India. He also graduated with his B.Tech from the same institute in 2002....
 and showed a deterministic
Deterministic algorithm

In computer science, a deterministic algorithm is an algorithm which, in informal terms, behaves predictably. Given a particular input, it will always produce the same output, and the underlying machine will always pass through the same sequence of states....
 primality-proving
Primality test

A primality test is an algorithm for determining whether an input number is prime number. Amongst other fields of mathematics, it is used for cryptography....
 algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 created by the authors. The algorithm determines whether a number is prime
Prime number

In mathematics, a prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. An infinitude of prime numbers exists, as demonstrated by Euclid around 300 BC....
 or composite
Composite number

A composite number is a negative and non-negative numbers integer which has a positive divisor other than one or itself. In other words, if 0 < n is an integer and there are integers 1 < a, b < n such that n = a ? b then n is composite....
 within polynomial time
Polynomial time

In computational complexity theory, polynomial time refers to the computation time of a problem where the run time, , is no greater than a polynomial function of the problem size, n....
, and was soon improved by others. The key significance of AKS is that it was the first published primality-proving algorithm to be simultaneously general, polynomial, deterministic, and unconditional. The authors received the 2006 Gödel Prize
Gödel Prize

The G?del Prize is a prize for outstanding papers in theoretical computer science, named after Kurt G?del and awarded jointly by the European Association for Theoretical Computer Science and the Association for Computing Machinery Special Interest Group on Algorithms and Computation Theory ....
 and the 2006 Fulkerson Prize
Fulkerson Prize

The Fulkerson Prize for outstanding papers in the area of discrete mathematics is sponsored jointly by the Mathematical Programming Society and the American Mathematical Society ....
 for this work.

Computational complexity theory topics


Time and space complexity

Complexity theory deals with the relative computational difficulty of computing functions and solving other problems. This differs from computability theory, which deals with whether a problem can be solved at all, regardless of the resources required.

A single "problem" is a complete set of related questions, where each question is a finite-length string
String (computer science)

In computer programming and some branches of mathematics, a string is an ordered sequence of symbols. These symbols are chosen from a predetermined set or alphabet....
. For example, the problem FACTORIZE
Integer factorization

In number theory, integer factorization is the breaking down of a composite number into smaller non-trivial divisors, which when multiplied together equal the original integer....
 is: given an integer written in binary, return all of the prime
Prime number

In mathematics, a prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. An infinitude of prime numbers exists, as demonstrated by Euclid around 300 BC....
 factors of that number. A particular question is called an instance. For example, "give the factors of the number 15" is one instance of the FACTORIZE problem.

The time complexity of a problem is the number of steps that it takes to solve an instance of the problem as a function of the size of the input
Problem size

In the fields of Analysis of algorithms and computational complexity theory, the running time or space requirements of an algorithm are expressed as a function of the problem size....
 (usually measured in bits), using the most efficient algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
. To understand this intuitively, consider the example of an instance that is n bits long that can be solved in n˛ steps. In this example we say the problem has a time complexity of n˛. Of course, the exact number of steps will depend on exactly what machine or language is being used. To avoid that problem, the Big O notation
Big O notation

In mathematics, big O notation describes the asymptotic analysis of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions....
 is generally used (sometimes described as the "order" of the calculation, as in "on the order of"). If a problem runs in time O(n˛) on one computer, then it will also run in time O(n˛) on all other computers, so this notation allows us to generalize away from the details of a particular computer.

Example: Searching an unsorted list of words for a particular word is a linear time operation, because you must inspect every element in the list exactly once. Whereas, searching
Binary search algorithm

In computer science, a binary search algorithm is a technique for locating a particular value in a Collation. The method makes progressively better guesses, and closes in on the location of the sought value by selecting the middle element in the span , comparing its value to the target value, and determining if it is greater than, less than,...
 in a dictionary
Dictionary

A dictionary is a book of Alphabetical order listed words in a specific language, with definitions, etymologies, pronunciations, and other information; or a book of alphabetically listed words in one language with their equivalents in another, also known as a lexicon....
 is a logarithmic time problem, because you can employ an algorithm that does not visit every element to find your word.

The space complexity of a problem is a related concept that measures the amount of space or memory
Computer memory

Computer memory is usually meant to refer to the semiconductor technology that is used to store information in Electronics devices. Current primary computer memory makes use of integrated circuits consisting of silicon-based transistors....
 required by the algorithm. An informal analogy would be the amount of scratch paper needed while working out a problem with pen and paper. Space complexity is also measured with Big O notation
Big O notation

In mathematics, big O notation describes the asymptotic analysis of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions....
.

There are other measures of computational complexity. For instance, communication complexity
Communication complexity

The notion of communication complexity was introduced by Andrew Yao in 1979, who investigated the following problem involving two separated parties ....
 is a measure of complexity for distributed computations.

A different measure of problem complexity, which is useful in some cases, is circuit complexity
Circuit complexity

Circuit complexity is a topic in computational complexity theory, a branch of theoretical computer science which classifies boolean functions according to the amount of computational resources needed to compute them....
. This is a measure of the size of a boolean circuit
Boolean logic

Boolean algebra is a logical calculus of logical values, developed by George Boole in the late 1830s. It resembles the algebra of real numbers as taught in high school, but with the numeric operations of multiplication xy, addition x + y, and negation −x replaced by the respective logical operations of conjun...
  needed to compute the answer to a problem, in terms of the number of logic gates required to build the circuit. Such a measure is useful, for example, when designing hardware microchips
Integrated circuit

In electronics, an integrated circuit is a miniaturized electronic circuit that has been manufactured in the surface of a thin Wafer of semiconductor material....
 to compute the function instead of software.

Decision problems

Much of complexity theory deals with decision problems. A decision problem
Decision problem

In computability theory and computational complexity theory, a decision problem is a question in some formal system with a yes-or-no answer, depending on the values of some input parameters....
 is a problem where the answer is always yes or no. Complexity theory distinguishes between problems verifying yes and problems verifying no answers. A problem that reverses the yes and no answers of another problem is called a complement
Complement (complexity)

In computational complexity theory, the complement of a decision problem is the decision problem resulting from reversing the yes and no answers....
 of that problem.

For example, a well known decision problem IS-PRIME returns a yes answer when a given input is a prime
Prime number

In mathematics, a prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. An infinitude of prime numbers exists, as demonstrated by Euclid around 300 BC....
 and a no otherwise, while the problem IS-COMPOSITE determines whether a given integer is not a prime number (i.e. a composite number
Composite number

A composite number is a negative and non-negative numbers integer which has a positive divisor other than one or itself. In other words, if 0 < n is an integer and there are integers 1 < a, b < n such that n = a ? b then n is composite....
). When IS-PRIME returns a yes, IS-COMPOSITE returns a no, and vice versa. So the IS-COMPOSITE is a complement of IS-PRIME, and similarly IS-PRIME is a complement of IS-COMPOSITE.

Decision problems are often considered because an arbitrary problem can always be reduced
Reduction (complexity)

In computability theory and computational complexity theory, a reduction is a transformation of one computational problem into another problem....
 to some decision problem. For instance, the problem HAS-FACTOR is: given integers n and k written in binary, return whether n has any prime factors less than k. If we can solve HAS-FACTOR with a certain amount of resources, then we can use that solution to solve FACTORIZE without much more resources. This is accomplished by doing a binary search on k until the smallest factor of n is found, then dividing out that factor and repeating until all the factors are found.

An important result in complexity theory is the fact that no matter how hard a problem can get (i.e. how much time and space resources it requires), there will always be even harder problems. For time complexity, this is proven by the time hierarchy theorem
Time hierarchy theorem

In computational complexity theory, the time hierarchy theorems are important statements proven by Richard Stearns and Juris Hartmanis that ensure the existence of certain "hard" problems which cannot be solved in a given amount of time....
. A similar space hierarchy theorem
Space hierarchy theorem

In computational complexity theory, the space hierarchy theorems are separation results that show that both deterministic and nondeterministic machines can solve more problems in more space, subject to certain conditions....
 can also be derived.

Computational resources

Complexity theory analyzes the difficulty of computational problems in terms of many different computational resource
Computational resource

In computational complexity theory, a computational resource is a resource used by some computational models in the solution of computational problems....
s. The same problem can be explained in terms of the necessary amounts of many different computational resources, including time, space, randomness, alternation
Alternation

Alternation may refer to:*Alternation *Alternation , a variation in the phonological form of a morpheme*Diathesis alternation*Alternation , see Alternating Turing machine...
, and other less-intuitive measures. A complexity class
Complexity class

In computational complexity theory, a complexity class is a set of problems of related complexity. A typical complexity class has a definition of the form:...
 is the set of all of the computational problems which can be solved using a certain amount of a certain computational resource.

Perhaps the most well-studied computational resources are deterministic time (DTIME) and deterministic space (DSPACE). These resources represent the amount of computation time and memory space needed on a deterministic computer, like the computers that actually exist. These resources are of great practical interest, and are well-studied.

Some computational problems are easier to analyze in terms of more unusual resources. For example, a nondeterministic Turing machine is a computational model that is allowed to branch out to check many different possibilities at once. The nondeterministic Turing machine has very little to do with how we physically want to compute algorithms, but its branching exactly captures many of the mathematical models we want to analyze, so that nondeterministic time is a very important resource in analyzing computational problems.

Many more unusual computational resources have been used in complexity theory. Technically, any complexity measure can be viewed as a computational resource, and complexity measures are very broadly defined by the Blum complexity axioms.

Complexity classes

A complexity class
Complexity class

In computational complexity theory, a complexity class is a set of problems of related complexity. A typical complexity class has a definition of the form:...
 is the set of all of the computational problems which can be solved using a certain amount of a certain computational resource.

The complexity class P
P (complexity)

In computational complexity theory, P, also known as PTIME or DTIME, is one of the most fundamental complexity classes. It contains all decision problems which can be solved by a deterministic Turing machine using a polynomial amount of computation time, or polynomial time....
 is the set of decision problems that can be solved by a deterministic machine in polynomial time
Polynomial time

In computational complexity theory, polynomial time refers to the computation time of a problem where the run time, , is no greater than a polynomial function of the problem size, n....
. This class corresponds to an intuitive idea of the problems which can be effectively solved in the worst cases.

The complexity class NP
NP (complexity)

In computational complexity theory, NP is one of the most fundamental complexity classes.The abbreviation NP refers to "Nondeterministic algorithm Polynomial time"....
 is the set of decision problems that can be solved by a non-deterministic machine
Non-deterministic Turing machine

In theoretical computer science, a Turing machine is a theoretical machine that is used in thought experiments to examine the abilities and limitations of computers....
 in polynomial time. This class contains many problems that people would like to be able to solve effectively, including the Boolean satisfiability problem
Boolean satisfiability problem

Satisfiability is the problem of determining if the variables of a givenBoolean logic formula can be assigned in such a way as to make the formula...
, the Hamiltonian path problem
Hamiltonian path problem

In the mathematics field of graph theory the Hamiltonian path problem and the Hamiltonian cycle problem are problems of determining whether a Hamiltonian path or a Hamiltonian cycle exists in a given Graph ....
 and the vertex cover problem. All the problems in this class have the property that their solutions can be checked efficiently.

Many complexity classes can be characterized in terms of the mathematical logic
Mathematical logic

Mathematical logic is a subfield of mathematics and logic with close connections to computer science and philosophical logic. The field includes the mathematical study of logic and the applications of formal logic to other areas of mathematics....
 needed to express them – this field is called descriptive complexity
Descriptive complexity

The descriptive complexity theory or simply descriptive complexity is a branch of finite model theory, a subfield of computational complexity theory and mathematical logic, which seeks to characterize complexity classes by the type of logic needed to express the languages in them....
.

Open questions


The P = NP question


The question of whether NP is the same set as P (that is whether problems that can be solved in non-deterministic polynomial time can be solved in deterministic polynomial time) is one of the most important open questions in theoretical computer science due to the wide implications a solution would present. If it were true, many important problems would be shown to have "efficient" solutions. These include various types of integer programming in operations research
Operations research

Operations Research in the USA, South Africa and Australia, and Operational Research in Europe and Canada, is an interdisciplinary branch of applied mathematics and formal science that uses methods such as mathematical modeling, statistics, and algorithms to arrive at optimal or near optimal solutions to complex problems....
, many problems in logistics
Logistics

Logistics is the management of the flow of goods, information and other resources, including energy and people, between the point of origin and the point of consumption in order to meet the requirements of consumers ....
, protein structure prediction
Protein structure prediction

Protein structure prediction is one of the most important goals pursued by bioinformatics and theoretical chemistry. Its aim is the prediction of the three-dimensional structure of proteins from their amino acid sequences, sometimes including additional relevant information such as the structures of related proteins....
 in biology
Biology

Biology is a branch of the natural sciences concerned with the study of living organisms and their interaction with each other and their environment ....
, and the ability to find formal proofs of pure mathematics
Pure mathematics

Broadly speaking, pure mathematics is mathematics motivated entirely for reasons other than application. It is distinguished by its Rigour#Mathematical_rigour, abstraction and mathematical beauty....
 theorems efficiently using computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
s. The P=NP problem is one of the Millennium Prize Problems
Millennium Prize Problems

The Millennium Prize Problems are seven problems in mathematics that were stated by the Clay Mathematics Institute in 2000. Currently, six of the problems remain unsolved problems in mathematics....
 proposed by the Clay Mathematics Institute
Clay Mathematics Institute

The Clay Mathematics Institute is a private, non-profit Foundation , based in Cambridge, Massachusetts, Massachusetts. The Institute is dedicated to increasing and disseminating mathematics knowledge....
 the solution of which is a US$
United States dollar

The United States dollar is the unit of currency of the United States and was defined by the Coinage Act of 1792 to be between 371 and 416 grains of silver ....
1,000,000 prize for the first person to provide a solution.

Questions like this motivate the concepts of hard and complete
Complete (complexity)

In computational complexity theory, a computational problem is complete for a complexity class if it is, in a formal sense, one of the "hardest" or "most expressive" problems in the complexity class....
. A set of problems X is hard for a set of problems Y if every problem in Y can be transformed "easily" into some problem in X that produces the same solution. The definition of "easily" is different in different contexts. In the particular case of P versus NP, the relevant hard set is NP-hard
NP-hard

NP-hard , in computational complexity theory, is a class of problems informally "at least as hard as the hardest problems in NP ." A problem H is NP-hard if and only if there is an NP-complete problem L that is polynomial-time Turing reduction to H, i.e....
 – a set of problems that are not necessarily in NP themselves, but to which any NP problem can be reduced in polynomial time.

Set X is complete for Y if it is hard for Y, and is also a subset of Y. Thus, the set of NP-complete
NP-complete

In computational complexity theory, the complexity class NP-complete is a class of problems having two properties:* Any given solution to the problem can be verified quickly ; the set of problems with this property is called NP ....
  problems contains the most "difficult" problems in NP, in the sense that they are the ones most likely not to be in P. Because the problem of P = NP remains unsolved, being able to reduce a problem to a known NP-complete problem would indicate that there is no known polynomial-time solution for it. Similarly, because all NP problems can be reduced to the set, finding an NP-complete problem that can be solved in polynomial time would mean that P = NP.

Incomplete problems in NP

Incomplete problems are problems in NP that are neither NP-complete nor in P. In other words, incomplete problems can neither be solved in polynomial time nor do they belong to the hardest problems of NP. It has been shown that, if P ? NP, then there exist NP-incomplete problems.

An important open problem in this context is, whether the graph isomorphism problem is in P, NP-complete, or NP-incomplete. The answer is not known, but there are strong hints that the problem is at least not NP-complete. The graph isomorphism problem asks whether two given graph
Graph (mathematics)

In mathematics a graph is an abstract representation of a set of objects where some pairs of the objects are connected by links. The interconnected objects are represented by mathematical abstractions called vertices, and the links that connect some pairs of vertices are called edges....
s are isomorphic.

NP = co-NP

Where co-NP
Co-NP

In computational complexity theory, co-NP is a complexity class. A problem is a member of co-NP if and only if its complement is in complexity class NP ....
 is the set containing the complement
Complement (complexity)

In computational complexity theory, the complement of a decision problem is the decision problem resulting from reversing the yes and no answers....
 problems (i.e. problems with the yes/no answers reversed) of NP problems. It is believed that the two classes are not equal; however, it has not yet been proven. It has been shown that if these two complexity classes are not equal, then it follows that no NP-complete problem can be in co-NP and no co-NP-complete
Co-NP-complete

In Computational complexity theory, computational problems that are Co-NP-complete are those that are the hardest problems in Co-NP, in the sense that they are the ones most likely not to be in P ....
 problem can be in NP.

However, there are examples of problems that are both NP
NP

NP may stand for:...
 and co-NP
Co-NP

In computational complexity theory, co-NP is a complexity class. A problem is a member of co-NP if and only if its complement is in complexity class NP ....
; for example, the integer factorization
Integer factorization

In number theory, integer factorization is the breaking down of a composite number into smaller non-trivial divisors, which when multiplied together equal the original integer....
 problem. That is, given positive integers m and n, m greater than n, determine if m has a prime factor greater than 1 and less than n. If such a factor exists, then the factor itself constitutes a certificate for membership in NP
NP

NP may stand for:...
. To show membership in co-NP
Co-NP

In computational complexity theory, co-NP is a complexity class. A problem is a member of co-NP if and only if its complement is in complexity class NP ....
 one must list all prime factors of m and provide a primality certificate
Primality certificate

In mathematics and computer science, a primality certificate or primality proof is a succinct, formal proof that a number is prime. Primality certificates allow the primality of a number to be rapidly checked without having to run an expensive or unreliable primality test....
 for each.

Intractability


Problems that can be solved, but not fast enough for the solution to be usable are called intractable (Hopcroft, et al, 2007: 368). Naive complexity theory assumes problems that lack polynomial-time solutions are intractable for more than the smallest inputs. Problems that are known to be intractable in this sense include those that are EXPTIME
EXPTIME

In computational complexity theory, the complexity class EXPTIME is the Set of all decision problems solvable by a deterministic Turing machine in big O notation time, where p is a polynomial function of n....
-complete. If NP is not the same as P, then the NP-complete problems are also intractable in this sense. What this means in practice is open to debate.

To see why exponential-time solutions might be unusable in practice, consider a problem that requires 2n operations to solve (n is the size of the input). For a relatively small input size of n=100, and assuming a computer that can perform 1012 operations per second, a solution would take about 4×1010 years, which is the same order as the current age of the universe
Age of the universe

The age of the universe is the time elapsed between the Big Bang and the present day. Current theory and observations suggest that this is between 13.61 and 13.85 1000000000 years....
. On the other hand, a problem that requires n15 operations would be in P, yet a solution would also take about 4×1010 years for n=100. And a problem that required 20.0000001*n operations would not be in P, but would be solvable for quite large cases.

Finally, saying that a problem is not in P does not imply that all large cases of the problem are hard or even that most of them are. For example the decision problem in Presburger arithmetic
Presburger arithmetic

Presburger arithmetic is the first-order predicate calculus of the natural numbers with addition, named in honor of Mojzesz Presburger, who introduced it in 1929....
 has been shown not to be in P, yet algorithms have been written that solve the problem in reasonable times in most cases. Similarly, algorithms can solve the NP-complete knapsack problem
Knapsack problem

The knapsack problem or rucksack problem is a problem in combinatorial optimization. It derives its name from the following maximization problem of the best choice of essentials that can fit into one bag to be carried on a trip....
 over a wide range of sizes in less than quadratic time (see graph).

See also

  • Algorithmic efficiency
    Algorithmic efficiency

    In computer science, efficiency is used to describe properties of an algorithm relating to how much of various types of resources it consumes. The two most frequently encountered are...
     - discusses practical methods for improving an algorithms efficiency
  • Amortized analysis
    Amortized analysis

    In computer science, especially analysis of algorithms, amortized analysis finds the average running time per operation over a worst-case sequence of operations....
  • Complexity
    Complexity

    In general usage, complexity tends to be used to characterize something with many parts in intricate arrangement. In science there are at this time a number of approaches to characterizing complexity, many of which are reflected in this article....
  • Cyclomatic complexity
    Cyclomatic complexity

    Cyclomatic complexity is a software metric . It was developed by Thomas J. McCabe in 1976 and is used to measure the complexity of a program. It directly measures the number of linearly independent paths through a program's source code....
  • Game complexity
    Game complexity

    Combinatorial game theory has several ways of measuring game complexity. This article describes five of them: state-space complexity, game tree size, decision complexity, game-tree complexity, and computational complexity....
  • List of computability and complexity topics
    List of computability and complexity topics

    This is a list of computability and complexity topics, by Wikipedia page.Computability theory is the part of the theory of computation that deals with what can be computed, in principle....
  • List of important publications in computational complexity theory
  • List of open problems in computational complexity theory
    List of open problems in computer science

    This article is a list of unsolved problems in computer science.A solution to the problems in this list will have a major impact on the field of study to which they belong....
  • Parameterized Complexity
    Parameterized complexity

    In computer science, parameterized complexity is a measure of complexity of problems with multiple input parameters. The theory of parameterized complexity was developed in the 1990s by Rod Downey and Michael Fellows....
  • Performance analysis
    Performance analysis

    In software engineering, performance analysis, more commonly today known as profiling, is the investigation of a program's behavior using information gathered as the program executes ....
     - the measurement of an algorithms performance at run-time
  • The Complexity of Songs
    The Complexity of Songs

    "The Complexity of Songs" was an article published by Donald Knuth, an example of an in-joke in computer science, namely, in computational complexity theory....
  • Run-time analysis - discusses estimated run-time by analyzing the algorithm


Further reading

  • Aho, A.V.
    Alfred Aho

    Alfred Vaino Aho is a Canadian computer scientist.Aho received a B.A.Sc. in Engineering Physics from the University of Toronto and a Ph.D. in Electrical Engineering/Computer Science from Princeton University....
    , Hopcroft, J.E.
    John Hopcroft

    John Edward Hopcroft is a renowned theoretical computer scientist.He received his bachelor's degree in electrical engineering from Seattle University in 1961 and his master's degree and Doctor of Philosophy from Stanford University in 1962 and 1964, respectively....
    , and Ullman, J.D.
    Jeffrey Ullman

    Jeffrey D. Ullman is a renowned computer scientist. His textbooks on compilers , data structures, theory of computation, and databases are regarded as standards in their fields....
     (1976) The Design and Analysis of Computer Algorithms, Reading, Mass., Addison-Wesley P.C.


  • Aroram, Sanjeev; Barak, Boaz, , Cambridge University Press, March 2009.


  • Blum, Manuel
    Manuel Blum

    Manuel Blum is a computer scientist who received the Turing Award in 1995 "In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking"....
     (1967) On the Size of Machines, Information and Control, v. 11, pp. 257-265


  • Blum M. (1967) A Machine-independent Theory of Complexity of Recursive Functions, Journal of the ACM, v. 14, No.2, pp. 322-336


  • Downey R. and M. Fellows (1999) Parameterized Complexity, Springer-Verlag.


  • Fortnow, Lance; Homer, Steve, (2002/2003). . In D. van Dalen, J. Dawson, and A. Kanamori, editors, The History of Mathematical Logic. North-Holland, Amsterdam.


  • Hartmanis, J., Lewis, P.M., and Stearns, R.E. (1965) Classification of computations by time and memory requirements, Proc. IfiP Congress 65, pp. 31-35


  • Hartmanis, J., and Stearns, R.E. (1964) Computational Complexity of Recursive Sequences, IEEE Proc. 5th Annual Symp. on Switching Circuit Theory and Logical Design, pp. 82-90


  • Hartmanis, J., and Stearns, R.E. (1965) On the Computational Complexity of Algorithms, Transactions American Mathematical Society, No. 5, pp. 285-306


  • Hopcroft, J.E., Motwani, R. and Ullman, J.D. (2007) Introduction to Automata Theory, Languages, and Computation, Addison Wesley, Boston/San Francisco/New York


  • van Leeuwen, Jan, (ed.) Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity, The MIT Press/Elsevier, 1990. ISBN 978-0-444-88071-0 (Volume A). QA 76.H279 1990. Huge compendium of information, 1000s of references in the various articles.


  • Mertens, Stephan, , Computing in Science & Engineering, vol. 4, no. 3, May/June 2002, pp 31-47


  • Rabin, Michael O.
    Michael O. Rabin

    Michael Oser Rabin is an Israelis computer scientist and a recipient of the Turing Award....
     (1959) Speed of Computation of Functions and Classification of Recursive Sets, Proc. 3rd Conference of Scientific Societies, Jerusalem, pp. 1-2


  • Rabin, M.O. Degree of Difficulty of Computing a Function and a Partial Ordering of Recursive Sets, Tech. Report 2, Hebrew University, Jerusalem, 1960


  • Rabin, M. O. (1963) Real-time computation. Israel Journal of Math., v. 1, pp. 203-211


  • Trahtenbrot, B.A. (1956) Signalizing Functions and Table Operators, Research Notices of the Pensa Pedagogical Institute, v. 4, pp. 75-87 (in Russian)


  • Trahtenbrot, B.A. Complexity of Algorithms and Computations, NGU, Novosibirsk, 1967 (in Russian)


  • Wilf, Herbert S., , Englewood Cliffs, N.J. : Prentice-Hall, 1986. ISBN 0130219738


External links