Hubbry Logo
♯P-complete♯P-completeMain
Open search
♯P-complete
Community hub
♯P-complete
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
♯P-complete
♯P-complete
from Wikipedia

The #P-complete problems (pronounced "sharp P complete", "number P complete", or "hash P complete") form a complexity class in computational complexity theory. The problems in this complexity class are defined by having the following two properties:

  • The problem is #P-hard, meaning that every other problem in #P has a Turing reduction or polynomial-time counting reduction to it. A counting reduction is a pair of polynomial-time transformations from inputs of the other problem to inputs of the given problem and from outputs of the given problem to outputs of the other problem, allowing the other problem to be solved using any subroutine for the given problem. A Turing reduction is an algorithm for the other problem that makes a polynomial number of calls to a subroutine for the given problem and, outside of those calls, uses polynomial time. In some cases parsimonious reductions, a more specific type of reduction that preserves the exact number of solutions, are used.

#P-complete problems are at least as hard as NP-complete problems.[1] A polynomial-time algorithm for solving a #P-complete problem, if it existed, would solve the P versus NP problem by implying that P and NP are equal. No such algorithm is known, nor is a proof known that such an algorithm does not exist.

Examples

[edit]

Examples of #P-complete problems include:

These are all necessarily members of the class #P as well. As a non-example, consider the case of counting solutions to a 1-satisfiability problem: a series of variables that are each individually constrained, but have no relationships with each other. The solutions can be efficiently counted, by multiplying the number of options for each variable in isolation. Thus, this problem is in #P, but cannot be #P-complete unless #P=FP. This would be surprising, as it would imply that P=NP=PH.

Easy problems with hard counting versions

[edit]

Some #P-complete problems correspond to easy (polynomial time) problems. Determining the satisfiability of a Boolean formula in disjunctive normal form is easy: such a formula is satisfiable if and only if it contains a satisfiable conjunction (one that does not contain a variable and its negation), whereas counting the number of satisfying assignments is #P-complete. Furthermore, deciding 2-satisfiability is easy compared to counting the number of satisfying assignments. Topologically sorting is easy in contrast to counting the number of topological sortings. A single perfect matching can be found in polynomial time, but counting all perfect matchings is #P-complete. The perfect matching counting problem was the first counting problem corresponding to an easy P problem shown to be #P-complete, in a 1979 paper by Leslie Valiant which also defined the class #P and the #P-complete problems for the first time.[3]

Approximation

[edit]

There are probabilistic algorithms that return good approximations to some #P-complete problems with high probability. This is one of the demonstrations of the power of probabilistic algorithms.

Many #P-complete problems have a fully polynomial-time randomized approximation scheme, or "FPRAS," which, informally, will produce with high probability an approximation to an arbitrary degree of accuracy, in time that is polynomial with respect to both the size of the problem and the degree of accuracy required. Jerrum, Valiant, and Vazirani showed that every #P-complete problem either has an FPRAS, or is essentially impossible to approximate; if there is any polynomial-time algorithm which consistently produces an approximation of a #P-complete problem which is within a polynomial ratio in the size of the input of the exact answer, then that algorithm can be used to construct an FPRAS.[4]

References

[edit]

Further reading

[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
♯P-complete problems are the hardest counting problems in the complexity class ♯P, meaning they are in ♯P and every function in ♯P is polynomial-time Turing reducible to them. Introduced by Leslie Valiant in 1979, ♯P-completeness captures the intractability of counting the number of solutions to decision problems in NP, distinguishing it from decision-based complexity classes like NP-complete. The class ♯ consists of all functions f: {0,1}* → ℕ that the number of accepting paths of a nondeterministic polynomial-time . Formally, f is in ♯ if there exists a polynomial p and a polynomial-time verifier M such that for every input x, f(x) equals the number of witnesses y of length p(|x|) for which M(x,y) accepts. This class naturally extends NP by shifting focus from existence to enumeration, and it includes functions like the number of satisfying assignments to a Boolean formula (#SAT). A function f in ♯P is ♯P-complete if every g in ♯P belongs to ^(f), the class of functions computable in time with access to f. Completeness is typically established using , though parsimonious —bijections that preserve the exact number of solutions—are used for certain proofs to maintain precision. Valiant's framework also employed algebraic projections for completeness over fields, linking combinatorial to computations. Prominent examples of ♯P-complete problems include of a 0-1 matrix, which sums over all perfect matchings in a and was proven complete by Valiant. Other canonical instances are #SAT ( satisfying truth assignments), Hamiltonian cycles in a graph, and the number of satisfying assignments to a monotone 2-DNF formula. These problems highlight how even slight modifications to NP-complete decision tasks—such as asking "how many?" instead of "is there at least one?"—can lead to dramatically increased hardness. ♯P-completeness has profound implications for , as solving any ♯P-complete problem in time would imply P = NP, since decision versions can be derived from via binary search or parity checks. It also connects to broader hierarchies: Toda's theorem shows that the entire PH is contained in P^♯P ( time with one ♯P query), underscoring the power of oracles. Despite extensive study, no -time algorithms exist for ♯P-complete problems, and remains challenging, with results like inapproximability under certain assumptions.

Fundamentals

Definition of ♯P

♯P is a complexity class that captures the computational difficulty of counting problems, serving as the functional analogue to the decision class NP. Introduced by Leslie G. Valiant in 1979 to formalize the hardness of problems like of a matrix, ♯P consists of functions that count solutions verifiable in polynomial time. Formally, a function f:{0,1}Nf: \{0,1\}^* \to \mathbb{N} belongs to ♯P if there exists a p(n)p(n) and a MM that runs in time p(x)p(|x|) such that, for every input xx, f(x)f(x) equals the number of accepting computation paths of MM on xx. Equivalently, ff is in ♯P if there is a polynomial-time deterministic verifier VV and a pp such that f(x)={y{0,1}p(x)    V(x,y)=1}.f(x) = \bigl| \bigl\{ y \in \{0,1\}^{p(|x|)} \;\big|\; V(x,y) = 1 \bigr\} \bigr|.
Add your contribution
Related Hubs
User Avatar
No comments yet.