Polynomial-time counting reduction

In the computational complexity theory of counting problems, a polynomial-time counting reduction is a type of reduction (a transformation from one problem to another) used to define the notion of completeness for the complexity class ♯P.[1] These reductions may also be called polynomial many-one counting reductions or weakly parsimonious reductions; they are analogous to many-one reductions for decision problems and they generalize the parsimonious reductions.[2]

Definition edit

A polynomial-time counting reduction is usually used to transform instances of a known-hard problem   into instances of another problem   that is to be proven hard. It consists of two functions   and  , both of which must be computable in polynomial time. The function   transforms inputs for   into inputs for  , and the function   transforms outputs for   into outputs for  .[1][2]

These two functions must preserve the correctness of the output. That is, suppose that one transforms an input   for problem   to an input   for problem  , and then one solves   to produce an output  . It must be the case that the transformed output   is the correct output for the original input  . That is, if the input-output relations of   and   are expressed as functions, then their function composition must obey the identity  . Alternatively, expressed in terms of algorithms, one possible algorithm for solving   would be to apply   to transform the problem into an instance of  , solve that instance, and then apply   to transform the output of   into the correct answer for  .[1][2]

Relation to other kinds of reduction edit

As a special case, a parsimonious reduction is a polynomial-time transformation   on the inputs to problems that preserves the exact values of the outputs. Such a reduction can be viewed as a polynomial-time counting reduction, by using the identity function as the function  .[1][2]

Applications in complexity theory edit

A functional problem (specified by its inputs and desired outputs) belongs to the complexity class ♯P if there exists a non-deterministic Turing machine that runs in polynomial time, for which the output to the problem is the number of accepting paths of the Turing machine. Intuitively, such problems count the number of solutions to problems in the complexity class NP. A functional problem   is said to be ♯P-hard if there exists a polynomial-time counting reduction from every problem   in ♯P to  . If, in addition,   itself belongs to ♯P, then   is said to be ♯P-complete.[1][2] (Sometimes, as in Valiant's original paper proving the completeness of the permanent of 0–1 matrices, a weaker notion of reduction, Turing reduction, is instead used for defining ♯P-completeness.[3])

The usual method of proving a problem   in ♯P to be ♯P-complete is to start with a single known ♯P-complete problem   and find a polynomial-time counting reduction from   to  . If this reduction exists, then there exists a reduction from any other problem in ♯P to  , obtained by composing a reduction from the other problem to   with the reduction from   to  .[1][2]

References edit

  1. ^ a b c d e f Gomes, Carla P.; Sabharwal, Ashish; Selman, Bart (2009), "Chapter 20. Model Counting", in Biere, Armin; Heule, Marijn; van Maaren, Hans; Walsh, Toby (eds.), Handbook of Satisfiability (PDF), Frontiers in Artificial Intelligence and Applications, vol. 185, IOS Press, pp. 633–654, ISBN 9781586039295. See in particular pp. 634–635.
  2. ^ a b c d e f Creignou, Nadia; Khanna, Sanjeev; Sudan, Madhu (2001), "2.2.2 Parsimonious reductions and ♯P-completeness", Complexity classifications of Boolean constraint satisfaction problems, SIAM Monographs on Discrete Mathematics and Applications, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, pp. 12–13, doi:10.1137/1.9780898718546, ISBN 0-89871-479-6, MR 1827376
  3. ^ Valiant, L. G. (1979), "The complexity of computing the permanent", Theoretical Computer Science, 8 (2): 189–201, doi:10.1016/0304-3975(79)90044-6, MR 0526203