#BIS and #PP2DNF: counting the independent sets of a bipartite graph #
A bipartite graph is given with its bipartition
(FirstOrder.Language.bipGraph): a unary relation marks the left side, the
right side is the rest, and only the edges from a left vertex to a right vertex
are read. DescriptiveComplexity.SharpBIS is the number of its independent
sets, the sets with no edge from a left member to a right member.
Like the count of all the independent sets of a graph, it is one-call
#P-complete and not parsimoniously
(DescriptiveComplexity.sharpBIS_sharpP_oneCallComplete). Hardness is from that
problem, by stretching (DescriptiveComplexity.stretchInterp): every edge is
replaced by 2n paths of length two through new middle vertices, which form
the left side. An independent set of the result is any set S of vertices and
any set of middles of the edges with no endpoint in S, so the oracle answers
∑ S, (2 ^ (2n)) ^ e(S), and the remainder modulo 2 ^ (2n) counts the sets
with e(S) = 0, the complements of the independent sets
(DescriptiveComplexity.card_stretchIndep_mod).
DescriptiveComplexity.SharpPP2DNF is the same data read as a formula: one
variable per vertex and one term x ∧ y per edge, a partitioned positive
2-DNF. Its models are the sets of vertices that are not independent, so
#BIS + #PP2DNF = 2 ^ n (DescriptiveComplexity.sharpBIS_add_sharpPP2DNF) and
it is one-call #P-complete as well
(DescriptiveComplexity.sharpPP2DNF_sharpP_oneCallComplete).
In the literature these are the two partitioned positive problems. The
independent sets of a bipartite graph are the complements of its vertex
covers, i.e., of the models of ⋀ (x ∨ y) over its edges, so #BIS is
#PP2CNF, whose #P-hardness is due to
Provan and Ball 1983; #PP2DNF is its dual. This is
the form in which Dalvi and Suciu 2012 (Theorem 5.1
there, and Proposition 5.2 for the query R(x), S(x, y), T(y)) use it. The
hardness proved here is by a different route, with one oracle call, and is
not taken from those papers.
The interpretation is three-dimensional and relativized: the vertices are the
diagonal triples of one tag, and each of two other tags carries the triples
(u, v, i) with u – v an edge.
edge a b: there is an edge between a and b; read for a on the
left and b on the right.
Instances For
Dependency graph
Dependency graph
The relational language of bipartite graphs given with their bipartition.
Equations
- FirstOrder.Language.bipGraph = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.bipGraphRel }
Instances For
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
The relation symbols of the language.
- left : bipGraphRel 1
left a: the vertexais on the left side. - edge : bipGraphRel 2
edge a b: there is an edge betweenaandb; read foraon the left andbon the right.
Instances For
Dependency graph
left a: the vertex a is on the left side.
Equations
Instances For
Dependency graph
edge a b: there is an edge between a and b; read for a on the
left and b on the right.
Equations
Instances For
Dependency graph
The problem #
The set S is independent in a bipartite graph: no edge goes from a left
member of S to a right member of S.
Equations
- DescriptiveComplexity.BipIndep A S = ∀ (x y : A), S x → S y → DescriptiveComplexity.BGLeft x → ¬DescriptiveComplexity.BGLeft y → ¬DescriptiveComplexity.BGEdge x y
Instances For
Dependency graph
The vocabulary of the kernel: bipartite graphs with one unary relation variable.
Equations
Instances For
Dependency graph
The left-side symbol, in the kernel vocabulary.
Instances For
Dependency graph
The edge symbol, in the kernel vocabulary.
Instances For
Dependency graph
The guessed set, in the kernel vocabulary.
Instances For
Dependency graph
The first-order kernel: no edge from a left member to a right member.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The number of independent sets of a bipartite graph is the number of witnesses of the kernel.
Dependency graph
#BIS: the number of independent sets of a bipartite graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The stretched graph #
Domain of the middle vertices: the triples whose first two coordinates are the ends of an edge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The stretched graph, drawn in triples: the tag none carries the vertices,
on the diagonal, and each tag some b the middle vertices (u, v, i) of the
edge u – v, adjacent to u and to v. The middle vertices are the left
side.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The independent sets of the interpreted bipartite graph are those of the stretched graph.
Dependency graph
The reduction #
Counting the independent sets of a graph reduces to #BIS with one
call: the number of independent sets of the stretched graph, modulo
2 ^ (2n), is the number of independent sets of the graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
#BIS is one-call #P-hard.
Dependency graph
#BIS is one-call #P-complete: counting the independent sets of a
bipartite graph is in #P, and every problem of #P reduces to it with one
call.
Registered in the Lax archive as
Lax859101.BipartiteComplete.sharpBIS_sharpP_oneCallComplete.
Dependency graph
#PP2DNF #
The set S of true variables satisfies the partitioned positive 2-DNF
formula of a bipartite graph – one variable per vertex, one term x ∧ y per
edge from a left vertex x to a right vertex y: some term has both its
variables true.
Equations
- DescriptiveComplexity.Pp2dnfModel A S = ∃ (x : A) (y : A), S x ∧ S y ∧ DescriptiveComplexity.BGLeft x ∧ ¬DescriptiveComplexity.BGLeft y ∧ DescriptiveComplexity.BGEdge x y
Instances For
Dependency graph
The number of models of the formula is the number of witnesses of the negated kernel of #BIS.
Dependency graph
#PP2DNF: the number of satisfying assignments of a partitioned positive 2-DNF formula, presented as its bipartite graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Independent sets and models share out the sets of vertices:
#BIS + #PP2DNF = 2 ^ n.
Dependency graph
#BIS reduces to #PP2DNF with one call, on the same instance:
#BIS = 2 ^ n - #PP2DNF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
#PP2DNF is one-call #P-hard.
Dependency graph
#PP2DNF is one-call #P-complete.
Registered in the Lax archive as
Lax859101.BipartiteComplete.sharpPP2DNF_sharpP_oneCallComplete.