¿Cuál es el problema de partición y cómo lo resolvemos?

El problema de la partición se puede describir de la siguiente manera:

Dado un conjunto de N números, divida este conjunto en dos subconjuntos, s1 y s2, de modo que el valor absoluto de la diferencia entre la suma de los elementos de s1 y la suma de los elementos de s2 sea mínimo.

Sinteticamente: Minimiza los abdominales (sum (s1) – sum (s2))

Este problema puede parecer fácil de resolver instintivamente para un conjunto de tamaño pequeño, pero en realidad es bastante difícil de resolver cuando el conjunto es grande, debido a su complejidad no polinómica.

Un enfoque factible para resolver este problema para un conjunto grande es utilizar un algoritmo genético, con los individuos modelados como matrices binarias de tamaño N, donde ‘ceros’ significa que los números del conjunto original que están indexados por los mismos índices donde estos ‘ceros’ se encuentran presentes en el conjunto s1, y ‘unos’ significan que esos números están presentes en s2.

Luego, la evolución de estos individuos mediante la aplicación de un algoritmo genético tiende a dar como resultado una solución óptima al problema.