Parsimonious reduction
In computational complexity theory and game complexity, a parsimonious reduction is a transformation from one problem to another that preserves the number of solutions. Informally, it is a bijection between the respective sets of solutions of two problems. A general reduction from problem to problem is a transformation that guarantees that whenever has a solution also has at least one solution and vice versa. A parsimonious reduction guarantees that for every solution of, there exists a unique solution of and vice versa.
Parsimonious reductions are commonly used in computational complexity for proving the hardness of counting problems, for counting complexity classes such as #P. Additionally, they are used in game complexity, as a way to design hard puzzles that have a unique solution, as many types of puzzles require.
Formal definition
A parsimonious reduction from problem to problem is a reduction such that for each instance of, the number of solutions to is equal to the number of solutions to the instance of. If such a reduction exists, and if we have an oracle that counts the number of solutions to any given instance of, then we can design an algorithm that counts the number of solutions to any given instance of. Consequently, if counting the number of solutions to the instances of is hard, then counting the number of solutions to must be hard as well.Applications
Just as many-one reductions are important for proving NP-completeness, parsimonious reductions are important for proving completeness for counting complexity classes such as #P. Because parsimonious reductions preserve the property of having a unique solution, they are also used in game complexity, to show the hardness of puzzles such as sudoku where the uniqueness of the solution is an important part of the definition of the puzzle.Specific types of parsimonious reductions may be defined by the computational complexity or other properties of the transformation algorithm. For instance, a polynomial-time parsimonious reduction is one in which the transformation algorithm takes polynomial time. These are the types of reduction used to prove #P-completeness. In parameterized complexity, FPT parsimonious reductions are used; these are parsimonious reductions whose transformation is a fixed-parameter tractable algorithm and that map bounded parameter values to bounded parameter values by a computable function.
Polynomial-time parsimonious reductions are a special case of a more general class of reductions for counting problems, the polynomial-time counting reductions.
One common technique used in proving that a reduction is parsimonious is to show that there is a bijection between the set of solutions to and the set of solutions to, which guarantees that the number of solutions to both problems is the same.