Me gustaría aprender algo sobre este problema de optimización: para números enteros no negativos dados , encuentre una función minimice la expresión
Un ejemplo que utilice una formulación diferente podría aclararlo: se le da un conjunto de conjuntos de vectores como
{
{(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
{(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
{(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}
Elija un vector de cada conjunto, de modo que el componente máximo de su suma sea mínimo. Por ejemplo, puedes elegir
(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)
con el componente máximo igual a 2, que es claramente óptimo aquí.
Tengo curiosidad por saber si este es un problema bien conocido y qué métodos de solución aproximada específicos del problema están disponibles. Debe ser rápido y fácil de programar (sin solucionador de ILP , etc.). No se necesita una solución exacta ya que es solo una aproximación del problema real.
Veo que debería haber agregado algunos detalles sobre las instancias del problema que me interesan:
- , es decir, siempre hay 64 filas (cuando se escribe como en el ejemplo anterior).
- , es decir, solo hay 2 vectores por fila.
- donde (la longitud del vector) está entre 10 y 1000.
Además, en cada fila la suma de los elementos de todos los vectores es la misma, es decir,
y la suma de los elementos del vector suma es menor que su longitud, es decir,
fuente
Respuestas:
Reducción de 3SAT a la versión de dos vector: dada una fórmula, deje variables de índice, , y cláusulas de índice. Sea la cantidad de veces que la variable aparece positiva (si ) o negativa (si ) en la cláusula . OPT es menor que si la fórmula es satisfactoria (la biyección es obvia).i j∈{0,1} k ai,j,k i j=0 j=1 k 3
Cómo atacaría este problema: búsqueda de vecindario grande. Comience con cualquier solución. Elija filas al azar. Use la fuerza bruta para encontrar la mejor solución donde pueda cambiar solo en esas filas, muy factible incluso para moderado dado que el tamaño del problema es de filas. Repetir.r f k 64
fuente
No podemos discutir la complejidad de un problema cuando el tamaño del problema se fija a una constante, porque (la mayor parte de) la teoría de la complejidad se ocupa del comportamiento asintótico de la complejidad del problema, ya que el tamaño del problema tiende al infinito. Aquí, considero tanto el número de filas como la dimensión de los vectores como variables.
Entonces el problema es NP-completo incluso si los números en la entrada se dan en unario. Esta no es una respuesta a su pregunta porque está preguntando acerca de la aproximación, pero es algo.
Defina el problema rigurosamente:
Instancia : n pares de vectores a i , b i ∈ ℕ m ( i ∈ {1, ..., n }) y K ∈ ℕ, todos en unario.
Pregunta : ¿Podemos elegir a i o b i para cada i para que la suma de estos n vectores tenga como máximo K en cada coordenada?
El siguiente es un problema conocido de NP-complete llamado 3-partición :
Instancia de 3 particiones : B ∈ ℕ, y 3 k enteros c 1 , ..., c 3 k entre B / 4 y B / 2, exclusivo, de modo que ∑ i = 1 3 k c i = kB , todo en unario.
Pregunta : ¿Se puede dividir el multiset { c 1 , ..., c 3 k } en k multisets S 1 , ..., S k de modo que la suma de cada S j sea igual aB ?
Dada una instancia ( B ; c 1 , ..., c 3 k ) del problema de 3 particiones, construya una instancia del problema anterior de la siguiente manera. Para cada i = 1, ..., 3 k y j = 1, ..., k , construiremos un par de 4 k -dimensionales vectores, representando la elección de si c i pertenece a S j o no:
No es difícil ver que la instancia ( B ; c 1 , ..., c 3 k ) del problema de 3 particiones tiene una solución si y solo si hay una manera de elegir un vector de cada uno de los 3 k 2 construidos parejas, de modo que todas las coordenadas de la suma de estos vectores son a lo sumo ( k -1) B . (De hecho, cuando esto sucede, todas las coordenadas de la suma son iguales a ( k −1) B. ) Entonces, esta es una reducción del problema de 3 particiones al problema anterior.
Hasta ahora, ignoré las dos restricciones adicionales establecidas al final de la pregunta, pero ambas son fáciles de aplicar modificando ligeramente esta reducción. La condición de que la suma de los elementos de cada vector sea igual puede hacerse cumplir agregando coordenadas ficticias que contengan solo 0 o 1. La condición de que esta suma sea menor que la dimensión puede hacerse cumplir agregando coordenadas ficticias que contengan solo 0.
fuente