¿Es este problema de optimización combinatoria similar a cualquier problema conocido?

10

El problema es el siguiente:

Tenemos una matriz / cuadrícula bidimensional de números, cada uno representa algún "beneficio" o "beneficio". También tenemos dos enteros fijos y (para "ancho" y "altura"). Y un entero fijo .whn

Ahora deseamos superponer rectángulos de dimensiones en la cuadrícula de modo que se maximice la suma total de los valores de las celdas en estos rectángulos.nw×h

La siguiente imagen es un ejemplo de una rejilla bidimensional con dos de tales rectángulos superpuestos en él (la imagen no demuestra la solución óptima, sólo una posible superposición donde y )w=h=2n=2

Ejemplo de cuadrícula

Los rectángulos no pueden cruzarse (de lo contrario, solo tendríamos que encontrar la posición óptima para un rectángulo y luego colocar todos los rectángulos en esa posición).

En el ejemplo anterior, la suma total de valores en las celdas sería2+4.2+2.4+3.14+2.31.4+13.1

¿Es esto similar a algún problema conocido en la optimización combinatoria? para que pueda comenzar a leer un poco e intentar encontrar formas de resolverlo.

Algunos antecedentes más para los interesados:

Hasta ahora, las únicas ideas que tenía son un algoritmo codicioso (que encontraría la mejor ubicación para el primer rectángulo, luego encontraría la loctaión no superpuesta para el segundo rectángulo, etc.) o algunos metaheurísticos como los algoritmos genéticos.

En realidad, deseo resolver este problema con una cuadrícula que tiene alrededor de un millón de celdas y decenas de miles (o incluso cientos de miles) de rectángulos, aunque no es necesario resolverlo en poco tiempo (es decir, sería aceptable para el algoritmo puede llevar horas o incluso días.) No espero una solución exacta, pero quiero obtener una que sea lo mejor posible, dadas estas limitaciones.

¡Salud!

cincuenta y ocho
fuente
(en el teléfono) parece que podría resolverse con una coincidencia máxima bajo una transformación y algunas restricciones adicionales. Intentaré escribir más tarde.
Nicholas Mancuso
Me imagino que requerir el uso exacto de significa que a veces no se usa un máximo "local", pero sí un anillo alrededor. Me estoy imaginando una forma de domo simple aquí, donde la toma "codiciosa" del centro del domo significa que no puede caber todo a su alrededor. nn1
Mark Hurd
Mi primer pensamiento sería probar la programación dinámica. Numera los cuadrados según su distancia de Manhattan desde la esquina superior izquierda. Un subproblema es: un número de un cuadrado; una lista de rectángulos que ha seleccionado cuyo cordel superior izquierdo tiene un número menor que ; y el objetivo es extender al mejor conjunto posible de cuadrados no superpuestos agregando algún subconjunto de cuadrados con esquinas superiores izquierdas que tengan números . Puede resolver cada subproblema rápidamente si tiene la solución para todos los subproblemas posteriores. La única pregunta es cuántos subproblemas tendrás que explorar. sLsLs
DW

Respuestas:

2

Mi última formulación tenía un defecto fatal que requeriría una cantidad exponencial de nodos de "restricción".

Otra formulación gráfica natural del problema sería crear un gráfico donde cada vértice represente un rectángulo con . Cualquier par de rectángulos superpuestos tiene un borde en este gráfico. Al resolver un conjunto independiente de ponderación máxima de tamaño , tenemos una solución a su problema original. Existen muchos buenos algoritmos de heurística y aproximación para esto.rwrr,rk=n

Nicholas Mancuso
fuente
Esta es la dirección hacia la que me estoy inclinando actualmente, experimentaré con esto y aceptaré la solución si es la que termino usando, aclamaciones.
cincuenta
2

Puede formular esto como una instancia de programación lineal de enteros gigantes (ILP) y luego aplicar un solucionador ILP estándar (lp_solve, CPLEX, etc.). Le darán la mejor solución que puedan encontrar. Dado el tamaño de la instancia de su problema, no sé si será lo suficientemente eficiente, pero sería fácil intentarlo.

Aquí está la formulación de ILP. Tenemos una variable cero o uno para cada posible rectángulo , con la interpretación prevista de que significa que incluye el rectángulo en su conjunto y significa que no lo incluye. Desea maximizar la función objetivo (donde es el beneficio del rectángulo ), sujeto a la restricción de que que no se superponen dos rectángulos. La última restricción se puede expresar como una desigualdad lineal al requerir para todos los pares de rectángulosxrrxr=1rxr=0rcrxrcrrrxr=nxr+xs1r,sEsa superposición. Entonces, de esta manera obtienes un ILP.

DW
fuente
¿Crees que este problema es NP-hard? No estoy convencido de que no tenga una solución de poli tiempo, y es poco probable que los solucionadores de ILP terminen incluso en instancias de tamaño moderado.
RB
1
@RB, no tengo idea de si es NP-hard. Vea mi comentario bajo la pregunta sobre programación dinámica para mi primer pensamiento acerca de cómo tratar de encontrar un algoritmo de tiempo polinómico (pero no sé si el algoritmo resultante estará en P o no). En cuanto a lo que pueden hacer los solucionadores de ILP, la única forma de averiguarlo es intentarlo: a veces su rendimiento puede ser sorprendente.
DW