partición justa del conjunto S en k particiones

Hay un conjunto S que contiene N enteros, cada uno con valor 1 <= X <= 10 ^ 6. El problema es dividir el conjunto S en k particiones. El valor de una partición es la suma de los elementos presentes en ella. La partición debe hacerse de tal manera que el valor total del conjunto S se distribuya equitativamente entre las k particiones. El significado matemático dejust también necesita ser definido (por ejemplo, el objetivo podría ser minimizar la desviación estándar de los valores de las particiones del valor promedio del conjunto S (que es, suma (S) / k))

p.ej. S = {10, 15, 12, 13, 30, 5}, k = 3

Una buena partición sería {30}, {10, 15}, {12, 13, 5}

Una partición incorrecta sería {30, 5}, {10, 15}, {12, 13}

a primera pregunta es expresar matemáticamente la condición para que una partición sea mejor que la otra. La segunda pregunta es cómo resolver el problema. El problema es NP-Hard. ¿Hay alguna heurística?

En el problema que estoy tratando de resolver N <= (k * logX) ^ 2 y K varía de 2 a 7.

================================================= =================================

Basado en otras preguntas SO relacionadas, hay dos funciones razonables para evaluar una distribución:

a) Minimice el valor de la partición con el valor máximo.

Pensándolo bien, esta no es una buena métrica. Considere un conjunto {100, 40, 40} que se dividirá en tres subconjuntos. Esta métrica no distingue entre las siguientes dos distribuciones, aunque una es claramente mejor que la otra.

Distribución 1: {100}, {40}, {40} y Distribución 2: {100}, {40, 40}, {}

b) Minimice el máximo de la diferencia de cualquiera de los dos valores en una partición dada, es decir, minimice max | A-B | para cualquier A, B

Respuestas a la pregunta(3)

Su respuesta a la pregunta