Finite k-server minimax game with stopping and an arbitrary prefix payoff
DefinitionKServer_finite_gameFix a positive number of servers , a metric space , a finite request set , and a real-valued function on request histories. For a history , current configuration , and remaining horizon , define the finite game value by
and, when is nonempty,
For , every value is . Here appends the request , and moves only server onto .
The adversary may stop at any prefix. If it continues, it chooses the request before the algorithm chooses which server to move. All extrema are over finite nonempty sets where they are used. Thus the definition assigns a finite real value even when the ambient metric space is infinite or unbounded.
The intended payoff is movement cost minus at the stopping history. Taking gives a scalar formulation of the finite-horizon competitive guarantee. The characterization of this value by online algorithms is a separate theorem; the uniform boundedness of the competitive values is still conjectural.
import Definitions.Def_KServer_model
set_option autoImplicit false
namespace KServer
/-- The exact finite lazy game with stopping payoff `-b l`. The adversary can
stop at any prefix, or request `r ∈ P`; the algorithm then chooses a server.
The argument `n` is the number of requests still available. -/
noncomputable def finiteGameValue {k : ℕ} (hk : 1 ≤ k) {M : Type}
[MetricSpace M] (P : Finset M) (b : List M → ℝ) :
ℕ → List M → Config k M → ℝ := by
classical
exact fun n => Nat.rec
(fun l _ => -b l)
(fun _ V l C => if hP : P.Nonempty then
max (-b l) (P.sup' hP (fun r =>
Finset.univ.inf' ⟨⟨0, hk⟩, Finset.mem_univ _⟩
(fun i => dist (C i) r + V (l ++ [r]) (Function.update C i r))))
else -b l) n
end KServer