TightLPT #
Graham's family: optimum 3m, LPT makespan 4m − 1.
The pairing τ' (j ↦ min (j, 2m − 1 − j)) of the first 2m jobs has every load 3m − 1
before index 2m.
Graham's instance is listed in nonincreasing order.
theorem
GrahamLPT.tg_loadBefore_two_mul
(m : ℕ)
[NeZero m]
(σ : Fin (2 * m + 1) → Fin m)
(hσ : IsListSchedule (grahamJobs m) σ)
(i : Fin m)
:
Every list schedule of Graham's instance in its own order has every load 3m − 1 after the
first 2m jobs
(the key lemma at T = 3m − 1, then the sum m(3m − 1)).
theorem
GrahamLPT.tg_listSchedule_makespan
(m : ℕ)
[NeZero m]
(σ : Fin (2 * m + 1) → Fin m)
(hσ : IsListSchedule (grahamJobs m) σ)
:
Every list schedule of Graham's instance in its own order has makespan 4m − 1.
theorem
GrahamLPT.tg_comp_eq
(m : ℕ)
(π : Equiv.Perm (Fin (2 * m + 1)))
(h : Antitone (grahamJobs m ∘ ⇑π))
:
An antitone relabeling of Graham's instance leaves the lengths unchanged
(Tuple.unique_antitone).
Graham's instance has optimal makespan 3m.
theorem
GrahamLPT.grahamJobs_lpt_makespan
(m : ℕ)
[NeZero m]
(σ : Fin (2 * m + 1) → Fin m)
(hσ : IsLPTSchedule (grahamJobs m) σ)
:
Every LPT schedule of Graham's instance has makespan 4m − 1: the bound 4/3 − 1/(3m) is
attained for every m.