Documentation

DescriptiveComplexity.Problems.Steiner.Reductions

Vertex Cover reduces to Steiner Tree #

The classical reduction, read in the tagged framework (DescriptiveComplexity.steinerInterp, tag Fin 3, dimension 2): a marked graph becomes the bipartite incidence structure of its edges, plus a root joined to every vertex.

A connected set containing all terminals must join every edge-terminal to the root, and an edge's only neighbours are its two endpoints, so the vertices it uses form a vertex cover; conversely a vertex cover joins every edge to the root through one of its endpoints. Since vertices are the only non-terminals, the budget counts exactly the cover, and the marked diagonal transports the threshold unchanged.

The root is a single fresh element, so – as for the fresh variable of DescriptiveComplexity.Problems.NaeSat – this is an ordered reduction: an interpretation adds elements only by tags, and a tag contributes a whole copy of the universe, so the root has to be picked out inside its copy as the minimum (DescriptiveComplexity.minF).

@[reducible, inline]

The adjacency symbol over the ordered expansion of marked graphs.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    The mark symbol over the ordered expansion of marked graphs.

    Equations
    Instances For
      Dependency graph

      The three sorts of point of the interpreted structure. Tags built from constructors, rather than Fin 3, so that the tag match inside the defining formulas reduces definitionally in the characterization proofs.

      • vertex : SteinerTag

        A vertex of the input graph, carried by the diagonal.

      • edge : SteinerTag

        An edge of the input graph, carried by an adjacent off-diagonal pair.

      • root : SteinerTag

        The root, carried by the diagonal of the minimum.

      Instances For
        Dependency graph
        Dependency graph
        @[instance_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        Dependency graph
        Dependency graph

        The interpretation of Vertex Cover into Steiner Tree.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph

          The point carrying the vertex v.

          Equations
          Instances For
            Dependency graph

            The point carrying the (oriented) edge (u, v).

            Equations
            Instances For
              Dependency graph

              The point carrying the root, at the minimum m.

              Equations
              Instances For
                Dependency graph
                Dependency graph

                Shapes #

                The three master characterizations, from which the point-level lemmas above and the case analyses of the correctness proof follow.

                theorem DescriptiveComplexity.steiner_adj_iff {A : Type} [FirstOrder.Language.markedGraph.Structure A] [LinearOrder A] (t t' : SteinerTag) (w w' : Fin 2A) :
                STAdj (t, w) (t', w') t = SteinerTag.vertex t' = SteinerTag.edge w 0 = w 1 (MGAdj (w' 0) (w' 1) w' 0 w' 1) (w 0 = w' 0 w 0 = w' 1) t = SteinerTag.root t' = SteinerTag.vertex w 0 = w 1 (∀ (a : A), w 0 a) w' 0 = w' 1
                Dependency graph
                Dependency graph
                Dependency graph
                @[simp]
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph

                A marked point of the interpreted structure is a vertex point.

                Dependency graph
                theorem DescriptiveComplexity.steiner_terminal_shape {A : Type} [FirstOrder.Language.markedGraph.Structure A] [LinearOrder A] {p : steinerInterp.Map A} (h : STTerminal p) :
                (∃ (u : A) (v : A), p = ePt u v MGAdj u v u v) ∃ (r : A), p = rPt r ∀ (a : A), r a

                A terminal of the interpreted structure is an edge point or the root.

                Dependency graph

                Counting on the vertex points #

                theorem DescriptiveComplexity.ncard_vPt_eq {A : Type} (P : AProp) (Q : steinerInterp.Map AProp) (hshape : ∀ (p : steinerInterp.Map A), Q p∃ (v : A), p = vPt v) (hP : ∀ (v : A), Q (vPt v) P v) :
                {p : steinerInterp.Map A | Q p}.ncard = {v : A | P v}.ncard

                A predicate holding only of vertex points encodes the same number as its restriction to the vertices.

                Dependency graph

                Correctness #

                Correctness of the interpretation: a graph has a vertex cover at most as large as its marked set iff the associated incidence structure has a Steiner tree of the same budget.

                Dependency graph

                Vertex Cover ordered-FO-reduces to Steiner Tree: the edges become the terminals, the vertices the available Steiner points, and the minimum of a spare copy the root joining them all.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  Dependency graph

                  The edge-weighted variant #

                  The same construction, with one clause changed: the marked set must now count k plus one unit per edge point, since a Steiner tree of the incidence structure spends one edge joining each edge point to an endpoint before it can spend anything on the cover. Marking the edge points themselves is exactly that budget, and it needs no arithmetic in the formulas.

                  The interpretation of Vertex Cover into the edge-weighted Steiner Tree: as DescriptiveComplexity.steinerInterp, but the marked set also contains every edge point.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    Dependency graph

                    The vertex point of the edge-weighted interpretation.

                    Equations
                    Instances For
                      Dependency graph

                      The edge point of the edge-weighted interpretation.

                      Equations
                      Instances For
                        Dependency graph

                        The root point of the edge-weighted interpretation.

                        Equations
                        Instances For
                          Dependency graph
                          Dependency graph
                          theorem DescriptiveComplexity.steinerE_adj_iff {A : Type} [FirstOrder.Language.markedGraph.Structure A] [LinearOrder A] (t t' : SteinerTag) (w w' : Fin 2A) :
                          STAdj (t, w) (t', w') t = SteinerTag.vertex t' = SteinerTag.edge w 0 = w 1 (MGAdj (w' 0) (w' 1) w' 0 w' 1) (w 0 = w' 0 w 0 = w' 1) t = SteinerTag.root t' = SteinerTag.vertex w 0 = w 1 (∀ (a : A), w 0 a) w' 0 = w' 1
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph
                          Dependency graph

                          Correctness of the edge-weighted reduction #

                          The edge points of the interpreted structure: what the marked set pays for before any cover.

                          Equations
                          Instances For
                            Dependency graph
                            Dependency graph
                            Dependency graph

                            The marked set of the interpreted structure is one unit per edge point, plus the marked vertices.

                            Dependency graph

                            Correctness of the edge-weighted interpretation: a graph has a vertex cover at most as large as its marked set iff the associated incidence structure has an edge-weighted Steiner tree within the enlarged budget.

                            Dependency graph

                            Vertex Cover ordered-FO-reduces to the edge-weighted Steiner Tree: Karp's original reading of the problem, with the budget enlarged by one unit per edge point – the price of attaching each terminal to the tree.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              Dependency graph