Polynomial-time counting reduction
From Wikipedia, the free encyclopedia
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]
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 a 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]