np vs p.docx
TRANSCRIPT
-
7/27/2019 np vs p.docx
1/16
P versus NP problem
If the solution to a problem can be quickly verified by a
computer, can the computer also solve that problem quickly?
The P versus NP problem is a majorunsolved problem in computer science. Informally, it asks whether every problem
whose solution can be quickly verified by a computer can also be quickly solved by a computer. It was introduced in 1971
byStephen Cookin his seminal paper "The complexity of theorem proving procedures"[2]and is considered by many to be
the most important open problem in the field.[3]It is one of the sevenMillennium Prize Problemsselected by theClay
Mathematics Instituteto carry a US$1,000,000 prize for the first correct solution.
The informal term quicklyused above means the existence of an algorithm for the task that runs inpolynomial time. The
general class of questions for which some algorithm can provide an answer in polynomial time is called "class P" or just "P".
For some questions, there is no known way to find an answer quickly, but if one is provided with information showing what
the answer is, it may be possible to verify the answer quickly. The class of questions for which an answer can be verifiedin
polynomial time is calledNP.
Consider thesubset sum problem, an example of a problem that is easy to verify, but whose answer may be difficult to
compute. Given a set ofintegers, does some nonemptysubsetof them sum to 0? For instance, does a subset of the set {2,
3, 15, 14, 7, 10} add up to 0? The answer "yes, because {2, 3, 10, 15} adds up to zero" can be quickly verified with
three additions. However, there is no known algorithm to find such a subset in polynomial time (there is one, however,
inexponential time, which consists of 2n-1 tries), and indeed such an algorithm can only exist ifP =NP; hence this problem is
in NP (quickly checkable) but not necessarily in P (quickly solvable).
An answer to the P = NP question would determine whether problems that can be verified in polynomial time, like the subset-
sum problem, can also be solved in polynomial time. If it turned out that PNP, it would mean that there are problems
in NP (such asNP-completeproblems) that are harder to compute than to verify: they could not be solved in polynomial
time, but the answer could be verified in polynomial time.
Aside from being an important problem in computational theory, a proof either way would have profound implications for
mathematics, cryptography, algorithm research,artificial intelligence,game theory, multimedia processing and many other
fields.
Context[edit]
The relation between thecomplexity classesP and NP is studied incomputational complexity theory, the part of thetheory of
computationdealing with the resources required during computation to solve a given problem. The most common resources
are time (how many steps it takes to solve a problem) and space (how much memory it takes to solve a problem).
In such analysis, a model of the computer for which time must be analyzed is required. Typically such models assume that
the computer isdeterministic(given the computer's present state and any inputs, there is only one possible action that the
computer might take) and sequential(it performs actions one after the other).
In this theory, the class P consists of all thosedecision problems(definedbelow) that can be solved on a deterministic
sequential machine in an amount of time that ispolynomialin the size of the input; the classNPconsists of all those decision
problems whose positive solutions can be verified inpolynomial timegiven the right information, or equivalently, whose
http://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_sciencehttp://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_sciencehttp://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_sciencehttp://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-2http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-2http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-2http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-3http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-3http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-3http://en.wikipedia.org/wiki/Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Subsethttp://en.wikipedia.org/wiki/Subsethttp://en.wikipedia.org/wiki/Subsethttp://en.wikipedia.org/wiki/Exponential_timehttp://en.wikipedia.org/wiki/Exponential_timehttp://en.wikipedia.org/wiki/Exponential_timehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/Artificial_intelligencehttp://en.wikipedia.org/wiki/Artificial_intelligencehttp://en.wikipedia.org/wiki/Artificial_intelligencehttp://en.wikipedia.org/wiki/Game_theoryhttp://en.wikipedia.org/wiki/Game_theoryhttp://en.wikipedia.org/wiki/Game_theoryhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=1http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=1http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=1http://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Deterministic_computationhttp://en.wikipedia.org/wiki/Deterministic_computationhttp://en.wikipedia.org/wiki/Deterministic_computationhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#Formal_definitions_for_P_and_NPhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#Formal_definitions_for_P_and_NPhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#Formal_definitions_for_P_and_NPhttp://en.wikipedia.org/wiki/Polynomialhttp://en.wikipedia.org/wiki/Polynomialhttp://en.wikipedia.org/wiki/Polynomialhttp://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/Polynomialhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#Formal_definitions_for_P_and_NPhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Deterministic_computationhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Theory_of_computationhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=1http://en.wikipedia.org/wiki/Game_theoryhttp://en.wikipedia.org/wiki/Artificial_intelligencehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/Exponential_timehttp://en.wikipedia.org/wiki/Subsethttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Clay_Mathematics_Institutehttp://en.wikipedia.org/wiki/Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-3http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-2http://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science -
7/27/2019 np vs p.docx
2/16
solution can be found in polynomial time on anon-deterministicmachine.[4]Clearly, PNP. Arguably the biggest open
question intheoretical computer scienceconcerns the relationship between those two classes:
Is P equal to NP?
In a 2002 poll of 100 researchers, 61 believed the answer to be no, 9 believed the answer is yes, and 22 were unsure; 8
believed the question may beindependentof the currently accepted axioms and therefore is impossible to prove ordisprove.[5]
NP-complete[edit]
Euler diagramforP,NP,NP-complete, and NP-hard set of problems
Main article:NP-complete
To attack the P = NP question the concept ofNP-completeness is very useful. NP-complete problems are a set of problems
to each of which any otherNP-problem can be reduced in polynomial time, and whose solution may still be verified inpolynomial time. That is, anyNP problem can be transformed into any of the NP-complete problems. Informally, an NP-
complete problem is an NP problem that is at least as "tough" as any other problem in NP.
NP-hardproblems are those at least as hard as NP problems, i.e., all NP problems can be reduced (in polynomial time) to
them. NP-hard problems need not be in NP, i.e., they need not have solutions verifiable in polynomial time.
For instance, theboolean satisfiability problemis NP-complete by theCookLevin theorem, so anyinstance ofanyproblem
in NP can be transformed mechanically into an instance of the boolean satisfiability problem in polynomial time. The boolean
satisfiability problem is one of many such NP-complete problems. If any NP-complete problem is in P, then it would follow
that P = NP. Unfortunately, many important problems have been shown to be NP-complete, and not a single fast algorithm
for any of them is known.
Based on the definition alone it is not obvious that NP-complete problems exist. A trivial and contrived NP-complete problem
can be formulated as: given a description of a Turing machine M guaranteed to halt in polynomial time, does there exist a
polynomial-size input that M will accept?[6]It is in NP because (given an input) it is simple to check whether M accepts the
input by simulating M; it is NP-complete because the verifier for any particular instance of a problem in NP can be encoded
as a polynomial-time machine M that takes the solution to be verified as input. Then the question of whether the instance is a
yes or no instance is determined by whether a valid input exists.
The first natural problem proven to be NP-complete was theboolean satisfiability problem. As noted above, this is theCook
Levin theorem; its proof that satisfiability is NP-complete contains technical details about Turing machines as they relate to
the definition ofNP. However, after this problem was proved to be NP-complete,proof by reductionprovided a simpler way
http://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-4http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-4http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-4http://en.wikipedia.org/wiki/Theoretical_computer_sciencehttp://en.wikipedia.org/wiki/Theoretical_computer_sciencehttp://en.wikipedia.org/wiki/Theoretical_computer_sciencehttp://en.wikipedia.org/wiki/Independent_(mathematical_logic)http://en.wikipedia.org/wiki/Independent_(mathematical_logic)http://en.wikipedia.org/wiki/Independent_(mathematical_logic)http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=2http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=2http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=2http://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Scott-6http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Scott-6http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Scott-6http://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Reduction_(complexity)http://en.wikipedia.org/wiki/Reduction_(complexity)http://en.wikipedia.org/wiki/Reduction_(complexity)http://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/Reduction_(complexity)http://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Scott-6http://en.wikipedia.org/wiki/Cook%E2%80%93Levin_theoremhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=2http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/Independent_(mathematical_logic)http://en.wikipedia.org/wiki/Theoretical_computer_sciencehttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-4http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine -
7/27/2019 np vs p.docx
3/16
to show that many other problems are also NP-complete, including thesubset-sum problemdiscussed earlier. Thus, a vast
class of seemingly unrelated problems are all reducible to one another, and are in a sense "the same problem".
Harder problems[edit]
See also:Complexity class
Although it is unknown whetherP = NP, problems outside ofP are known. A number of succinct problems (problems that
operate not on normal input, but on a computational description of the input) are known to beEXPTIME-complete. Because
it can be shown that PEXPTIME, these problems are outside P, and so require more than polynomial time. In fact, by
thetime hierarchy theorem, they cannot be solved in significantly less than exponential time. Examples include finding a
perfect strategy for chess (on an N Nboard)[7]and some other board games.[8]
The problem of deciding the truth of a statement in Presburger arithmeticrequires even more time. Fischer
andRabinproved in 1974 that every algorithm that decides the truth of Presburger statements has a runtime of at
least for some constant c. Here, n is the length of the Presburger statement. Hence, the problem is known to need
more than exponential run time. Even more difficult are theundecidable problems, such as thehalting problem. They cannot
be completely solved by any algorithm, in the sense that for any particular algorithm there is at least one input for which that
algorithm will not produce the right answer; it will either produce the wrong answer, finish without giving a conclusive answer,
or otherwise run forever without producing any answer at all.
Problems in NP not known to be in P or NP-complete[edit]
Main article:NP-intermediate
It was shown by Ladner that ifPNP then there exist problems in NP that are neither in P norNP-complete.[1]Such
problems are called NP-intermediate problems. Thegraph isomorphism problem, thediscrete logarithm problemand
theinteger factorization problemare examples of problems believed to be NP-intermediate. They are some of the very
few NP problems not known to be in P or to be NP-complete.
Thegraph isomorphism problemis the computational problem of determining whether two finitegraphsareisomorphic. An
important unsolved problem in complexity theory is whether the graph isomorphism problem is in P, NP-complete, orNP-
intermediate. The answer is not known, but it is believed that the problem is at least not NP-complete.[9]If graph isomorphism
is NP-complete, thepolynomial time hierarchycollapses to its second level.[10]Since it is widely believed that the polynomial
hierarchy does not collapse to any finite level, it is believed that graph isomorphism is not NP-complete. The best algorithm
for this problem, due toLaszlo BabaiandEugene Lukshas run time 2O(nlog(n)) for graphs with n vertices.
Theinteger factorization problemis the computational problem of determining theprime factorizationof a given integer.
Phrased as a decision problem, it is the problem of deciding whether the input has a factor less than k. No efficient integer
factorization algorithm is known, and this fact forms the basis of several modern cryptographic systems, such as
theRSAalgorithm. The integer factorization problem is in NP and inco-NP(and even in UP and co-UP[11]). If the problem
is NP-complete, the polynomial time hierarchy will collapse to its first level (i.e., NP = co-NP). The best known algorithm for
integer factorization is thegeneral number field sieve, which takes expected time
http://en.wikipedia.org/wiki/Subset-sum_problemhttp://en.wikipedia.org/wiki/Subset-sum_problemhttp://en.wikipedia.org/wiki/Subset-sum_problemhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=3http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=3http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=3http://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/EXPTIME#EXPTIME-completehttp://en.wikipedia.org/wiki/EXPTIME#EXPTIME-completehttp://en.wikipedia.org/wiki/EXPTIME#EXPTIME-completehttp://en.wikipedia.org/wiki/EXPTIME#EXPTIME-completehttp://en.wikipedia.org/wiki/EXPTIMEhttp://en.wikipedia.org/wiki/EXPTIMEhttp://en.wikipedia.org/wiki/EXPTIMEhttp://en.wikipedia.org/wiki/Time_hierarchy_theoremhttp://en.wikipedia.org/wiki/Time_hierarchy_theoremhttp://en.wikipedia.org/wiki/Time_hierarchy_theoremhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Fraenkel1981-7http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Fraenkel1981-7http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Fraenkel1981-7http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-8http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-8http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-8http://en.wikipedia.org/wiki/Presburger_arithmetichttp://en.wikipedia.org/wiki/Presburger_arithmetichttp://en.wikipedia.org/wiki/Presburger_arithmetichttp://en.wikipedia.org/wiki/Michael_O._Rabinhttp://en.wikipedia.org/wiki/Michael_O._Rabinhttp://en.wikipedia.org/wiki/Michael_O._Rabinhttp://en.wikipedia.org/wiki/Undecidable_problemhttp://en.wikipedia.org/wiki/Undecidable_problemhttp://en.wikipedia.org/wiki/Undecidable_problemhttp://en.wikipedia.org/wiki/Halting_problemhttp://en.wikipedia.org/wiki/Halting_problemhttp://en.wikipedia.org/wiki/Halting_problemhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=4http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=4http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=4http://en.wikipedia.org/wiki/NP-intermediatehttp://en.wikipedia.org/wiki/NP-intermediatehttp://en.wikipedia.org/wiki/NP-intermediatehttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Ladner75-1http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Ladner75-1http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Ladner75-1http://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Discrete_logarithm_problemhttp://en.wikipedia.org/wiki/Discrete_logarithm_problemhttp://en.wikipedia.org/wiki/Discrete_logarithm_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Graph_(mathematics)http://en.wikipedia.org/wiki/Graph_(mathematics)http://en.wikipedia.org/wiki/Graph_(mathematics)http://en.wikipedia.org/wiki/Graph_isomorphismhttp://en.wikipedia.org/wiki/Graph_isomorphismhttp://en.wikipedia.org/wiki/Graph_isomorphismhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-AK06-9http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-AK06-9http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-AK06-9http://en.wikipedia.org/wiki/Polynomial_time_hierarchyhttp://en.wikipedia.org/wiki/Polynomial_time_hierarchyhttp://en.wikipedia.org/wiki/Polynomial_time_hierarchyhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-10http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-10http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-10http://en.wikipedia.org/wiki/Laszlo_Babaihttp://en.wikipedia.org/wiki/Laszlo_Babaihttp://en.wikipedia.org/wiki/Laszlo_Babaihttp://en.wikipedia.org/wiki/Eugene_Lukshttp://en.wikipedia.org/wiki/Eugene_Lukshttp://en.wikipedia.org/wiki/Eugene_Lukshttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Prime_factorizationhttp://en.wikipedia.org/wiki/Prime_factorizationhttp://en.wikipedia.org/wiki/Prime_factorizationhttp://en.wikipedia.org/wiki/RSA_(algorithm)http://en.wikipedia.org/wiki/RSA_(algorithm)http://en.wikipedia.org/wiki/RSA_(algorithm)http://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-11http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-11http://en.wikipedia.org/wiki/General_number_field_sievehttp://en.wikipedia.org/wiki/General_number_field_sievehttp://en.wikipedia.org/wiki/General_number_field_sievehttp://en.wikipedia.org/wiki/General_number_field_sievehttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-11http://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/RSA_(algorithm)http://en.wikipedia.org/wiki/Prime_factorizationhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Eugene_Lukshttp://en.wikipedia.org/wiki/Laszlo_Babaihttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-10http://en.wikipedia.org/wiki/Polynomial_time_hierarchyhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-AK06-9http://en.wikipedia.org/wiki/Graph_isomorphismhttp://en.wikipedia.org/wiki/Graph_(mathematics)http://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/Integer_factorization_problemhttp://en.wikipedia.org/wiki/Discrete_logarithm_problemhttp://en.wikipedia.org/wiki/Graph_isomorphism_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Ladner75-1http://en.wikipedia.org/wiki/NP-intermediatehttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=4http://en.wikipedia.org/wiki/Halting_problemhttp://en.wikipedia.org/wiki/Undecidable_problemhttp://en.wikipedia.org/wiki/Michael_O._Rabinhttp://en.wikipedia.org/wiki/Presburger_arithmetichttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-8http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Fraenkel1981-7http://en.wikipedia.org/wiki/Time_hierarchy_theoremhttp://en.wikipedia.org/wiki/EXPTIMEhttp://en.wikipedia.org/wiki/EXPTIME#EXPTIME-completehttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=3http://en.wikipedia.org/wiki/Subset-sum_problem -
7/27/2019 np vs p.docx
4/16
to factor an n-bit integer. However, the best knownquantum algorithmfor this problem,Shor's algorithm, does run in
polynomial time. Unfortunately, this fact doesn't say much about where the problem lies with respect to non-quantum
complexity classes.
Does P mean "easy"?[edit]
The graph shows time (average of 100 instances in ms using a 933 MHz Pentium III) vs.problem size for knapsack problems for a state-of-
the-art specialized algorithm. Quadratic fit suggests that empirical algorithmic complexity for instances with 5010,000 variables is
O((log(n))2).[12]
All of the above discussion has assumed that P means "easy" and "not in P" means "hard", an assumption known
asCobham's thesis. It is a common and reasonably accurate assumption in complexity theory; however, it has some
caveats.
First, it is not always true in practice. A theoretical polynomial algorithm may have extremely large constant factors or
exponents thus rendering it impractical. On the other hand, even if a problem is shown to be NP-complete, and evenifPNP, there may still be effective approaches to tackling the problem in practice. There are algorithms for many NP-
complete problems, such as theknapsack problem, thetraveling salesman problemand theboolean satisfiability problem,
that can solve to optimality many real-world instances in reasonable time. The empiricalaverage-case complexity(time vs.
problem size) of such algorithms can be surprisingly low. A famous example is the simplex algorithminlinear programming,
which works surprisingly well in practice; despite having exponential worst-casetime complexityit runs on par with the best
known polynomial-time algorithms.[13]
Second, there are types of computations which do not conform to the Turing machine model on which P and NP are defined,
such asquantum computationandrandomized algorithms.
Reasons to believe P NP[edit]
According to polls,[5][14]many computer scientists believe that PNP. A key reason for this belief is that after decades of
studying these problems no one has been able to find a polynomial-time algorithm for any of more than 3000 important
known NP-complete problems (seeList ofNP-complete problems). These algorithms were sought long before the concept
ofNP-completeness was even defined (Karp's 21 NP-complete problems, among the first found, were all well-known existing
problems at the time they were shown to be NP-complete). Furthermore, the result P = NP would imply many other startling
results that are currently believed to be false, such as NP =co-NPand P =PH.
It is also intuitively argued that the existence of problems that are hard to solve but for which the solutions are easy to verify
matches real-world experience.[15]
http://en.wikipedia.org/wiki/Quantum_algorithmhttp://en.wikipedia.org/wiki/Quantum_algorithmhttp://en.wikipedia.org/wiki/Quantum_algorithmhttp://en.wikipedia.org/wiki/Shor%27s_algorithmhttp://en.wikipedia.org/wiki/Shor%27s_algorithmhttp://en.wikipedia.org/wiki/Shor%27s_algorithmhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Pisinger2003-12http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Pisinger2003-12http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Pisinger2003-12http://en.wikipedia.org/wiki/Cobham%27s_thesishttp://en.wikipedia.org/wiki/Cobham%27s_thesishttp://en.wikipedia.org/wiki/Cobham%27s_thesishttp://en.wikipedia.org/wiki/Knapsack_problemhttp://en.wikipedia.org/wiki/Knapsack_problemhttp://en.wikipedia.org/wiki/Knapsack_problemhttp://en.wikipedia.org/wiki/Traveling_salesman_problemhttp://en.wikipedia.org/wiki/Traveling_salesman_problemhttp://en.wikipedia.org/wiki/Traveling_salesman_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Simplex_algorithmhttp://en.wikipedia.org/wiki/Simplex_algorithmhttp://en.wikipedia.org/wiki/Simplex_algorithmhttp://en.wikipedia.org/wiki/Linear_programminghttp://en.wikipedia.org/wiki/Linear_programminghttp://en.wikipedia.org/wiki/Linear_programminghttp://en.wikipedia.org/wiki/Time_complexityhttp://en.wikipedia.org/wiki/Time_complexityhttp://en.wikipedia.org/wiki/Time_complexityhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-13http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-13http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-13http://en.wikipedia.org/wiki/Quantum_computationhttp://en.wikipedia.org/wiki/Quantum_computationhttp://en.wikipedia.org/wiki/Quantum_computationhttp://en.wikipedia.org/wiki/Randomized_algorithmhttp://en.wikipedia.org/wiki/Randomized_algorithmhttp://en.wikipedia.org/wiki/Randomized_algorithmhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=6http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=6http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=6http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemshttp://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemshttp://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemshttp://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemshttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-15http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-15http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-15http://en.wikipedia.org/wiki/File:KnapsackEmpComplexity.GIFhttp://en.wikipedia.org/wiki/File:KnapsackEmpComplexity.GIFhttp://en.wikipedia.org/wiki/File:KnapsackEmpComplexity.GIFhttp://en.wikipedia.org/wiki/File:KnapsackEmpComplexity.GIFhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-15http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemshttp://en.wikipedia.org/wiki/List_of_NP-complete_problemshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=6http://en.wikipedia.org/wiki/Randomized_algorithmhttp://en.wikipedia.org/wiki/Quantum_computationhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-13http://en.wikipedia.org/wiki/Time_complexityhttp://en.wikipedia.org/wiki/Linear_programminghttp://en.wikipedia.org/wiki/Simplex_algorithmhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problemhttp://en.wikipedia.org/wiki/Traveling_salesman_problemhttp://en.wikipedia.org/wiki/Knapsack_problemhttp://en.wikipedia.org/wiki/Cobham%27s_thesishttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Pisinger2003-12http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=5http://en.wikipedia.org/wiki/Shor%27s_algorithmhttp://en.wikipedia.org/wiki/Quantum_algorithm -
7/27/2019 np vs p.docx
5/16
IfP = NP, then the world would be a profoundly different place than we usually assume it to be. There would be no special
value in "creative leaps," no fundamental gap between solving a problem and recognizing the solution once it's found.
Everyone who could appreciate a symphony would be Mozart; everyone who could follow a step-by-step argument would be
Gauss...
Scott Aaronson,MIT
On the other hand, some researchers believe that there is overconfidence in believing PNP and that researchers should
explore proofs ofP = NP as well. For example, in 2002 these statements were made:[5]
The main argument in favor ofPNP is the total lack of fundamental progress in the area of exhaustive search. This is, in
my opinion, a very weak argument. The space of algorithms is very large and we are only at the beginning of its exploration.
[...] The resolution ofFermat's Last Theoremalso shows that very simple questions may be settled only by very deep
theories.
Moshe Y. Vardi,Rice University
Being attached to a speculation is not a good guide to research planning. One should always try both directions of everyproblem. Prejudice has caused famous mathematicians to fail to solve famous problems whose solution was opposite to
their expectations, even though they had developed all the methods required.
Anil Nerode,Cornell University
Consequences of the resolution of the problem[edit]
One of the reasons the problem attracts so much attention is the consequences of the answer. Either direction of resolution
would advance theory enormously, and perhaps have huge practical consequences as well.
P = NP[edit]A proof that P = NP could have stunning practical consequences, if the proof leads to efficient methods for solving some of
the important problems in NP. It is also possible that a proof would not lead directly to efficient methods, perhaps if the proof
isnon-constructive, or the size of the bounding polynomial is too big to be efficient in practice. The consequences, both
positive and negative, arise since various NP-complete problems are fundamental in many fields.
Cryptography, for example, relies on certain problems being difficult. A constructive and efficient solution to an NP-complete
problem such as3-SATwould break most existing cryptosystems including:
public-key cryptography,[16]
a foundation for many modern security applications such as secure economictransactions over the Internet; and
symmetric cipherssuch asAESor3DES,[17]used for the encryption of communications data.
These would need to be modified or replaced byinformation-theoretically securesolutions.
On the other hand, there are enormous positive consequences that would follow from rendering tractable many currently
mathematically intractable problems. For instance, many problems inoperations researchare NP-complete, such as some
types ofinteger programming, and thetravelling salesman problem, to name two of the most famous examples. Efficient
solutions to these problems would have enormous implications for logistics. Many other important problems, such as some
problems inprotein structure prediction, are also NP-complete;[18]if these problems were efficiently solvable it could spur
considerable advances in biology.
http://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/MIThttp://en.wikipedia.org/wiki/MIThttp://en.wikipedia.org/wiki/MIThttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Moshe_Y._Vardihttp://en.wikipedia.org/wiki/Moshe_Y._Vardihttp://en.wikipedia.org/wiki/Rice_Universityhttp://en.wikipedia.org/wiki/Rice_Universityhttp://en.wikipedia.org/wiki/Rice_Universityhttp://en.wikipedia.org/wiki/Anil_Nerodehttp://en.wikipedia.org/wiki/Anil_Nerodehttp://en.wikipedia.org/wiki/Cornell_Universityhttp://en.wikipedia.org/wiki/Cornell_Universityhttp://en.wikipedia.org/wiki/Cornell_Universityhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=8http://en.wikipedia.org/wiki/Non-constructive_proofhttp://en.wikipedia.org/wiki/Non-constructive_proofhttp://en.wikipedia.org/wiki/Non-constructive_proofhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiabilityhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiabilityhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiabilityhttp://en.wikipedia.org/wiki/Public-key_cryptographyhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-16http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-16http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-16http://en.wikipedia.org/wiki/Symmetric_cipherhttp://en.wikipedia.org/wiki/Symmetric_cipherhttp://en.wikipedia.org/wiki/Advanced_Encryption_Standardhttp://en.wikipedia.org/wiki/Advanced_Encryption_Standardhttp://en.wikipedia.org/wiki/Advanced_Encryption_Standardhttp://en.wikipedia.org/wiki/Triple_DEShttp://en.wikipedia.org/wiki/Triple_DEShttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-17http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-17http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-17http://en.wikipedia.org/wiki/Information-theoretic_securityhttp://en.wikipedia.org/wiki/Information-theoretic_securityhttp://en.wikipedia.org/wiki/Information-theoretic_securityhttp://en.wikipedia.org/wiki/Operations_researchhttp://en.wikipedia.org/wiki/Operations_researchhttp://en.wikipedia.org/wiki/Integer_programminghttp://en.wikipedia.org/wiki/Integer_programminghttp://en.wikipedia.org/wiki/Integer_programminghttp://en.wikipedia.org/wiki/Travelling_salesman_problemhttp://en.wikipedia.org/wiki/Travelling_salesman_problemhttp://en.wikipedia.org/wiki/Travelling_salesman_problemhttp://en.wikipedia.org/wiki/Protein_structure_predictionhttp://en.wikipedia.org/wiki/Protein_structure_predictionhttp://en.wikipedia.org/wiki/Protein_structure_predictionhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Berger-18http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Berger-18http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Berger-18http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Berger-18http://en.wikipedia.org/wiki/Protein_structure_predictionhttp://en.wikipedia.org/wiki/Travelling_salesman_problemhttp://en.wikipedia.org/wiki/Integer_programminghttp://en.wikipedia.org/wiki/Operations_researchhttp://en.wikipedia.org/wiki/Information-theoretic_securityhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-17http://en.wikipedia.org/wiki/Triple_DEShttp://en.wikipedia.org/wiki/Advanced_Encryption_Standardhttp://en.wikipedia.org/wiki/Symmetric_cipherhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-16http://en.wikipedia.org/wiki/Public-key_cryptographyhttp://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiabilityhttp://en.wikipedia.org/wiki/Non-constructive_proofhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=7http://en.wikipedia.org/wiki/Cornell_Universityhttp://en.wikipedia.org/wiki/Anil_Nerodehttp://en.wikipedia.org/wiki/Rice_Universityhttp://en.wikipedia.org/wiki/Moshe_Y._Vardihttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-poll-5http://en.wikipedia.org/wiki/MIThttp://en.wikipedia.org/wiki/Scott_Aaronson -
7/27/2019 np vs p.docx
6/16
But such changes may pale in significance compared to the revolution an efficient method for solving NP-complete problems
would cause in mathematics itself. According toStephen Cook,[19]
...it would transform mathematics by allowing a computer to find a formal proof of any theorem which has a proof of a
reasonable length, since formal proofs can easily be recognized in polynomial time. Example problems may well include all
of theCMI prize problems.
Research mathematicians spend their careers trying to prove theorems, and some proofs have taken decades or even
centuries to find after problems have been statedfor instance,Fermat's Last Theoremtook over three centuries to prove. A
method that is guaranteed to find proofs to theorems, should one exist of a "reasonable" size, would essentially end this
struggle.
P NP[edit]
A proof that showed that PNP would lack the practical computational benefits of a proof that P = NP, but would
nevertheless represent a very significant advance in computational complexity theory and provide guidance for future
research. It would allow one to show in a formal way that many common problems cannot be solved efficiently, so that the
attention of researchers can be focused on partial solutions or solutions to other problems. Due to widespread belief
in PNP, much of this focusing of research has already taken place .[20]
Also PNP still leaves open theaverage-case complexityof hard problems in NP. For example, it is possible that SAT
requires exponential time in the worst case, but that almost all randomly selected instances of it are efficiently
solvable.Russell Impagliazzohas described five hypothetical "worlds" that could result from different possible resolutions to
the average-case complexity question.[21]These range from "Algorithmica", where P = NP and problems like SAT can be
solved efficiently in all instances, to "Cryptomania", where PNP and generating hard instances of problems outside P is
easy, with three intermediate possibilities reflecting different possible distributions of difficulty over instances of NP-
hard problems. The "world" where PNP but all problems in NP are tractable in the average case is called "Heuristica" in
the paper. APrinceton Universityworkshop in 2009 studied the status of the five worlds.[22]
Results about difficulty of proof[edit]
Although the P = NP? problem itself remains open despite a million-dollar prize and a huge amount of dedicated research,
efforts to solve the problem have led to several new techniques. In particular, some of the most fruitful research related to
the P = NP problem has been in showing that existing proof techniques are not powerful enough to answer the question,
thus suggesting that novel technical approaches are required.
As additional evidence for the difficulty of the problem, essentially all known proof techniques incomputational
complexitytheory fall into one of the following classifications, each of which is known to be insufficient to prove that PNP:
Classification Definition
Relativizingproofs
Imagine a world where every algorithm is allowed to make queries to some fixed subroutine called
anoracle, and the running time of the oracle is not counted against the running time of the algorithm.
Most proofs (especially classical ones) apply uniformly in a world with oracles regardless of what the
oracle does. These proofs are called relativizing. In 1975, Baker, Gill, andSolovayshowedthat P = NP with respect to some oracles, while PNP for other oracles.
[23]Since relativizing proofs
can only prove statements that are uniformly true with respect to all possible oracles, this showed that
relativizing techniques cannot resolve P = NP.
http://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/Stephen_Cookhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Official_Problem_Description-19http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Official_Problem_Description-19http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Official_Problem_Description-19http://en.wikipedia.org/wiki/Clay_Math_Institute#Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Clay_Math_Institute#Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Clay_Math_Institute#Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=9http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=9http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=9http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-20http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-20http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-20http://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/Russell_Impagliazzohttp://en.wikipedia.org/wiki/Russell_Impagliazzohttp://en.wikipedia.org/wiki/Russell_Impagliazzohttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-21http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-21http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-21http://en.wikipedia.org/wiki/Princeton_Universityhttp://en.wikipedia.org/wiki/Princeton_Universityhttp://en.wikipedia.org/wiki/Princeton_Universityhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-22http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-22http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-22http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=10http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=10http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=10http://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/w/index.php?title=Relativizing_proof&action=edit&redlink=1http://en.wikipedia.org/w/index.php?title=Relativizing_proof&action=edit&redlink=1http://en.wikipedia.org/w/index.php?title=Relativizing_proof&action=edit&redlink=1http://en.wikipedia.org/wiki/Oracle_machinehttp://en.wikipedia.org/wiki/Oracle_machinehttp://en.wikipedia.org/wiki/Oracle_machinehttp://en.wikipedia.org/wiki/Robert_M._Solovayhttp://en.wikipedia.org/wiki/Robert_M._Solovayhttp://en.wikipedia.org/wiki/Robert_M._Solovayhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-23http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-23http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-23http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-23http://en.wikipedia.org/wiki/Robert_M._Solovayhttp://en.wikipedia.org/wiki/Oracle_machinehttp://en.wikipedia.org/w/index.php?title=Relativizing_proof&action=edit&redlink=1http://en.wikipedia.org/w/index.php?title=Relativizing_proof&action=edit&redlink=1http://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/wiki/Computational_complexityhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=10http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-22http://en.wikipedia.org/wiki/Princeton_Universityhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-21http://en.wikipedia.org/wiki/Russell_Impagliazzohttp://en.wikipedia.org/wiki/Average-case_complexityhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-20http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=9http://en.wikipedia.org/wiki/Fermat%27s_Last_Theoremhttp://en.wikipedia.org/wiki/Clay_Math_Institute#Millennium_Prize_Problemshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Official_Problem_Description-19http://en.wikipedia.org/wiki/Stephen_Cook -
7/27/2019 np vs p.docx
7/16
Natural proofs
In 1993,Alexander RazborovandSteven Rudichdefined a general class of proof techniques for circuit
complexity lower bounds, callednatural proofs. At the time all previously known circuit lower bounds
were natural, and circuit complexity was considered a very promising approach for resolving P = NP.However, Razborov and Rudich showed that, ifone-way functionsexist, then no natural proof method
can distinguish between P and NP. Although one-way functions have never been formally proven to
exist, most mathematicians believe that they do, and a proof or disproof of their existence would be a
much stronger statement than the quantification ofP relative to NP. Thus it is unlikely that natural
proofs alone can resolve P = NP.
Algebrizingproofs
After the Baker-Gill-Solovay result, new non-relativizing proof techniques were successfully used to
prove thatIP=PSPACE. However, in 2008,Scott AaronsonandAvi Wigdersonshowed that the maintechnical tool used in the IP = PSPACE proof, known as arithmetization, was also insufficient to
resolve P = NP.[24]
These barriers are another reason why NP-complete problems are useful: if a polynomial-time algorithm can be
demonstrated for an NP-complete problem, this would solve the P = NP problem in a way not excluded by the above results.
These barriers have also led some computer scientists to suggest that the P versus NP problem may beindependentof
standard axiom systems likeZFC(cannot be proved or disproved within them). The interpretation of an independence result
could be that either no polynomial-time algorithm exists for any NP-complete problem, and such a proof cannot be
constructed in (e.g.) ZFC, or that polynomial-time algorithms forNP-complete problems may exist, but it's impossible to
prove in ZFC that such algorithms are correct.[25]However, if it can be shown, using techniques of the sort that are currently
known to be applicable, that the problem cannot be decided even with much weaker assumptions extending the Peano
axioms(PA) for integer arithmetic, then there would necessarily exist nearly-polynomial-time algorithms for every problem
in NP.[26]Therefore, if one believes (as most complexity theorists do) that not all problems in NP have efficient algorithms, it
would follow that proofs of independence using those techniques cannot be possible. Additionally, this result implies that
proving independence from PA or ZFC using currently known techniques is no easier than proving the existence of efficient
algorithms for all problems in NP.
Claimed solutions [edit]
While the P versus NP problem is generally considered unsolved,[27]many amateur and some professional researchers have
claimed solutions. Woeginger (2010) has a comprehensive list.[28]An August 2010 claim of proof that PNP, by Vinay
Deolalikar, researcher atHP Labs,Palo Alto, received heavy Internet and press attention after being initially described as
"seem[ing] to be a relatively serious attempt" by two leading specialists .[29]
The proof has been reviewed publicly by
academics,[30][31]andNeil Immerman, an expert in the field, had pointed out two possibly fatal errors in the proof.[32]As of 15
September 2010, Deolalikar was reported to be working on a detailed expansion of his attempted proof.[33]However,
opinions expressed by several notable theoretical computer scientists indicate that the attempted proof is neither correct nor
a significant advancement in the understanding of the problem.[34]
Logical characterizations[edit]
The P = NP problem can be restated in terms of expressible certain classes of logical statements, as a result of work
indescriptive complexity.
Consider all language of finite structures with a fixedsignatureincluding alinear orderrelation. Then, all such languages
in P can be expressed infirst-order logicwith the addition of a suitable leastfixed-point combinator. Effectively, this, in
http://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/Alexander_Razborovhttp://en.wikipedia.org/wiki/Alexander_Razborovhttp://en.wikipedia.org/wiki/Alexander_Razborovhttp://en.wikipedia.org/wiki/Steven_Rudichhttp://en.wikipedia.org/wiki/Steven_Rudichhttp://en.wikipedia.org/wiki/Steven_Rudichhttp://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/One-way_functionshttp://en.wikipedia.org/wiki/One-way_functionshttp://en.wikipedia.org/wiki/One-way_functionshttp://en.wikipedia.org/wiki/IP_(complexity)http://en.wikipedia.org/wiki/IP_(complexity)http://en.wikipedia.org/wiki/IP_(complexity)http://en.wikipedia.org/wiki/PSPACEhttp://en.wikipedia.org/wiki/PSPACEhttp://en.wikipedia.org/wiki/PSPACEhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/Avi_Wigdersonhttp://en.wikipedia.org/wiki/Avi_Wigdersonhttp://en.wikipedia.org/wiki/Avi_Wigdersonhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-24http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-24http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-24http://en.wikipedia.org/wiki/Independence_(mathematical_logic)http://en.wikipedia.org/wiki/Independence_(mathematical_logic)http://en.wikipedia.org/wiki/Independence_(mathematical_logic)http://en.wikipedia.org/wiki/ZFChttp://en.wikipedia.org/wiki/ZFChttp://en.wikipedia.org/wiki/ZFChttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-25http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-25http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-25http://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-26http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-26http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-26http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=11http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=11http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=11http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-27http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-27http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-27http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-28http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-28http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-28http://en.wikipedia.org/wiki/HP_Labshttp://en.wikipedia.org/wiki/HP_Labshttp://en.wikipedia.org/wiki/HP_Labshttp://en.wikipedia.org/wiki/Palo_Altohttp://en.wikipedia.org/wiki/Palo_Altohttp://en.wikipedia.org/wiki/Palo_Altohttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-NYT2010-29http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-NYT2010-29http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-NYT2010-29http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-30http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-30http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-30http://en.wikipedia.org/wiki/Neil_Immermanhttp://en.wikipedia.org/wiki/Neil_Immermanhttp://en.wikipedia.org/wiki/Neil_Immermanhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-32http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-32http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-32http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-33http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-33http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-33http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-34http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-34http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-34http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=12http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=12http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=12http://en.wikipedia.org/wiki/Descriptive_complexityhttp://en.wikipedia.org/wiki/Descriptive_complexityhttp://en.wikipedia.org/wiki/Descriptive_complexityhttp://en.wikipedia.org/wiki/Signature_(logic)http://en.wikipedia.org/wiki/Signature_(logic)http://en.wikipedia.org/wiki/Signature_(logic)http://en.wikipedia.org/wiki/Linear_orderhttp://en.wikipedia.org/wiki/Linear_orderhttp://en.wikipedia.org/wiki/Linear_orderhttp://en.wikipedia.org/wiki/First-order_logichttp://en.wikipedia.org/wiki/First-order_logichttp://en.wikipedia.org/wiki/First-order_logichttp://en.wikipedia.org/wiki/Fixed-point_combinatorhttp://en.wikipedia.org/wiki/Fixed-point_combinatorhttp://en.wikipedia.org/wiki/Fixed-point_combinatorhttp://en.wikipedia.org/wiki/Fixed-point_combinatorhttp://en.wikipedia.org/wiki/First-order_logichttp://en.wikipedia.org/wiki/Linear_orderhttp://en.wikipedia.org/wiki/Signature_(logic)http://en.wikipedia.org/wiki/Descriptive_complexityhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=12http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-34http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-33http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-32http://en.wikipedia.org/wiki/Neil_Immermanhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-30http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-30http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-NYT2010-29http://en.wikipedia.org/wiki/Palo_Altohttp://en.wikipedia.org/wiki/HP_Labshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-28http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-27http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=11http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-26http://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/Peano_axiomshttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-25http://en.wikipedia.org/wiki/ZFChttp://en.wikipedia.org/wiki/Independence_(mathematical_logic)http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-24http://en.wikipedia.org/wiki/Avi_Wigdersonhttp://en.wikipedia.org/wiki/Scott_Aaronsonhttp://en.wikipedia.org/wiki/PSPACEhttp://en.wikipedia.org/wiki/IP_(complexity)http://en.wikipedia.org/wiki/One-way_functionshttp://en.wikipedia.org/wiki/Natural_proofhttp://en.wikipedia.org/wiki/Steven_Rudichhttp://en.wikipedia.org/wiki/Alexander_Razborovhttp://en.wikipedia.org/wiki/Natural_proof -
7/27/2019 np vs p.docx
8/16
combination with the order, allows the definition of recursive functions. As long as the signature contains at least one
predicate or function in addition to the distinguished order relation, so that the amount of space taken to store such finite
structures is actually polynomial in the number of elements in the structure, this precisely characterizes P.
Similarly, NP is the set of languages expressible in existentialsecond-order logicthat is, second-order logic restricted to
excludeuniversal quantificationover relations, functions, and subsets. The languages in the polynomial hierarchy,PH,
correspond to all of second-order logic. Thus, the question "is P a proper subset ofNP" can be reformulated as "is existential
second-order logic able to describe languages (of finite linearly ordered structures with nontrivial signature) that first-order
logic with least fixed point cannot?".[35]The word "existential" can even be dropped from the previous characterization,
since P = NP if and only ifP = PH (as the former would establish that NP = co-NP, which in turn implies that NP = PH).
Polynomial-time algorithms[edit]
No algorithm for any NP-complete problem is known to run in polynomial time. However, there are algorithms forNP-
complete problems with the property that ifP = NP, then the algorithm runs in polynomial time (although with enormous
constants, making the algorithm impractical). The following algorithm, due to Levin(without any citation), is such an example
below. It correctly accepts the NP-complete languageSUBSET-SUM. It runs in polynomial time if and only ifP = NP:
// Algorithm that accepts the NP-complete language SUBSET-SUM.
//
// this is a polynomial-time algorithm if and only if P = NP.
//
// "Polynomial-time" means it returns "yes" in polynomial time when
// the answer should be "yes", and runs forever when it is "no".
//
// Input: S = a finite set of integers
// Output: "yes" if any subset of S adds up to 0.
// Runs forever with no output otherwise.
// Note: "Program number P" is the program obtained by
// writing the integer P in binary, then
// considering that string of bits to be a
// program. Every possible program can be
// generated this way, though most do nothing
// because of syntax errors.
FOR N = 1...
FOR P = 1...N
Run program number P for N steps with input S
IF the program outputs a list of distinct integers
AND the integers are all in S
AND the integers sum to 0
THEN
OUTPUT "yes" and HALT
If, and only if, P = NP, then this is a polynomial-time algorithm accepting an NP-complete language. "Accepting" means it
gives "yes" answers in polynomial time, but is allowed to run forever when the answer is "no" (also known as a semi-
algorithm).
http://en.wikipedia.org/wiki/Second-order_logichttp://en.wikipedia.org/wiki/Second-order_logichttp://en.wikipedia.org/wiki/Universal_quantificationhttp://en.wikipedia.org/wiki/Universal_quantificationhttp://en.wikipedia.org/wiki/Universal_quantificationhttp://en.wikipedia.org/wiki/Polynomial_hierarchyhttp://en.wikipedia.org/wiki/Polynomial_hierarchyhttp://en.wikipedia.org/wiki/Polynomial_hierarchyhttp://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-35http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-35http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-35http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=13http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=13http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=13http://en.wikipedia.org/wiki/Leonid_Levinhttp://en.wikipedia.org/wiki/Leonid_Levinhttp://en.wikipedia.org/wiki/Leonid_Levinhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Leonid_Levinhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=13http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-35http://en.wikipedia.org/wiki/PH_(complexity)http://en.wikipedia.org/wiki/Polynomial_hierarchyhttp://en.wikipedia.org/wiki/Universal_quantificationhttp://en.wikipedia.org/wiki/Second-order_logic -
7/27/2019 np vs p.docx
9/16
This algorithm is enormously impractical, even ifP = NP. If the shortest program that can solve SUBSET-SUM in polynomial
time is b bits long, the above algorithm will try at least 2b1 other programs first.
Formal definitions for P and NP[edit]
Conceptually a decision problem is a problem that takes as input somestringwover an alphabet , and outputs "yes" or
"no". If there is analgorithm(say aTuring machine, or acomputer programwith unbounded memory) that can produce the
correct answer for any input string of length n in at most cnk
steps, where kand care constants independent of the input
string, then we say that the problem can be solved in polynomial time and we place it in the class P. Formally, P is defined
as the set of all languages that can be decided by a deterministic polynomial-time Turing machine. That is,
where
and a deterministic polynomial-time Turing machine is a deterministic Turing machine Mthat satisfies the following two
conditions:
1. Mhalts on all input wand
2. there exists such that , where O refers to thebig O notationand
NP can be defined similarly using nondeterministic Turing machines (the traditional way). However, a modern approach to
define NP is to use the concept ofcertificateand verifier. Formally, NP is defined as the set of languages over a finite
alphabet that have a verifier that runs in polynomial time, where the notion of "verifier" is defined as follows.
Let L be a language over a finite alphabet, .
LNP if, and only if, there exists a binary relation and a positive integerksuch that the following two
conditions are satisfied:
1. For all , such that (x, y) Rand ; and
2. the language over is decidable by a Turing machine in
polynomial time.
A Turing machine that decides LR is called a verifierforL and a ysuch that (x, y) Ris called a certificate of
membership ofxin L.
In general, a verifier does not have to be polynomial-time. However, forL to be in NP, there must be a verifier that runs in
polynomial time.
Example[edit]
Let
http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=14http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=14http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=14http://en.wikipedia.org/wiki/String_(computer_science)http://en.wikipedia.org/wiki/String_(computer_science)http://en.wikipedia.org/wiki/String_(computer_science)http://en.wikipedia.org/wiki/Algorithmhttp://en.wikipedia.org/wiki/Algorithmhttp://en.wikipedia.org/wiki/Algorithmhttp://en.wikipedia.org/wiki/Turing_machinehttp://en.wikipedia.org/wiki/Turing_machinehttp://en.wikipedia.org/wiki/Turing_machinehttp://en.wikipedia.org/wiki/Computer_programminghttp://en.wikipedia.org/wiki/Computer_programminghttp://en.wikipedia.org/wiki/Computer_programminghttp://en.wikipedia.org/wiki/Big_O_notation#Formal_definitionhttp://en.wikipedia.org/wiki/Big_O_notation#Formal_definitionhttp://en.wikipedia.org/wiki/Big_O_notation#Formal_definitionhttp://en.wikipedia.org/wiki/Certificate_(complexity)http://en.wikipedia.org/wiki/Certificate_(complexity)http://en.wikipedia.org/wiki/Certificate_(complexity)http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=15http://en.wikipedia.org/wiki/Certificate_(complexity)http://en.wikipedia.org/wiki/Big_O_notation#Formal_definitionhttp://en.wikipedia.org/wiki/Computer_programminghttp://en.wikipedia.org/wiki/Turing_machinehttp://en.wikipedia.org/wiki/Algorithmhttp://en.wikipedia.org/wiki/String_(computer_science)http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=14 -
7/27/2019 np vs p.docx
10/16
Clearly, the question of whether a givenxis acompositeis equivalent to the question of whetherxis a member of
COMPOSITE. It can be shown that COMPOSITE NP by verifying that it satisfies the above definition (if we identify natural
numbers with their binary representations).
COMPOSITE also happens to be in P.[36][37]
Formal definition for NP-completeness[edit]There are many equivalent ways of describing NP-completeness.
Let L be a language over a finite alphabet .
L is NP-complete if, and only if, the following two conditions are satisfied:
1. LNP; and
2. any L in NP is polynomial-time-reducible to L (written as ), where if, and only if, the
following two conditions are satisfied:1. There exists f: * * such that for all win * we have: ; and
2. there exists a polynomial-time Turing machine that halts with f(w) on its tape on any input w.
NP (complexity)Is P= NP ?
Euler diagramforP, NP,NP-complete, andNP-hardset of problems. The existence of problems within NP but outside both P and NP-
complete, under the P!=NP assumption, wasestablished by Ladner.[1]
Incomputational complexity theory,NP is one of the most fundamentalcomplexity classes. The abbreviation NP refers to
"nondeterministicpolynomial time."
Intuitively, NP is the set of alldecision problemsfor which the instances where the answer is "yes" have efficiently verifiable
proofs of the fact that the answer is indeed "yes". More precisely, these proofs have to be verifiable inpolynomial timeby
adeterministic Turing machine. In an equivalent formal definition, NP is the set ofdecision problemswhere the "yes"-
instances can be accepted inpolynomial timeby anon-deterministic Turing machine. The equivalence of the two definitions
follows from the fact that an algorithm on such a non-deterministic machine consists of two phases, the first of which consists
http://en.wikipedia.org/wiki/Composite_numberhttp://en.wikipedia.org/wiki/Composite_numberhttp://en.wikipedia.org/wiki/Composite_numberhttp://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Agrawal-36http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Agrawal-36http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Agrawal-36http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=16http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=16http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=16http://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/Ladner%27s_theoremhttp://en.wikipedia.org/wiki/Ladner%27s_theoremhttp://en.wikipedia.org/wiki/NP_(complexity)#cite_note-1http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-1http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-1http://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Nondeterministic_algorithmhttp://en.wikipedia.org/wiki/Nondeterministic_algorithmhttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/File:P_np_np-complete_np-hard.svghttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Nondeterministic_algorithmhttp://en.wikipedia.org/wiki/Complexity_classhttp://en.wikipedia.org/wiki/Computational_complexity_theoryhttp://en.wikipedia.org/wiki/NP_(complexity)#cite_note-1http://en.wikipedia.org/wiki/Ladner%27s_theoremhttp://en.wikipedia.org/wiki/NP-hardhttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/Euler_diagramhttp://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit§ion=16http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Agrawal-36http://en.wikipedia.org/wiki/P_%3D_NP_problem#cite_note-Agrawal-36http://en.wikipedia.org/wiki/Composite_number -
7/27/2019 np vs p.docx
11/16
of a guess about the solution, which is generated in a non-deterministic way, while the second consists of a deterministic
algorithm that verifies or rejects the guess as a valid solution to the problem.[2]
The complexity classPis contained in NP, but NP contains many important problems, the hardest of which are called NP-
completeproblems, whose solutions are sufficient to deal with any other NP problem in polynomial time. The most important
open question in complexity theory, theP = NP problem, asks whether polynomial time algorithms actually exist forNP-
complete, and by corollary, all NPproblems. It is widely believed that this is not the case.[3]
Formal definition[edit]
The complexity class NP can be defined in terms ofNTIMEas follows:
Alternatively, NP can be defined using deterministic Turing machines as verifiers. A languageL is in NP if and only if there
exist polynomialsp and q, and a deterministic Turing machine M, such that
For allxand y, the machine Mruns in timep(|x|) on input (x,y)
For allxin L, there exists a string yof length q(|x|) such that M(x,y) = 1
For allxnot in L and all strings yof length q(|x|), M(x,y) = 0
Introduction[edit]
Many naturalcomputer scienceproblems are covered by the class NP. In particular, the decision versions of many
interestingsearch problemsand optimization problems are contained in NP.
Verifier-based definition[edit]
In order to explain the verifier-based definition ofNP, let us consider thesubset sum problem: Assume that we are given
someintegers, such as {7, 3, 2, 5, 8}, and we wish to know whether some of these integers sum up to zero. In this
example, the answer is "yes", since the subset of integers {3, 2, 5} corresponds to the sum (3) + (2) + 5 = 0. The task of
deciding whether such a subset with sum zero exists is called the subset sum problem.
As the number of integers that we feed into the algorithm becomes larger, the number of subsets grows exponentially, and in
fact the subset sum problem is NP-complete. However, notice that, if we are given a particular subset (often called
a certificate), we can easily check orverifywhether the subset sum is zero, by just summing up the integers of the subset.
So if the sum is indeed zero, that particular subset is the prooforwitnessfor the fact that the answer is "yes". An algorithm
that verifies whether a given subset has sum zero is called verifier. A problem is said to be inNP if there exists a verifier for
the problem that executes in polynomial time. In case of the subset sum problem, the verifier needs only polynomial time, for
which reason the subset sum problem is in NP.
The "no"-answer version of this problem is stated as: "given a finite set of integers, does every non-empty subset have a
nonzero sum?". Note that the verifier-based definition ofNP does notrequire an easy-to-verify certificate for the "no"-
answers. The class of problems with such certificates for the "no"-answers is called co-NP. In fact, it is an open question
whether all problems inNP also have certificates for the "no"-answers and thus are in co-NP.
Machine-definition[edit]
http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-2http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-2http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-2http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/NP_(complexity)#cite_note-poll-3http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-poll-3http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-poll-3http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=1http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=1http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=1http://en.wikipedia.org/wiki/NTIMEhttp://en.wikipedia.org/wiki/NTIMEhttp://en.wikipedia.org/wiki/NTIMEhttp://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=2http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=2http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=2http://en.wikipedia.org/wiki/Computer_sciencehttp://en.wikipedia.org/wiki/Computer_sciencehttp://en.wikipedia.org/wiki/Computer_sciencehttp://en.wikipedia.org/wiki/Search_problemhttp://en.wikipedia.org/wiki/Search_problemhttp://en.wikipedia.org/wiki/Search_problemhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=3http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=3http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=3http://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Witness_(mathematics)http://en.wikipedia.org/wiki/Witness_(mathematics)http://en.wikipedia.org/wiki/Witness_(mathematics)http://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=4http://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Witness_(mathematics)http://en.wikipedia.org/wiki/Integerhttp://en.wikipedia.org/wiki/Subset_sum_problemhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=3http://en.wikipedia.org/wiki/Search_problemhttp://en.wikipedia.org/wiki/Computer_sciencehttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=2http://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/wiki/NTIMEhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=1http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-poll-3http://en.wikipedia.org/wiki/P_%3D_NP_problemhttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/NP-completehttp://en.wikipedia.org/wiki/P_(complexity)http://en.wikipedia.org/wiki/NP_(complexity)#cite_note-2 -
7/27/2019 np vs p.docx
12/16
Equivalent to the verifier-based definition is the following characterization: NP is the set ofdecision problemssolvable by
anon-deterministic Turing machinethat runs inpolynomial time. (This means that there is an accepting computation path if a
word is in the languageco-NPis defined dually with rejecting paths.) This definition is equivalent to the verifier-based
definition because a non-deterministic Turing machine could solve an NP problem in polynomial time by non-deterministically
selecting a certificate and running the verifier on the certificate. Similarly, if such a machine exists, then a polynomial time
verifier can naturally be constructed from it.
Examples[edit]
This is an incomplete list of problems that are in NP.
All problems inP(For, given a certificate for a problem in P, we can ignore the certificate and just solve the problem
in polynomial time. Alternatively, note that a deterministic Turing machine is also trivially a non-deterministic Turing machine
that just happens to not use any non-determinism.)
The decision problem version of theinteger factorization problem: given integers n and k, is there a factorfwith 1
< f< kand fdividing n?
Thegraph isomorphism problemof determining whether two graphs can be drawn identically
AllNP-completeproblems, e.g.:
A variant of thetraveling salesman problem, where we want to know if there is a route of some length that
goes through all the nodes in a certain network
Theboolean satisfiability problem, where we want to know whether or not a certain formula inpropositional
logicwith boolean variables is true for some value of the variables
Why some NP problems are hard to solve[edit]
Because of the many important problems in this class, there have been extensive efforts to find polynomial-time algorithms
for problems in NP. However, there remain a large number of problems in NP that defy such attempts, seeming to
requiresuper-polynomial time. Whether these problems really aren't decidable in polynomial time is one of the greatest open
questions incomputer science(seeP=NP problemfor an in-depth discussion).
An important notion in this context is the set ofNP-completedecision problems, which is a subset ofNP and might be
informally described as the "hardest" problems in NP. If there is a polynomial-time algorithm for even one of them, then there
is a polynomial-time algorithm forallthe problems in NP. Because of this, and because dedicated research has failed to find
a polynomial algorithm for any NP-complete problem, once a problem has been proven to be NP-complete this is widely
regarded as a sign that a polynomial algorithm for this problem is unlikely to exist.
However, in practical uses, instead of spending computational resources looking for an optimal solution, a good enough (but
potentially suboptimal) solution may often be found in polynomial time. Also, the real life applications of some problems are
easier than their theoretical equivalents. For example, inputs to the general Travelling salesman problemneed not obey
thetriangle inequality, unlike real road networks.
Equivalence of definitions[edit]
The two definitions ofNP as the class of problems solvable by a nondeterministic Turing machine(TM) in polynomial time
and the class of problems verifiable by a deterministic Turing machine in polynomial time are equivalent. The proof is
described by many textbooks, for example Sipser's Introduction to the Theory of Computation, section 7.3.
http://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Decision_problemhttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Non-deterministic_Turing_machinehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Polynomial_timehttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/wiki/Co-NPhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit§ion=5http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=e