Paper
Max Independent Set Remains NP-hard when Excluding a Planar Induced Minor
8 pages · 15 marked passages · pdflatex · download PDF · lax-222097
-
Independent Set without a 5×5 induced grid minor
Deciding whether a graph has an independent set of size at least is NP-hard even when the graph excludes the grid as an induced minor. Consequently, Maximum Independent Set is NP-hard on this class.
1 import Lax222097.Grid 2 import Lax222097.GraphProblems 3 … module docstring, 9 lines 13 14 namespace Lax222097.IndependentSetHardness 15 16 open GraphProblems Grid 17 18 axiom independentSet_inducedGrid_hardness : 19 NPHardOn IndependentSet (ExcludesInducedGrid 5) 20 21 end Lax222097.IndependentSetHardness 22 -
Maximum cuts
For a graph on an ordered vertex set, each edge is represented once, by its endpoints . A cut is specified by a subset of vertices; its size is the number of edges with exactly one endpoint in . is the largest such size, with value zero for an edgeless graph.
1 import Lax222097.GraphEncoding 2 … module docstring, 11 lines 14 15 namespace Lax222097.MaxCut 16 17 open scoped Classical 18 19 open Finset 20 21 /-- All edges, each listed once with its smaller endpoint first. -/ 22 noncomputable def edges {n : ℕ} (F : SimpleGraph (Fin n)) : 23 Finset (Fin n × Fin n) := 24 univ.filter fun e => e.1 < e.2 ∧ F.Adj e.1 e.2 25 26 /-- The number of edges crossing between `S` and its complement. -/ 27 noncomputable def cutSize {n : ℕ} (F : SimpleGraph (Fin n)) 28 (S : Finset (Fin n)) : ℕ := 29 ((edges F).filter fun e => 30 (e.1 ∈ S ∧ e.2 ∉ S) ∨ (e.1 ∉ S ∧ e.2 ∈ S)).card 31 32 /-- The largest cut size over all subsets of vertices. -/ 33 noncomputable def maxCut {n : ℕ} (F : SimpleGraph (Fin n)) : ℕ := 34 (univ : Finset (Fin n)).powerset.sup (cutSize F) 35 36 end Lax222097.MaxCut 37 -
Independent Set without a 5×5 induced grid minor
Deciding whether a graph has an independent set of size at least is NP-hard even when the graph excludes the grid as an induced minor. Consequently, Maximum Independent Set is NP-hard on this class.
1 import Lax222097.Grid 2 import Lax222097.GraphProblems 3 … module docstring, 9 lines 13 14 namespace Lax222097.IndependentSetHardness 15 16 open GraphProblems Grid 17 18 axiom independentSet_inducedGrid_hardness : 19 NPHardOn IndependentSet (ExcludesInducedGrid 5) 20 21 end Lax222097.IndependentSetHardness 22 -
Compose the reduction from Max Cut with the graph construction. Exclusion of the induced grid minor gives the target class. The independence-number identity gives equivalence after shifting the threshold.
-
Row and column graphs
For a row set and columns, the graph has vertices . Each column induces a complete bipartite graph between its two sides. Within a row, every vertex is adjacent to both vertices in each consecutive column. There are no other edges.
1 import Mathlib.Combinatorics.SimpleGraph.Basic 2 … module docstring, 11 lines 14 15 namespace Lax222097.ColumnGraph 16 17 open SimpleGraph 18 19 abbrev Vertex (R : Type*) (c : ℕ) := R × Fin c × Bool 20 21 def columnGraph (R : Type*) (c : ℕ) : SimpleGraph (Vertex R c) := 22 fromRel fun (row, column, side) (row', column', side') => 23 (column = column' ∧ side ≠ side') ∨ 24 (row = row' ∧ (column.val + 1 = column'.val ∨ column'.val + 1 = column.val)) 25 26 end Lax222097.ColumnGraph 27 -
The Bonnet–Chang reduction
Order the vertices of as . For every edge with , reserve rows and in an intermediate graph with columns. Keep only columns from through . In row keep only side at column and side at column ; keep both sides at every intervening column. The resulting induced subgraph is .
The additive offset is .
1 import Lax222097.ColumnGraph 2 import Lax222097.MaxCut 3 … module docstring, 13 lines 17 18 namespace Lax222097.Reduction 19 20 open ColumnGraph MaxCut 21 22 abbrev Edge {n : ℕ} (F : SimpleGraph (Fin n)) := 23 {e : Fin n × Fin n // e.1 < e.2 ∧ F.Adj e.1 e.2} 24 25 abbrev Row {n : ℕ} (F : SimpleGraph (Fin n)) := Edge F × Bool 26 27 abbrev Vertex {n : ℕ} (F : SimpleGraph (Fin n)) := 28 ColumnGraph.Vertex (Row F) (2 * n - 1) 29 30 def retainedVertices {n : ℕ} (F : SimpleGraph (Fin n)) : Set (Vertex F) := 31 fun ((edge, tag), column, side) => 32 let u := edge.val.1.val 33 let v := edge.val.2.val 34 let j := column.val 35 (j = 2 * u ∧ side = tag) ∨ 36 (2 * u < j ∧ j < 2 * v) ∨ 37 (j = 2 * v ∧ side = !tag) 38 39 def reductionGraph {n : ℕ} (F : SimpleGraph (Fin n)) : 40 SimpleGraph (retainedVertices F) := 41 (columnGraph (Row F) (2 * n - 1)).induce (retainedVertices F) 42 43 noncomputable def offset {n : ℕ} (F : SimpleGraph (Fin n)) : ℕ := 44 2 * ∑ e ∈ edges F, (e.2.val - e.1.val) 45 46 end Lax222097.Reduction 47 -
Induced grid exclusion in row and column graphs
Every row and column graph excludes the grid as an induced minor.
1 import Lax222097.ColumnGraph 2 import Lax222097.Grid 3 … module docstring, 7 lines 11 12 namespace Lax222097.ColumnGridExclusion 13 14 open ColumnGraph Grid 15 16 axiom columnGraph_excludes_inducedGrid (R : Type*) (c : ℕ) : 17 ExcludesInducedGrid 5 (columnGraph R c) 18 19 end Lax222097.ColumnGridExclusion 20 -
Apply the general obstruction to the explicit triple of cycles in the grid.
-
Asteroidal triples of cycles
An asteroidal triple of cycles consists of three vertex-disjoint, pairwise nonadjacent cycles such that every pair is joined by a path avoiding the closed neighborhood of the third.
1 import Mathlib.Combinatorics.SimpleGraph.Paths 2 … module docstring, 9 lines 12 13 namespace Lax222097.AsteroidalCycles 14 15 open SimpleGraph 16 17 def AvoidsClosedNeighborhood {V : Type*} (G : SimpleGraph V) 18 (S T : Set V) : Prop := 19 ∀ x ∈ S, ∀ y ∈ T, x ≠ y ∧ ¬ G.Adj x y 20 21 def HasAsteroidalCycleTriple {V : Type*} (G : SimpleGraph V) : Prop := 22 ∃ (base : Fin 3 → V) (cycle : ∀ i, Walk G (base i) (base i)), 23 (∀ i, (cycle i).IsCycle) ∧ 24 (Pairwise fun i j => AvoidsClosedNeighborhood G 25 {v | v ∈ (cycle i).support} {v | v ∈ (cycle j).support}) ∧ 26 (∀ i j k, i ≠ j → i ≠ k → j ≠ k → 27 ∃ u ∈ (cycle i).support, ∃ v ∈ (cycle j).support, 28 ∃ p : Path G u v, AvoidsClosedNeighborhood G 29 {x | x ∈ p.val.support} {x | x ∈ (cycle k).support}) 30 31 end Lax222097.AsteroidalCycles 32 -
Asteroidal cycle triples obstruct induced minors
No graph containing an asteroidal triple of cycles is an induced minor of a row and column graph. The grid contains such a triple.
1 import Lax222097.AsteroidalCycles 2 import Lax222097.ColumnGraph 3 import Lax222097.Grid 4 … module docstring, 8 lines 13 14 namespace Lax222097.CycleObstruction 15 16 open AsteroidalCycles ColumnGraph Grid InducedMinors 17 18 axiom asteroidalCycles_obstruction (R W : Type*) (c : ℕ) (H : SimpleGraph W) 19 (hH : HasAsteroidalCycleTriple H) : 20 ¬ IsInducedMinor H (columnGraph R c) 21 22 axiom grid_five_has_asteroidalCycles : HasAsteroidalCycleTriple (squareGrid 5) 23 24 end Lax222097.CycleObstruction 25 -
Asteroidal cycle triples obstruct induced minors
No graph containing an asteroidal triple of cycles is an induced minor of a row and column graph. The grid contains such a triple.
1 import Lax222097.AsteroidalCycles 2 import Lax222097.ColumnGraph 3 import Lax222097.Grid 4 … module docstring, 8 lines 13 14 namespace Lax222097.CycleObstruction 15 16 open AsteroidalCycles ColumnGraph Grid InducedMinors 17 18 axiom asteroidalCycles_obstruction (R W : Type*) (c : ℕ) (H : SimpleGraph W) 19 (hH : HasAsteroidalCycleTriple H) : 20 ¬ IsInducedMinor H (columnGraph R c) 21 22 axiom grid_five_has_asteroidalCycles : HasAsteroidalCycleTriple (squareGrid 5) 23 24 end Lax222097.CycleObstruction 25 -
no assumptions
Each cycle's branch sets contain opposite sides of a column. The three columns are distinct. The middle column is contained in the middle cycle's closed neighborhood and separates the other two cycles, contradicting their avoiding path.
-
Induced grid exclusion in the reduction
For every finite simple graph , the reduction graph excludes the grid as an induced minor.
1 import Lax222097.Reduction 2 import Lax222097.Grid 3 … module docstring, 8 lines 12 13 namespace Lax222097.GridExclusion 14 15 open Grid Reduction 16 17 axiom reduction_excludes_inducedGrid {n : ℕ} (F : SimpleGraph (Fin n)) : 18 ExcludesInducedGrid 5 (reductionGraph F) 19 20 end Lax222097.GridExclusion 21 -
The independence number records the maximum cut
For every finite simple graph , . An independent set chooses at most one side in each column and so determines a cut of (empty columns may be assigned either side). The two rows for an edge contribute at most vertices, and at most when its endpoints lie on the same side. Conversely, every cut realizes the sum of these bounds.
1 import Lax222097.Reduction 2 … module docstring, 13 lines 16 17 namespace Lax222097.IndependenceIdentity 18 19 open Reduction MaxCut 20 21 axiom independence_eq_maxCut_offset {n : ℕ} (F : SimpleGraph (Fin n)) : 22 (reductionGraph F).indepNum = maxCut F + offset F 23 24 end Lax222097.IndependenceIdentity 25 -
no assumptions
Every independent set induces a cut, with at most the stated number of vertices in each edge's two rows. Conversely, the explicit construction from a maximum cut realizes the bound, including the additional vertex for each crossing edge.