Perfect graphs
DefinitionPerfect graph#✓fully proved
A finite simple graph \(G\) is perfect if, for every set \(S\) of its vertices, the induced subgraph \(G[S]\) has chromatic number equal to its clique number, the largest size of a clique in \(G[S]\).
def IsPerfect {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ (s : Set V), (G.induce s).chromaticNumber = ((G.induce s).cliqueNum : ℕ∞)
DefinitionGasparian's condition (P)#✓fully proved
A finite simple graph \(G\) satisfies condition (P) if, for every set \(S\) of its vertices, the induced subgraph \(G[S]\), with independence number \(\alpha(G[S])\) and clique number \(\omega(G[S])\), satisfies \(|S| \le \alpha(G[S]) \cdot \omega(G[S])\).
def PerfIneq {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ s : Finset V, s.card ≤ (G.induce (↑s : Set V)).indepNum * (G.induce (↑s : Set V)).cliqueNum
Used by 2
TheoremPerfect graphs satisfy condition (P)#✓fully proved
Every finite perfect graph \(G\) satisfies Gasparian's condition (P): for every set \(S\) of its vertices, the induced subgraph \(G[S]\), with independence number \(\alpha(G[S])\) and clique number \(\omega(G[S])\), satisfies \(|S| \le \alpha(G[S]) \cdot \omega(G[S])\).
Indeed, \(G[S]\) has a coloring with \(\omega(G[S])\) colors, and each color class is an independent set, so it has at most \(\alpha(G[S])\) vertices.
theorem perfect_implies_ineq {V : Type*} [Fintype V]
(G : SimpleGraph V) (hG : IsPerfect G) : PerfIneq G
def IsPerfect {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ (s : Set V), (G.induce s).chromaticNumber = ((G.induce s).cliqueNum : ℕ∞)
MathlibExt/Combinatorics/SimpleGraph/PerfectGraph.lean:33
def PerfIneq {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ s : Finset V, s.card ≤ (G.induce (↑s : Set V)).indepNum * (G.induce (↑s : Set V)).cliqueNum
MathlibExt/Combinatorics/SimpleGraph/PerfectGraph.lean:37
Uses 2 · Used by 1
TheoremWeak perfect graph theorem#✓fully proved
A finite simple graph \(G\) is perfect if and only if its complement \(\overline{G}\) is perfect.
theorem lovasz_weak_perfect_graph_general
{V : Type*} [Fintype V]
(G : SimpleGraph V) : IsPerfect G ↔ IsPerfect Gᶜ
def IsPerfect {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ (s : Set V), (G.induce s).chromaticNumber = ((G.induce s).cliqueNum : ℕ∞)
MathlibExt/Combinatorics/SimpleGraph/PerfectGraph.lean:33
Uses 3 · Used by 1
TheoremLovász's weak perfect graph theorem#✓fully proved
A finite simple graph \(G\) is perfect if and only if its complement \(\overline{G}\) is perfect.
theorem lovasz_weak_perfect_graph
{V : Type*} [Fintype V] [DecidableEq V]
(G : SimpleGraph V) : IsPerfect G ↔ IsPerfect Gᶜ
def IsPerfect {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ (s : Set V), (G.induce s).chromaticNumber = ((G.induce s).cliqueNum : ℕ∞)
MathlibExt/Combinatorics/SimpleGraph/PerfectGraph.lean:33
Sources
- L. Lovasz, "Normal hypergraphs and the perfect graph conjecture", Discrete Math. 2 (1972), 253-267, DOI 10.1016/0012-365X(72)90006-4.
Uses 2
StructureAdjacency-matrix graph instance#✓fully proved
An instance consists of a natural number \(n\) and a Boolean \(n \times n\) matrix \(A\) with rows and columns indexed by \(\{0, \dots, n-1\}\), read as the adjacency matrix of a graph on the vertices \(0, \dots, n-1\). The matrix is arbitrary; symmetry and the absence of loops are imposed separately by the validity condition.
structure PerfectGraphInstance where
n : Nat
adj : Fin n → Fin n → Bool
n : Nat
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:64
Sources
- [AIM-COMBINATORICS-0270] Source item 4, notes[269], Section A.4.
Used by 3
DefinitionValid adjacency-matrix instance#✓fully proved
An instance with \(n\) vertices and adjacency matrix \(A\) is valid when \(A\) is symmetric, that is, \(A_{yx}\) is true whenever \(A_{xy}\) is true, and has no loops, that is, \(A_{xx}\) is false for every vertex \(x\).
def PerfectGraphInstance.Valid (I : PerfectGraphInstance) : Prop :=
(∀ x y : Fin I.n, I.adj x y = true → I.adj y x = true) ∧
∀ x : Fin I.n, I.adj x x = false
structure PerfectGraphInstance where
n : Nat
adj : Fin n → Fin n → Bool
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:63
Uses 1 · Used by 2
DefinitionGraph of a valid instance#✓fully proved
A valid instance with \(n\) vertices and adjacency matrix \(A\) determines the simple graph on the vertex set \(\{0, \dots, n-1\}\) in which vertices \(x\) and \(y\) are adjacent exactly when \(A_{xy}\) is true.
def PerfectGraphInstance.toSimpleGraph (I : PerfectGraphInstance)
(h : I.Valid) : SimpleGraph (Fin I.n) where
Adj x y := I.adj x y = true
symm := ⟨fun a b hab => h.1 a b hab⟩
loopless := ⟨fun a ha => by simp [h.2 a] at ha⟩
structure PerfectGraphInstance where
n : Nat
adj : Fin n → Fin n → Bool
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:63
Uses 2 · Used by 1
DefinitionThe perfect-graph decision problem#✓fully proved
The decision problem on bitstrings that accepts a bitstring \(x\) exactly when \(x\) decodes, under the bitstring encoding of adjacency-matrix instances, to a valid instance whose graph is perfect. Bitstrings that do not decode to an instance, or decode to an invalid one, are rejected.
noncomputable def perfectGraphProblem :
MetaMathlibExt.ComplexityTheory.DecisionProblem :=
fun l => match MetaMathlibExt.BitstringEncoding.bitDecode
(α := PerfectGraphInstance) l with
| some I => if h : I.Valid then
(if MathlibExt.Combinatorics.SimpleGraph.PerfectGraphWanted.IsPerfect
(I.toSimpleGraph h) then true else false) else false
| none => false
abbrev DecisionProblem := List Bool → Bool
MathlibExt/Computability/Complexity.lean:170
def bitDecode [BitstringEncoding α] (l : List Bool) : Option α := toEncoding.decode l
MathlibExt/Computability/Complexity.lean:58
structure PerfectGraphInstance where
n : Nat
adj : Fin n → Fin n → Bool
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:63
def IsPerfect {V : Type*} [Fintype V] (G : SimpleGraph V) : Prop :=
∀ (s : Set V), (G.induce s).chromaticNumber = ((G.induce s).cliqueNum : ℕ∞)
MathlibExt/Combinatorics/SimpleGraph/PerfectGraph.lean:33
Sources
- [AIM-COMBINATORICS-0270] Source item 4, notes[269], Section A.4.
Uses 13 · Used by 1
DefinitionEdmonds's question: an NP description of perfect graphs#✓fully proved
The perfect-graph decision problem, which accepts exactly the bitstrings that decode to a valid adjacency-matrix instance whose graph is perfect, lies in the complexity class NP: there are a polynomial \(p\) with natural-number coefficients and a polynomial-time verifier \(R\) on pairs of bitstrings such that a bitstring \(x\) is accepted if and only if \(R\) accepts \((x, w)\) for some bitstring \(w\) of length at most \(p(|x|)\).
def conjecture : Prop :=
perfectGraphProblem ∈ MetaMathlibExt.ComplexityTheory.NP
noncomputable def perfectGraphProblem :
MetaMathlibExt.ComplexityTheory.DecisionProblem :=
fun l => match MetaMathlibExt.BitstringEncoding.bitDecode
(α := PerfectGraphInstance) l with
| some I => if h : I.Valid then
(if MathlibExt.Combinatorics.SimpleGraph.PerfectGraphWanted.IsPerfect
(I.toSimpleGraph h) then true else false) else false
| none => false
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:108
def NP : DecisionComplexityClass :=
{ L | ∃ (p : Polynomial ℕ), ∃ R : (List Bool × List Bool) → Bool,
IsPolyTime R ∧
∀ x, L x ↔ ∃ w : List Bool, w.length ≤ p.eval x.length ∧ R (x, w) }
MathlibExt/Computability/Complexity.lean:200
Sources
- [AIM-COMBINATORICS-0270] Source item 4, notes[269], Section A.4, Contributor Jack Edmonds.
Uses 4 · Used by 1
TheoremPerfect graphs have an NP description#●ready to prove
The perfect-graph decision problem, which accepts exactly the bitstrings that decode to a valid adjacency-matrix instance whose graph is perfect, lies in the complexity class NP.
Chudnovsky, Cornuéjols, Liu, Seymour and Vušković recognize Berge graphs in polynomial time, and the Strong Perfect Graph Theorem identifies Berge graphs with perfect graphs; hence perfect-graph recognition is in P, and so in NP.
public theorem_wanted conjecture_holds : conjecture
def conjecture : Prop :=
perfectGraphProblem ∈ MetaMathlibExt.ComplexityTheory.NP
WantedExt/Combinatorics/PerfectGraphNPWanted.lean:121
Sources
- Maria Chudnovsky, Gerard Cornuejols, Xinming Liu, Paul Seymour, Kristina Vuskovic, Recognizing Berge graphs, Combinatorica 25 (2005), 143-186, https://doi.org/10.1007/s00493-005-0012-8; Maria Chudnovsky, Neil Robertson, Paul Seymour, Robin Thomas, The strong perfect graph theorem, Annals of Mathematics 164 (2006), 51-229, https://doi.org/10.4007/annals.2006.164.51.
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.