Documentation

DescriptiveComplexity.Problems.Feedback.CountingArcHardness

#Feedback Arc Set is parsimoniously #P-complete #

DescriptiveComplexity.sharpFeedbackArcSet_sharpP_parsimoniousComplete, by a reduction from #1-in-SAT (DescriptiveComplexity.sharpOneInSat_ordered_parsimonious_sharpFeedbackArcSet).

The reduction is the composite of two interpretations, and the second is correct only on the outputs of the first:

So this is not a reduction from #Clique: on a graph with a clique above the threshold the second interpretation counts too much, a feedback arc set being free to waste arcs. A composition under a promise is what DescriptiveComplexity.OrderedParsimoniousReduction.transPromise provides.

The tagged pairs that are no vertex of the split graph are isolated, and an isolated vertex changes nothing to a set of arcs (DescriptiveComplexity.fasOfSizeOnEmbEquiv): no domain formula is needed.

Feedback arc sets ignore isolated vertices #

The interpretation #

Tags of the interpretation: the kinds of vertices of the conflict split graph.

  • vin : SBTag

    The entry copy of a vertex, at diagonal pairs.

  • vout : SBTag

    The exit copy of a vertex, at diagonal pairs.

  • mid (j : Bool) : SBTag

    The middle of one of the two paths from the first component to the second.

Instances For
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph

    x and y are in conflict, as a formula.

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

      The arc formulas of the conflict split graph, by tags. The free variable (i, j) is the j-th component of the i-th vertex.

      Equations
      Instances For
        Dependency graph

        The mark formulas, by tags: the internal arcs of the unmarked vertices.

        Equations
        Instances For
          Dependency graph

          The interpretation drawing the conflict split graph of a marked graph.

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

            The interpreted graph is the conflict split graph, plus isolated points #

            theorem DescriptiveComplexity.CliqueFas.sharpFeedbackArcSet_cliqueFas (H : Type) [FirstOrder.Language.markedGraph.Structure H] [Finite H] (hprom : (¬∃ (z : H), MGMarked z) ∨ ∀ (S : H → Prop), (∀ (x y : H), S x → S y → x ≠ y → MGAdj x y) → {x : H | S x}.ncard ≤ {x : H | MGMarked x}.ncard) :

            Correctness of the interpretation, under the promise: on a marked graph with no marked vertex, or with no clique larger than its marked set, the feedback arc sets of the threshold size of the conflict split graph are as many as the cliques of the threshold size.

            Dependency graph

            The promise, and a composition under it #

            The clique instance of a CNF formula has no clique larger than its marked set, as soon as it has a marked vertex: a clique with two vertices fills distinct slots, and one vertex is no more than two per clause.

            Dependency graph

            An order-free interpretation, over the ordered expansion: its formulas ignore the order.

            Equations
            Instances For
              Dependency graph
              def DescriptiveComplexity.FOInterpretation.liftOrdLEquiv {L₂ L₃ : FirstOrder.Language} [L₃.IsRelational] {Tag : Type} {d : ℕ} (f : FOInterpretation L₂ L₃ Tag d) (A : Type) [L₂.Structure A] [LinearOrder A] :
              L₃.Equiv (f.Map A) (f.liftOrd.Map A)

              Lifting an interpretation to the ordered expansion does not change the structure it defines.

              Equations
              Instances For
                Dependency graph
                noncomputable def DescriptiveComplexity.OrderedParsimoniousReduction.transPromise {L₁ L₂ L₃ : FirstOrder.Language} [L₁.IsRelational] [L₂.IsRelational] [L₃.IsRelational] {C : CountingProblem L₁} {D : CountingProblem L₂} {E : CountingProblem L₃} (g : OrderedParsimoniousReduction C D) {Tag : Type} [Finite Tag] [Nonempty Tag] {d : ℕ} (f : FOInterpretation L₂ L₃ Tag d) (hf : ∀ (A : Type) [inst : L₁.Structure A] [inst_1 : LinearOrder A] [Finite A] [Nonempty A], D.Count (g.toInterpretation.Map A) = E.Count (f.Map (g.toInterpretation.Map A))) :

                Composition under a promise: an ordered parsimonious reduction followed by an interpretation that is only known to preserve the count on the outputs of the reduction. This is what a reduction through instances with no slack needs, the second step being wrong on the others.

                Equations
                Instances For
                  Dependency graph

                  #1-in-SAT reduces parsimoniously to #Feedback Arc Set: the clique instance of the formula, then its conflict split graph.

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

                    #Feedback Arc Set is parsimoniously #P-complete, counting the feedback arc sets of exactly the threshold size. Registered in the Lax archive as Lax280166.FeedbackArcSetComplete.sharpFeedbackArcSet_sharpP_parsimoniousComplete.

                    Dependency graph

                    SharpFeedbackArcSet is #P-complete: parsimoniously, hence under subtractive reductions.

                    Dependency graph