Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Polynomial-time reduction
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Method for solving one problem using another}} In [[computational complexity theory]], a '''polynomial-time reduction''' is a method for solving one problem using another. One shows that if a hypothetical [[subroutine]] solving the second problem exists, then the first problem can be solved by transforming or [[Reduction (complexity)|reducing]] it to inputs for the second problem and calling the subroutine one or more times. If both the time required to transform the first problem to the second, and the number of times the subroutine is called is [[polynomial]], then the first problem is polynomial-time reducible to the second.<ref name = "kleinberg-tardos">{{cite book | last1=Kleinberg | first1=Jon|authorlink1= Jon Kleinberg| last2=Tardos | first2=Éva|authorlink2=Éva Tardos |year=2006 |publisher=Pearson Education |title=Algorithm Design |isbn=978-0-321-37291-8 |pages=452–453 }} </ref> A polynomial-time reduction proves that the first problem is no more difficult than the second one, because whenever an efficient [[algorithm]] exists for the second problem, one exists for the first problem as well. By [[contraposition]], if no efficient algorithm exists for the first problem, none exists for the second either.<ref name = "kleinberg-tardos"/> Polynomial-time reductions are frequently used in complexity theory for defining both [[complexity class]]es and [[complete problem]]s for those classes. ==Types of reductions== The three most common types of polynomial-time reduction, from the most to the least restrictive, are polynomial-time [[many-one reduction]]s, [[truth-table reduction]]s, and [[Turing reduction]]s. The most frequently used of these are the many-one reductions, and in some cases the phrase "polynomial-time reduction" may be used to mean a polynomial-time many-one reduction.<ref>{{citation|title=Complexity Theory: Exploring the Limits of Efficient Algorithms|first=Ingo|last=Wegener|authorlink=Ingo Wegener|page=60|publisher=Springer|year=2005|isbn=9783540274773}}.</ref> The most general reductions are the Turing reductions and the most restrictive are the many-one reductions with truth-table reductions occupying the space in between.<ref name = "mandal2014">{{cite conference|first1=Debasis|last1=Mandal|first2=A.|last2=Pavan|first3=Rajeswari|last3=Venugopalan|title=Separating Cook Completeness from Karp-Levin Completeness under a Worst-Case Hardness Hypothesis|year=2014|url=http://drops.dagstuhl.de/opus/volltexte/2014/4862/|conference=34th International Conference on Foundation of Software Technology and Theoretical Computer Science|isbn=978-3-939897-77-4}}</ref> ===Many-one reductions=== A polynomial-time [[many-one reduction]] from a problem ''A'' to a problem ''B'' (both of which are usually required to be [[decision problem]]s) is a polynomial-time algorithm for transforming inputs to problem ''A'' into inputs to problem ''B'', such that the transformed problem has the same output as the original problem. An instance ''x'' of problem ''A'' can be solved by applying this transformation to produce an instance ''y'' of problem ''B'', giving ''y'' as the input to an algorithm for problem ''B'', and returning its output. Polynomial-time many-one reductions may also be known as '''polynomial transformations''' or '''Karp reductions''', named after [[Richard Karp]]. A reduction of this type is denoted by <math>A \le_m^P B</math> or <math>A \le_p B</math>.<ref name="goldreich">{{citation|title=Computational Complexity: A Conceptual Perspective|first=Oded|last=Goldreich|authorlink=Oded Goldreich|publisher=Cambridge University Press|year=2008|isbn=9781139472746|pages=59–60}}</ref><ref name = "kleinberg-tardos"/> ===Truth-table reductions=== A polynomial-time [[truth-table reduction]] from a problem ''A'' to a problem ''B'' (both decision problems) is a polynomial time algorithm for transforming inputs to problem ''A'' into a fixed number of inputs to problem ''B'', such that the output for the original problem can be expressed as a function of the outputs for ''B''. The function that maps outputs for ''B'' into the output for ''A'' must be the same for all inputs, so that it can be expressed by a [[truth table]]. A reduction of this type may be denoted by the expression <math>A \le_{tt}^P B</math>.<ref>{{citation | last1 = Buss | first1 = S.R. | author1-link = Samuel Buss | last2 = Hay | first2 = L. | contribution = On truth-table reducibility to SAT and the difference hierarchy over NP | doi = 10.1109/SCT.1988.5282 | pages = 224–233 | title = Proceedings of Third Annual Structure in Complexity Theory Conference | year = 1988| isbn = 978-0-8186-0866-7 | citeseerx = 10.1.1.5.2387 }}.</ref> ===Turing reductions=== A polynomial-time [[Turing reduction]] from a problem ''A'' to a problem ''B'' is an [[algorithm]] that solves problem ''A'' using a polynomial number of calls to a subroutine for problem ''B'', and polynomial time outside of those subroutine calls. Polynomial-time Turing reductions are also known as '''Cook reductions''', named after [[Stephen Cook]]. A reduction of this type may be denoted by the expression <math>A \le_T^P B</math>.<ref name="goldreich"/> Many-one reductions can be regarded as restricted variants of Turing reductions where the number of calls made to the subroutine for problem ''B'' is exactly one and the value returned by the reduction is the same value as the one returned by the subroutine. ==Completeness== A [[complete problem]] for a given complexity class '''C''' and reduction ≤ is a problem ''P'' that belongs to '''C''', such that every problem ''A'' in '''C''' has a reduction ''A'' ≤ ''P''. For instance, a problem is [[NP-complete|'''NP'''-complete]] if it belongs to [[NP (complexity)|'''NP''']] and all problems in '''NP''' have polynomial-time many-one reductions to it. A problem that belongs to '''NP''' can be proven to be '''NP'''-complete by finding a single polynomial-time many-one reduction to it from a known '''NP'''-complete problem.<ref>{{citation|title=Computers and Intractability: A Guide to the Theory of NP-Completeness|first1=Michael R.|last1=Garey|author1-link=Michael Garey|first2=D. S.|last2=Johnson|author2-link=David S. Johnson|publisher=W. H. Freeman|year=1979}}.</ref> Polynomial-time many-one reductions have been used to define complete problems for other complexity classes, including the [[PSPACE-complete|'''PSPACE'''-complete]] [[Formal language|languages]] and [[EXPTIME|'''EXPTIME'''-complete]] languages.<ref>{{citation|contribution=Complexity theory|pages=241–267|first=A. V.|last=Aho|authorlink=Alfred Aho|title=Computer Science: The Hardware, Software and Heart of It|doi=10.1007/978-1-4614-1168-0_12|year=2011|editor1-first=E. K.|editor1-last=Blum|editor2-first=A. V.|editor2-last=Aho|isbn=978-1-4614-1167-3|doi-access=free}}. See in particular p. 255.</ref> Every decision problem in [[P (complexity)|'''P''']] (the class of polynomial-time decision problems) may be reduced to every other nontrivial decision problem (where nontrivial means that not every input has the same output), by a polynomial-time many-one reduction. To transform an instance of problem ''A'' to ''B'', solve ''A'' in polynomial time, and then use the solution to choose one of two instances of problem ''B'' with different answers. Therefore, for complexity classes within '''P''' such as [[L (complexity)|'''L''']], [[NL (complexity)|'''NL''']], [[NC (complexity)|'''NC''']], and '''P''' itself, polynomial-time reductions cannot be used to define complete languages: if they were used in this way, every nontrivial problem in '''P''' would be complete. Instead, weaker reductions such as [[log-space reduction]]s or [[NC (complexity)|'''NC''']] reductions are used for defining classes of complete problems for these classes, such as the [[P-complete|'''P'''-complete]] problems.<ref>{{citation|last1=Greenlaw|first1=Raymond|first2=James|last2=Hoover|first3=Walter|last3=Ruzzo|year=1995|title=Limits To Parallel computation; P-Completeness Theory|isbn=978-0-19-508591-4}}. In particular, for the argument that every nontrivial problem in P has a polynomial-time many-one reduction to every other nontrivial problem, see p. 48.</ref> ==Defining complexity classes== The definitions of the complexity classes '''NP''', '''PSPACE''', and '''EXPTIME''' do not involve reductions: reductions come into their study only in the definition of complete languages for these classes. However, in some cases a complexity class may be defined by reductions. If ''C'' is any [[decision problem]], then one can define a complexity class '''C''' consisting of the languages ''A'' for which <math>A \le_m^P C</math>. In this case, ''C'' will automatically be complete for '''C''', but '''C''' may have other complete problems as well. An example of this is the complexity class <math>\exists \mathbb{R}</math> defined from the [[existential theory of the reals]], a computational problem that is known to be [[NP-hard|'''NP'''-hard]] and in '''[[PSPACE]]''', but is not known to be complete for '''NP''', '''PSPACE''', or any language in the [[polynomial hierarchy]]. <math>\exists \mathbb{R}</math> is the set of problems having a polynomial-time many-one reduction to the existential theory of the reals; it has several other complete problems such as determining the [[Crossing number (graph theory)|rectilinear crossing number]] of an [[undirected graph]]. Each problem in <math>\exists \mathbb{R}</math> inherits the property of belonging to '''PSPACE''', and each <math>\exists \mathbb{R}</math>-complete problem is '''NP'''-hard.<ref>{{citation|first=Marcus|last=Schaefer|contribution=Complexity of some geometric and topological problems|contribution-url=http://ovid.cs.depaul.edu/documents/convex.pdf|title=Graph Drawing, 17th International Symposium, GS 2009, Chicago, IL, USA, September 2009, Revised Papers|series=Lecture Notes in Computer Science|publisher=Springer-Verlag|volume=5849|pages=334–344|doi=10.1007/978-3-642-11805-0_32|year=2010|title-link=International Symposium on Graph Drawing|isbn=978-3-642-11804-3|doi-access=free}}.</ref> Similarly, the complexity class [[GI (complexity)|'''GI''']] consists of the problems that can be reduced to the [[graph isomorphism problem]]. Since graph isomorphism is known to belong both to '''NP''' and co-[[AM (complexity)|'''AM''']], the same is true for every problem in this class. A problem is '''GI'''-complete if it is complete for this class; the graph isomorphism problem itself is '''GI'''-complete, as are several other related problems.<ref>{{citation | first1 = Johannes | last1 = Köbler | first2 = Uwe | last2 = Schöning | author2-link = Uwe Schöning | first3 = Jacobo | last3 = Torán | title = The Graph Isomorphism Problem: Its Structural Complexity | publisher = Birkhäuser | year = 1993 | isbn = 978-0-8176-3680-7 | oclc = 246882287}}.</ref> == See also == * [[Karp's 21 NP-complete problems]] == External links == * [https://www.youtube.com/watch?v=eHZifpgyH_4 MIT OpenCourseWare: 16. Complexity: P, NP, NP-completeness, Reductions] == References == {{reflist}} {{DEFAULTSORT:Polynomial-Time Reduction}} [[Category:Reduction (complexity)]] [[he:רדוקציה פולינומית]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Cite book
(
edit
)
Template:Cite conference
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)