Documentation

DescriptiveComplexity.Problems.CliqueFamily.CountingBipartite

#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.

@[reducible, inline]

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
    Dependency graph

    The relational language of bipartite graphs given with their bipartition.

    Equations
    Instances For
      Dependency graph
      def FirstOrder.Language.instDecidableEqBipGraphRel.decEq {a✝ : ℕ} (x✝ x✝¹ : bipGraphRel a✝) :
      Decidable (x✝ = x✝¹)
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Dependency graph
        @[reducible, inline]

        left a: the vertex a is on the left side.

        Equations
        Instances For
          Dependency graph
          Dependency graph

          The relation symbols of the language.

          • left : bipGraphRel 1

            left a: the vertex a is on the left side.

          • edge : bipGraphRel 2

            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

            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
              Instances For
                Dependency graph
                @[reducible, inline]

                The vocabulary of the kernel: bipartite graphs with one unary relation variable.

                Equations
                Instances For
                  Dependency graph
                  @[reducible, inline]

                  The left-side symbol, in the kernel vocabulary.

                  Equations
                  Instances For
                    Dependency graph
                    @[reducible, inline]

                    The edge symbol, in the kernel vocabulary.

                    Equations
                    Instances For
                      Dependency graph
                      @[reducible, inline]

                      The guessed set, in the kernel vocabulary.

                      Equations
                      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
                                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
                                  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
                                  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
                                        Dependency graph
                                        Dependency graph