RAM program: best of exact shifted optima for graphs whose BFS bands have tree-width
OpenWilliamsonShmoys.band_treewidth_ram_solverThere is one finite program for the unit-cost real RAM of WilliamsonShmoys_PlanarIndependentSetRAM and constants with the following property. For every integer , every , every adjacency table on with graph and every real weight vector , if for each the graph obtained by deleting the vertices whose BFS level (bakerLevel) is has tree-width at most , then the program, started on the standard input layout with accuracy parameter , reaches a halt instruction after steps with
its output bitmap consists of cells and describes an independent set of , and weighs at least as much as every independent set that avoids one residue class of levels:
This is the algorithmic half of Baker's PTAS (Williamson–Shmoys, Theorem 10.11): compute the BFS levels, and for each shift solve maximum-weight independent set exactly on the bounded-tree-width graph (find a tree decomposition of width , then dynamic programming), finally output the heaviest of the solutions. The hypothesis is purely combinatorial; planarity is not assumed.
import Definitions.Def_WilliamsonShmoys_PlanarIndependentSetRAM import Definitions.Def_WilliamsonShmoys_BakerLevel import Definitions.Def_RobertsonSeymour1986_GM5_TreewidthLE set_option autoImplicit false open scoped BigOperators
namespace WilliamsonShmoys
theorem band_treewidth_ram_solver :
∃ (program : List PlanarRAMInstruction) (C d : ℕ),
0 < C ∧ 0 < d ∧
∀ (k : ℕ), 0 < k →
∀ (n : ℕ) (edge : Fin n → Fin n → Bool) (weight : Fin n → ℝ),
let G := SimpleGraph.fromRel (fun u v => edge u v = true)
(∀ j < k, RobertsonSeymour1986.GM5.TreewidthLE
(G.induce {v : Fin n | bakerLevel G v % k ≠ j}) (3 * k)) →
∃ t : ℕ, t + 1 ≤ C * 2 ^ (d * k) * (n + 1) ^ 2 ∧
let result := planarRAMRun program (planarRAMInput n k edge weight) t
program[result.pc]? = some PlanarRAMInstruction.halt ∧
(∀ i : Fin n, result.natMem (2 + n * n + i.val) ≤ 1) ∧
G.IsIndepSet (planarRAMOutput n result : Set (Fin n)) ∧
∀ j < k, ∀ S : Finset (Fin n), G.IsIndepSet (S : Set (Fin n)) →
(∀ v ∈ S, bakerLevel G v % k ≠ j) →
∑ i ∈ S, weight i ≤ ∑ i ∈ planarRAMOutput n result, weight i := by sorry
end WilliamsonShmoys