#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:
DescriptiveComplexity.OneInToClique.oneInToCliquesends a CNF formula to a marked graph whose cliques of the threshold size are its exactly-one models – and which has no larger clique (DescriptiveComplexity.OneInToClique.ncard_clique_le);DescriptiveComplexity.CliqueFas.cliqueFasInterpsends a marked graph to its conflict split graph (DescriptiveComplexity.Problems.Feedback.SplitBundle), whose feedback arc sets of the threshold size are the cliques of the threshold size of the graph provided it has no larger clique (DescriptiveComplexity.CliqueFas.sharpFeedbackArcSet_cliqueFas).
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
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq DescriptiveComplexity.CliqueFas.SBTag.vin DescriptiveComplexity.CliqueFas.SBTag.vin = isTrue ⋯
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq DescriptiveComplexity.CliqueFas.SBTag.vin (DescriptiveComplexity.CliqueFas.SBTag.mid j) = isFalse ⋯
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq DescriptiveComplexity.CliqueFas.SBTag.vout DescriptiveComplexity.CliqueFas.SBTag.vout = isTrue ⋯
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq DescriptiveComplexity.CliqueFas.SBTag.vout (DescriptiveComplexity.CliqueFas.SBTag.mid j) = isFalse ⋯
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq (DescriptiveComplexity.CliqueFas.SBTag.mid j) DescriptiveComplexity.CliqueFas.SBTag.vin = isFalse ⋯
- DescriptiveComplexity.CliqueFas.instDecidableEqSBTag.decEq (DescriptiveComplexity.CliqueFas.SBTag.mid j) DescriptiveComplexity.CliqueFas.SBTag.vout = isFalse ⋯
Instances For
Dependency graph
Dependency graph
Dependency graph
x and y are adjacent, as a formula.
Equations
Instances For
Dependency graph
x = y, as a formula.
Equations
Instances For
Dependency graph
Some vertex is marked, as a formula.
Equations
Instances For
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
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.CliqueFas.arcF x✝¹ x✝ = ⊥
Instances For
Dependency graph
The mark formulas, by tags: the internal arcs of the unmarked vertices.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.CliqueFas.markF x✝¹ x✝ = ⊥
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 #
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
- f.liftOrd = { relFormula := fun {n : ℕ} (R : L₃.Relations n) (t : Fin n → Tag) => FirstOrder.Language.LHom.sumInl.onFormula (f.relFormula R t) }
Instances For
Dependency graph
Lifting an interpretation to the ordered expansion does not change the structure it defines.
Equations
- f.liftOrdLEquiv A = { toEquiv := Equiv.refl (f.Map A), map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
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
#Feedback Arc Set is parsimoniously #P-hard.
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.