Dado:
- Un número natural S .
- Una lista de N pesos ponderales W que suman 1.
Devuelve una lista L de N enteros no negativos, de modo que:
(1) sum(L) = S
(2) sum((S⋅W_i - L_i)^2) is minimal
En otras palabras, aproxima S⋅W_is con números enteros lo más cerca posible.
Ejemplos:
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]
Reglas:
- Puede usar cualquier formato de entrada, o simplemente proporcionar una función que acepte la entrada como argumentos.
Antecedentes:
Este problema surge cuando se muestran S de diferentes tipos de elementos en diferentes proporciones W i con respecto a los tipos.
Otro ejemplo de este problema es la representación política proporcional, ver la paradoja de la distribución . Los dos últimos casos de prueba se conocen como la paradoja de Alabama.
Como estadístico, reconocí este problema como equivalente a un problema encontrado en la identificación de tamaños de muestra al realizar una muestra estratificada. En esa situación, queremos hacer que la proporción de cada estrato en la muestra sea igual a la proporción de cada estrato en la población. - @tomi
round(A + B) != round(A) + round(B)una solución corta requiere una idea de lo que está sucediendo aquí.
L[i] - S*W[i]cuadrado, en lugar de la regla 2 y la regla 3. Esto sería aproximado S*W[i].
[0 1 2 2] es otra posible solución para5 [0.1 0.2 0.3 0.4]