Parsimonious Reductions

A parsimonious reduction is a transformation from one problem to another problem such that the number of solutions is preserved. More precisely, a parsimonious reduction is a typical (polynomial time) many-one reduction that additionally does not increase the number of solutions in the transformed instance. Parsimonious reductions are used to prove hardness for counting complexity classes, such as $\#P$.

Definitions

For a formal reductions of parsimonious reductions, we first define a computational problem as a tuple of a language with a corresponding solution set, which include the certificates encoded as strings of 0s and 1s.

Definition (Computational problem) A computational problem $\Pi$ is a tuple $(\mathcal{I},\mathcal{S})$, such that

We can distinguish between two flavors of parsimonious reductions: weak and strong. While weak parsimonious reductions require the number of solutions to be equal, strongly parsimonious require a bijective mapping between the solutions of the instances, which is computable in polynomial time. Because a bijective mapping between two finite sets imply that the sets have equal size, strongly parsimonious reductions are always weakly parsimonious. We begin with the definition of weakly parsimonious reductions.

Definition (Weakly Parsimonious Reduction) Let $\Pi = (\mathcal{I},\mathcal{S})$ and $\Pi' = (\mathcal{I}',\mathcal{S}')$ be two computational problems. We say that there is a weakly parsimonious reduction from $\Pi$ to $\Pi'$, and write $\Pi \leq_{WPR} \Pi'$, if

On the other hand, strongly parsimonious reductions are defined as follows.

Definition (Strongly Parsimonious Reduction) Let $\Pi = (\mathcal{I},\mathcal{S})$ and $\Pi' = (\mathcal{I}',\mathcal{S}')$ be two computational problems. We say that there is a weakly parsimonious reduction from $\Pi$ to $\Pi'$, and write $\Pi \leq_{WPR} \Pi'$, if

Applications

Parsimonious reductions are used to show hardness for counting complexity classes. Among these are