The Conflict Graphs of an Instance
Lax117284.ConflictGraph · concepts/Lax117284/ConflictGraph.lean · lax-117284
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Definition
Let be an instance with clients and days. The day conflict graph of is the graph on the clients in which two clients are adjacent if their jobs of day conflict. The overall conflict graph of is the graph on the clients in which two clients are adjacent if their jobs conflict on at least one day; its edge set is the union of the edge sets of the daily graphs.
A day's conflict graph is the intersection graph of that day's intervals, so it is an interval graph. The observation the results of the source rest on is that a set of clients can be served on day exactly when it is an independent set of the day conflict graph: a schedule is feasible if and only if each of its days is independent in that day's graph.
The treewidth of the overall conflict graph is the structural parameter measured in the last section of the source, and it is the archive's treewidth.
Concept map
In the paper
- page 1 of this submission's paper
Lean source view on GitHub
| 1 | import Lax117284.Scheduling |
| 2 | import Lax228581.Treewidth |
| 3 | import Mathlib.Combinatorics.SimpleGraph.Clique |
| 4 | |
| 5 | /-! |
| 6 | --- |
| 7 | title: The Conflict Graphs of an Instance |
| 8 | type: definition |
| 9 | --- |
| 10 | Let be an instance with clients and days. The *day conflict graph* of |
| 11 | is the graph on the clients in which two clients are adjacent if their jobs of day |
| 12 | conflict. The *overall conflict graph* of is the graph on the clients in which two |
| 13 | clients are adjacent if their jobs conflict on at least one day; its edge set is the union |
| 14 | of the edge sets of the daily graphs. |
| 15 | |
| 16 | A day's conflict graph is the intersection graph of that day's intervals, so it is an |
| 17 | interval graph. The observation the results of the source rest on is that a set of clients |
| 18 | can be served on day exactly when it is an independent set of the day conflict |
| 19 | graph: a schedule is feasible if and only if each of its days is independent in that day's |
| 20 | graph. |
| 21 | |
| 22 | The treewidth of the overall conflict graph is the structural parameter measured in |
| 23 | the last section of the source, and it is the archive's treewidth. |
| 24 | |
| 25 | # Formalization Notes |
| 26 | |
| 27 | Both graphs are irreflexive by construction, the adjacency conjoining distinctness of the |
| 28 | two clients: a job always conflicts with itself, which carries no information about the |
| 29 | instance. |
| 30 | |
| 31 | Interval graphs are not defined here. A day's conflict graph is an interval graph by |
| 32 | construction, and the only property of interval graphs that is used is that such a graph |
| 33 | can be coloured with as many colours as its largest clique has vertices, which is a |
| 34 | statement about these graphs and is proved as one. |
| 35 | -/ |
| 36 | |
| 37 | namespace Lax117284.ConflictGraph |
| 38 | |
| 39 | open Lax117284.Scheduling |
| 40 | |
| 41 | /-- Conflict is a symmetric relation: the two jobs share a time point either way. -/ |
| 42 | theorem conflict_symm {I : Instance} {i : Fin I.days} {j j' : Fin I.clients} |
| 43 | (h : I.Conflict i j j') : I.Conflict i j' j := |
| 44 | let ⟨t, ht⟩ := h; ⟨t, ht.2, ht.1⟩ |
| 45 | |
| 46 | variable (I : Instance) |
| 47 | |
| 48 | /-- **The day `i` conflict graph** of `I`: two distinct clients are adjacent when their |
| 49 | jobs of day `i` conflict. -/ |
| 50 | def dayGraph (i : Fin I.days) : SimpleGraph (Fin I.clients) where |
| 51 | Adj j j' := j ≠ j' ∧ I.Conflict i j j' |
| 52 | symm := ⟨fun _ _ h => ⟨h.1.symm, conflict_symm h.2⟩⟩ |
| 53 | loopless := ⟨fun _ h => h.1 rfl⟩ |
| 54 | |
| 55 | /-- **The overall conflict graph** of `I`: two distinct clients are adjacent when their |
| 56 | jobs conflict on some day. -/ |
| 57 | def overallGraph : SimpleGraph (Fin I.clients) where |
| 58 | Adj j j' := j ≠ j' ∧ ∃ i, I.Conflict i j j' |
| 59 | symm := ⟨fun _ _ h => ⟨h.1.symm, h.2.imp fun _ => conflict_symm⟩⟩ |
| 60 | loopless := ⟨fun _ h => h.1 rfl⟩ |
| 61 | |
| 62 | /-- The treewidth `τ` of the overall conflict graph of `I`. -/ |
| 63 | noncomputable def treewidth : ℕ := Lax228581.Treewidth.treewidth (overallGraph I) |
| 64 | |
| 65 | /-- **A schedule is feasible exactly when every day's set of clients is an independent set |
| 66 | of that day's conflict graph.** -/ |
| 67 | axiom feasible_iff_isIndepSet {I : Instance} (σ : I.Schedule) : |
| 68 | Instance.Feasible σ ↔ ∀ i, (dayGraph I i).IsIndepSet (σ i : Set (Fin I.clients)) |
| 69 | |
| 70 | end Lax117284.ConflictGraph |
| 71 |
Formalization Notes
Both graphs are irreflexive by construction, the adjacency conjoining distinctness of the two clients: a job always conflicts with itself, which carries no information about the instance.
Interval graphs are not defined here. A day's conflict graph is an interval graph by construction, and the only property of interval graphs that is used is that such a graph can be coloured with as many colours as its largest clique has vertices, which is a statement about these graphs and is proved as one.
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments