np vs p.docx

Embed Size (px)

Citation preview

  • 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&section=1http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=1http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=2http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=2http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=3http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=3http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=4http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=4http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=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&section=5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=5http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=6http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=6http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=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&section=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=7http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=8http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=9http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=9http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=10http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=10http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=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&section=11http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=11http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=12http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=12http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=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&section=13http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=13http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=14http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=14http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=15http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=16http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=16http://en.wikipedia.org/w/index.php?title=P_versus_NP_problem&action=edit&section=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&section=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&section=1http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=1http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=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&section=2http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=2http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=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&section=3http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=3http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=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&section=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=4http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=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&section=3http://en.wikipedia.org/wiki/Search_problemhttp://en.wikipedia.org/wiki/Computer_sciencehttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=2http://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/wiki/NTIMEhttp://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=edit&section=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&section=5http://en.wikipedia.org/w/index.php?title=NP_(complexity)&action=e