|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| {{unsolved|computer science|Is '''P''' {{=}} '''NP''' ?}}
| | <br><br> |
| [[File:P np np-complete np-hard.svg|thumb|300px|right|[[Euler diagram]] for [[P (complexity)|P]], NP, [[NP-complete]], and [[NP-hard]] set of problems. The existence of problems within '''NP''' but outside both '''P''' and '''NP'''-complete, under the P!=NP assumption, was [[Ladner's theorem|established by Ladner]].<ref>R. E. Ladner "On the structure of polynomial time reducibility," J.ACM, 22, pp. 151–171, 1975. Corollary 1.1. [http://portal.acm.org/citation.cfm?id=321877&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 ACM site].</ref>]]
| |
| In [[computational complexity theory]], '''NP''' is one of the most fundamental [[complexity class]]es.
| |
| The abbreviation '''NP''' refers to "[[Nondeterministic algorithm|nondeterministic]] [[polynomial time]]."
| |
|
| |
|
| Intuitively, '''NP''' is the set of all [[decision problem]]s for 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'' in [[polynomial time]] by a [[deterministic Turing machine]].
| | WHAT other types ?? Social media is a condition used to explain online media websites a particular example is Tube, Facebook, LinkedIn, Twitter, Flickr, Foursquare and huge other web websites. They are called social media sites because anyone can contribute, comment and share the content placed on these website.<br><br>Of course promotion costs money, and if you're in a scenario where experience decreased income right now, then deciding on a to be able to increase your promotion might be tricky. But nevertheless you must figure out a approach. If you can do it, definitely bring about a increase within your business when others are cutting back, might that larger market share when economic downturn is ended.<br><br>Online directories are another opportunity to check out. Yahoo! Directory is a beneficial one. If your business is there to a specific geographical area, you might additionally find some local directories to undergo that will boost neighborhood visibility.<br><br>However, after you have tired of hearing some colleagues fussing that I wasn't "on board" To begin to gave it a twirl. Well, I'm hooked. And guess what exactly? I'm making great regarding this Social Media site with out to waste hours day after day.<br><br>I've discussing this before the. If your website is homegrown, old, outdated, and features no "call to action", then will make have good lead conversion results. Spend the money or use the time to update your website.<br><br>Not Studying Your Web Stats - Your web stats can help you determine just how many visitors you get, where they are going, just how long they are staying, when they returning and thus forth. By analyzing this information, you can turn your website into the best website . One of the best site stats you may use for free is Google Analytics.<br><br>So several Steps to achieving success in your own house based online business are to Learn, Generate Traffic and maintain Your Awareness. If you want that long term stream of income, just follow these 4 things!<br><br>If you have any sort of inquiries pertaining to where and exactly how to use [http://www.mavsocial.com/ Digital Asset Management], you can call us at the web site. |
| In an equivalent formal definition, '''NP''' is the set of [[decision problem]]s where the "yes"-instances can be accepted in [[polynomial time]] by a [[non-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 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.<ref>Alsuwaiyel, M. H.: ''Algorithms: Design Techniques and Analysis'', [http://books.google.com/books?id=SPx4iHZEOugC&lpg=PP1&pg=PA283#v=onepage&q&f=false p. 283]</ref>
| |
| | |
| The complexity class '''[[P (complexity)|P]]''' is contained in '''NP''', but '''NP''' contains many important problems, the hardest of which are called [[NP-complete|'''NP'''-complete]] problems, whose solutions are sufficient to deal with any other NP problem in polynomial time. The most important open question in complexity theory, the [[P = NP problem|'''P''' = '''NP''' problem]], asks whether polynomial time algorithms actually exist for '''NP'''-complete, and by corollary, all '''NP''' problems. It is widely believed that this is not the case.<ref name="poll">{{cite journal|author=William I. Gasarch|title=The P=?NP poll.|journal=SIGACT News|volume=33|issue=2|pages=34–47|date=June 2002|url=http://www.cs.umd.edu/~gasarch/papers/poll.pdf|doi=10.1145/1052796.1052804|format=PDF|accessdate=2008-12-29}}</ref>
| |
| | |
| == Formal definition ==
| |
| | |
| The complexity class '''NP''' can be defined in terms of [[NTIME]] as follows:
| |
| | |
| :<math>\mbox{NP} = \bigcup_{k\in\mathbb{N}} \mbox{NTIME}(n^k).</math>
| |
| | |
| Alternatively, '''NP''' can be defined using deterministic Turing machines as verifiers. A [[formal language|language]] ''L'' is in '''NP''' if and only if there exist polynomials ''p'' and ''q'', and a deterministic Turing machine ''M'', such that
| |
| * For all ''x'' and ''y'', the machine ''M'' runs in time ''p''(|''x''|'')'' on input ''(x,y)''
| |
| * For all ''x'' in ''L'', there exists a string ''y'' of length ''q''(|''x''|) such that ''M(x,y)'' = 1
| |
| * For all ''x'' not in ''L'' and all strings ''y'' of length ''q''(|''x''|), ''M(x,y)'' = 0
| |
| | |
| == Introduction ==
| |
| | |
| Many natural [[computer science]] problems are covered by the class '''NP'''.
| |
| In particular, the decision versions of many interesting [[search problem]]s and optimization problems are contained in '''NP'''.
| |
| | |
| === Verifier-based definition ===
| |
| | |
| In order to explain the verifier-based definition of '''NP''', let us consider the [[subset sum problem]]:
| |
| Assume that we are given some [[integer]]s, 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 {{nowrap|(−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 or ''verify'' whether 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 ''proof'' or [[witness (mathematics)|witness]] for 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 in '''NP''' 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 of '''NP''' does ''not'' require 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 in '''NP''' also have certificates for the "no"-answers and thus are in '''co-NP'''.
| |
| | |
| === Machine-definition ===
| |
| | |
| Equivalent to the verifier-based definition is the following characterization: '''NP''' is the set of [[decision problem]]s solvable by a [[non-deterministic Turing machine]] that runs in [[polynomial time]]. (This means that there is an accepting computation path if a word is in the language – '''[[co-NP]]''' is 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 ===
| |
| | |
| This is an incomplete list of problems that are in '''NP'''.
| |
| | |
| * All problems in '''[[P (complexity)|P]]''' (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 the [[integer factorization problem]]: given integers ''n'' and ''k'', is there a factor ''f'' with 1 < ''f'' < ''k'' and ''f'' dividing ''n''?
| |
| * The [[graph isomorphism problem]] of determining whether two graphs can be drawn identically
| |
| * All [[NP-complete]] problems, e.g.:
| |
| **A variant of the [[travelling 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
| |
| **The [[boolean satisfiability problem]], where we want to know whether or not a certain formula in [[propositional logic]] with boolean variables is true for some value of the variables
| |
| | |
| == Why some NP problems are hard to solve ==
| |
| | |
| 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 require [[super-polynomial time]]. Whether these problems really aren't decidable in polynomial time is one of the greatest open questions in [[computer science]] (see '''[[P = NP problem|P=NP problem]]''' for an in-depth discussion).
| |
| | |
| An important notion in this context is the set of [[NP-complete]] decision problems, which is a subset of '''NP''' 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 for ''all'' the 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 problem]] need not obey the [[triangle inequality]], unlike real road networks. | |
| | |
| == Equivalence of definitions ==
| |
| | |
| The two definitions of '''NP''' 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.
| |
| | |
| To show this, first suppose we have a deterministic verifier. A nondeterministic machine can simply nondeterministically run the verifier on all possible proof strings (this requires only polynomially many steps because it can nondeterministically choose the next character in the proof string in each step, and the length of the proof string must be polynomially bounded). If any proof is valid, some path will accept; if no proof is valid, the string is not in the language and it will reject.
| |
| | |
| Conversely, suppose we have a nondeterministic TM called A accepting a given language L. At each of its polynomially many steps, the machine's [[computation tree]] branches in at most a constant number of directions. There must be at least one accepting path, and the string describing this path is the proof supplied to the verifier. The verifier can then deterministically simulate A, following only the accepting path, and verifying that it accepts at the end. If A rejects the input, there is no accepting path, and the verifier will never accept.
| |
| | |
| == Relationship to other classes ==
| |
| | |
| '''NP''' contains all problems in '''[[P (complexity)|P]]''', since one can verify any instance of the problem by simply ignoring the proof and solving it. '''NP''' is contained in '''[[PSPACE]]'''—to show this, it suffices to construct a '''PSPACE''' machine that loops over all proof strings and feeds each one to a polynomial-time verifier. Since a polynomial-time machine can only read polynomially many bits, it cannot use more than polynomial space, nor can it read a proof string occupying more than polynomial space (so we don't have to consider proofs longer than this). '''NP''' is also contained in [[EXPTIME]], since the same algorithm operates in exponential time.
| |
| | |
| The [[complement (complexity)|complement]] of '''NP''', [[co-NP]], contains those problems which have a simple proof for ''no'' instances, sometimes called counterexamples. For example, [[primality test]]ing trivially lies in co-NP, since one can refute the primality of an integer by merely supplying a nontrivial factor. '''NP''' and co-NP together form the first level in the [[polynomial hierarchy]], higher only than '''P'''.
| |
| | |
| '''NP''' is defined using only deterministic machines. If we permit the verifier to be probabilistic (this however, is not necessarily a BPP machine <ref>https://complexityzoo.uwaterloo.ca/Complexity_Zoo:E#existsbpp</ref> ), we get the class '''MA''' solvable using an [[Arthur-Merlin protocol]] with no communication from Merlin to Arthur.
| |
| | |
| '''NP''' is a class of [[decision problem]]s; the analogous class of function problems is [[FNP (complexity)|FNP]].
| |
| | |
| == Other characterizations ==
| |
| In terms of [[descriptive complexity theory]], '''NP''' corresponds precisely to the set of languages definable by existential [[second-order logic]] ([[Fagin's theorem]]).
| |
| | |
| '''NP''' can be seen as a very simple type of [[interactive proof system]], where the prover comes up with the proof certificate and the verifier is a deterministic polynomial-time machine that checks it. It is complete because the right proof string will make it accept if there is one, and it is sound because the verifier cannot accept if there is no acceptable proof string.
| |
| | |
| A major result of complexity theory is that '''NP''' can be characterized as the problems solvable by [[probabilistically checkable proof]]s where the verifier uses O(log ''n'') random bits and examines only a constant number of bits of the proof string (the class '''PCP'''(log ''n'', 1)). More informally, this means that the '''NP''' verifier described above can be replaced with one that just "spot-checks" a few places in the proof string, and using a limited number of coin flips can determine the correct answer with high probability. This allows several results about the hardness of [[approximation algorithm]]s to be proven.
| |
| | |
| ==Example==
| |
| | |
| The decision version of the [[traveling salesman problem]] is in '''NP'''. Given an input matrix of distances between ''n'' cities, the problem is to determine if there is a route visiting all cities with total distance less than ''k''.
| |
| | |
| A proof certificate can simply be a list of the cities. Then verification can clearly be done in polynomial time by a deterministic Turing machine. It simply adds the matrix entries corresponding to the paths between the cities.
| |
| | |
| A nondeterministic Turing machine can find such a route as follows:
| |
| * At each city it visits it "guesses" the next city to visit, until it has visited every vertex. If it gets stuck, it stops immediately.
| |
| * At the end it verifies that the route it has taken has cost less than ''k'' in [[Big-O notation|O]](''n'') time.
| |
| | |
| One can think of each guess as "forking" a new copy of the Turing machine to follow each of the possible paths forward, and if at least one machine finds a route of distance less than ''k'', that machine accepts the input. (Equivalently, this can be thought of as a single Turing machine that always guesses correctly)
| |
| | |
| [[Binary search]] on the range of possible distances can convert the decision version of Traveling Salesman to the optimization version, by calling the decision version repeatedly (a polynomial number of times).
| |
| | |
| == References ==
| |
| {{reflist}}
| |
| * [[Thomas H. Cormen]], [[Charles E. Leiserson]], [[Ronald L. Rivest]], and [[Clifford Stein]]. ''[[Introduction to Algorithms]]'', Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 34.2: Polynomial-time verification, pp. 979–983.
| |
| * {{cite book|author = [[Michael Sipser]] | year = 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | isbn = 0-534-94728-X}} Sections 7.3–7.5 (The Class NP, NP-completeness, Additional NP-complete Problems), pp. 241–271.
| |
| * [[David Harel]], [[Yishai Feldman]]. Algorithmics: The Spirit of Computing, Addison-Wesley, Reading, MA, 3rd edition, 2004.
| |
| | |
| ==External links==
| |
| *{{CZoo|NP|N#np}}
| |
| *[http://page.mi.fu-berlin.de/aneumann/npc.html Graph of NP-complete Problems]{{dead link|date=March 2010}}
| |
| | |
| *[[American Scientist]] primer on traditional and recent complexity theory research: [http://www.americanscientist.org/issues/pub/accidental-algorithms/ "Accidental Algorithms"]
| |
| | |
| {{ComplexityClasses}}
| |
| | |
| {{DEFAULTSORT:Np (Complexity)}}
| |
| [[Category:Complexity classes]]
| |
WHAT other types ?? Social media is a condition used to explain online media websites a particular example is Tube, Facebook, LinkedIn, Twitter, Flickr, Foursquare and huge other web websites. They are called social media sites because anyone can contribute, comment and share the content placed on these website.
Of course promotion costs money, and if you're in a scenario where experience decreased income right now, then deciding on a to be able to increase your promotion might be tricky. But nevertheless you must figure out a approach. If you can do it, definitely bring about a increase within your business when others are cutting back, might that larger market share when economic downturn is ended.
Online directories are another opportunity to check out. Yahoo! Directory is a beneficial one. If your business is there to a specific geographical area, you might additionally find some local directories to undergo that will boost neighborhood visibility.
However, after you have tired of hearing some colleagues fussing that I wasn't "on board" To begin to gave it a twirl. Well, I'm hooked. And guess what exactly? I'm making great regarding this Social Media site with out to waste hours day after day.
I've discussing this before the. If your website is homegrown, old, outdated, and features no "call to action", then will make have good lead conversion results. Spend the money or use the time to update your website.
Not Studying Your Web Stats - Your web stats can help you determine just how many visitors you get, where they are going, just how long they are staying, when they returning and thus forth. By analyzing this information, you can turn your website into the best website . One of the best site stats you may use for free is Google Analytics.
So several Steps to achieving success in your own house based online business are to Learn, Generate Traffic and maintain Your Awareness. If you want that long term stream of income, just follow these 4 things!
If you have any sort of inquiries pertaining to where and exactly how to use Digital Asset Management, you can call us at the web site.