Dato:
- Un numero naturale S .
- Un elenco di N pesi razionali W che si sommano a 1.
Restituisce un elenco L di N numeri interi non negativi, in modo che:
(1) sum(L) = S
(2) sum((S⋅W_i - L_i)^2) is minimal
In altre parole, approssimare S⋅W_i
s con numeri interi il più vicino possibile.
Esempi:
1 [0.4 0.3 0.3] = [1 0 0]
3 [0 1 0] = [0 3 0]
4 [0.3 0.4 0.3] = [1 2 1]
5 [0.3 0.4 0.3] = [2 2 1] or [1 2 2] but not [1 3 1]
21 [0.3 0.2 0.5] = [6 4 11]
5 [0.1 0.2 0.3 0.4] = [1 1 1 2] or [0 1 2 2]
4 [0.11 0.3 0.59] = [1 1 2]
10 [0.47 0.47 0.06] = [5 5 0]
10 [0.43 0.43 0.14] = [4 4 2]
11 [0.43 0.43 0.14] = [5 5 1]
Regole:
- È possibile utilizzare qualsiasi formato di input o fornire semplicemente una funzione che accetta l'input come argomenti.
Sfondo:
Questo problema si presenta quando si visualizzano S dei diversi tipi di elementi in proporzioni diverse W i in relazione ai tipi.
Un altro esempio di questo problema è la rappresentanza politica proporzionale, si veda il paradosso della ripartizione . Gli ultimi due casi di test sono noti come paradosso dell'Alabama.
Come statistico, ho riconosciuto questo problema come equivalente a un problema riscontrato nell'identificare le dimensioni del campione durante la conduzione di un campione stratificato. In quella situazione, vogliamo rendere la proporzione di ogni strato nel campione uguale alla proporzione di ogni strato nella popolazione. - @tomi
round(A + B) != round(A) + round(B)
, una breve soluzione richiede una visione di ciò che sta accadendo qui.
L[i] - S*W[i]
quadrato, invece della regola 2 e della regola 3. Questo sarebbe approssimativo S*W[i]
.
[0 1 2 2]
è un'altra possibile soluzione per5 [0.1 0.2 0.3 0.4]