Я думаю, что хорошая метрика будет:
let the result set be s1,s2,...,sk
let MAX be max{sum(si) for each i}
f({s1,...,sk}) = Sigma(MAX-sum(si)) for each i)
верх: идеальное распределение будет всегда 0!
недостаток: если нет идеального решения, лучший результат не даст 0.
жадная эвристика для этой проблемы будет:
sorted<-sort(S) (let's say sorted[0] is the highest)
s1=s2=...=sk= {}
for each x in sorted:
s <- find_min() (*)
s.add(x)
где find_min () даетs такое, что sum (s) <= sum (si) для каждого si. </p>
это решение даст f (метрики, определенные выше), такие что f(sol) <= (k-1)*max{S}
(отсюда это доказательство для этой границы):
требование : для каждого подмножества s, MAX- sum(s) <= max{S}
доказательство - по индукции: на каждом шаге утверждение верно для временногорешение.
на каждом шаге, пусть MAX будет max {sum (si)} в начале итерации (перед сложением)!
base: the set of subsets at start is {},{},.. MAX=sum(si)=0 for each si.
step: assume the assumption is true for iteration i, we'll show it is also true for iteration i+1:
let s be the set that x was added to, then MAX-sum(s) <= max{S} (induction assumption).
if sum(s) + x <= MAX: we are done, MAX was not changed.
else: we sorted the elements at start, so x <= max{S}, and thus if s was chosen
(sum(si) >= sum(s) for each si) and sum(s) + x > MAX then: for each si, sum(si) + x >=
sum(s) + x, so sum(s)+x - sum(si) <= x <= max{S}. since sum(s)+x will be the MAX next
iteration, we are done.
, потому что для каждого набора MAX-sum(si) <= max{S}
(и, очевидно, длямаксимальное значение, MAX-sum(si)=0
), в целом Sigma(MAX-sum(si)) <= (k-1)*max{S}
, как и было обещано.
РЕДАКТИРОВАТЬ:
У меня было немного свободного времени, поэтому я запрограммировал обе эвристики, предложенные мной ипо @Akhil, и обе метрики, во-первых, оба результата являются окончательными (в соответствии с парным t-тестом Wilcoxon ), но что лучше, определяется тем, какую метрику вы выбираете, как ни странно, алгоритмкоторый попытался минимизировать f () (@ Akhil`s), набрал меньше для этого же f, но выше для второй метрики.