Ajuste de un número mínimo de rectángulos de ancho / alto 1 en una cuadrícula 2D

9

Considere un problema en el que se le proporciona una cuadrícula 2D (por ejemplo, un tablero de ajedrez) donde están ocupados ciertos cuadrados y necesita colocar el número mínimo de rectángulos no superpuestos de cualquier tamaño wxh donde w = 1 o h = 1 (es decir, "cuadrado segmentos ") de modo que todos los cuadrados desocupados estén cubiertos y cada rectángulo cubra solo los cuadrados desocupados.

Por ejemplo, para la cuadrícula

..###
.....
..###
.#...

la solución sería 4, ya que puede cubrir todos los cuadrados desocupados (denotados por '.') con 4 rectángulos de la siguiente manera:

12###
12333
12###
1#444

Traté de idear un algoritmo polinomial o demostrar que este problema es NP-hard, pero sin éxito. ¿Alguien puede ayudarme a probar / refutar que este problema está en P, o señalarme algún trabajo / problemas relacionados?

Eold
fuente
2
¿Los rectángulos también pueden cubrir cuadrados ocupados? Además, ¿pueden superponerse los rectángulos? La forma en que presentó la solución del ejemplo sugiere que ninguno de los dos está permitido, pero su enunciado del problema no dice ninguna restricción.
Tsuyoshi Ito
Correcto, ninguno está permitido. Voy a actualizar la declaración del problema.
pasado
stackoverflow.com/questions/8639154/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Respuestas:

11

Ok, por lo que tiene un polígono con los lados paralelos al eje número entero de longitud y posiblemente con agujeros (la forma que desea cubrir) y que desea particionar en como unos o rectángulos como sea posible. Al principio pensé que querías la partición mínima en rectángulos de formas arbitrarias, que tiene una solución de tiempo polinomial conocida que implica una reducción a conjuntos independientes máximos en gráficos bipartitos. Pero creo que este también es polinómico, a través de una reducción diferente al mismo problema.P1×ab×1

Dibuje un gráfico que tenga un vértice para cada segmento de línea de longitud unitaria que separe dos cuadrados de , y que tenga un borde que conecte los vértices por cada dos segmentos de línea perpendiculares que comparten un punto final. A continuación, las particiones de en rectángulos de unidad de anchura se corresponden uno a uno con conjuntos independientes de . Si un vértice de corresponde a un segmento de línea , entonces pertenece a un conjunto independiente dado exactamente cuando los dos cuadrados separados por pertenecen al mismo rectángulo que el otro en la partición correspondiente.GPPGvGsvs

Bajo esta correspondencia, tenemos la ecuación donde denota el número de rectángulos en una partición dada, denota el número de cuadrados en e denota la cardinalidad del conjunto independiente; Esto es fácil de ver por inducción en , eliminando un elemento de conjunto independiente a la vez. Desde se fija, minimizando es la misma que la maximización de , y la partición óptima de corresponde al conjunto máximo independiente de . PeroR=SIRSPIISRIPGGes un gráfico bipartito (los segmentos horizontales son adyacentes solo a los segmentos verticales y viceversa), por lo que su conjunto independiente máximo se puede encontrar en tiempo polinómico (consulte el teorema de König en Wikipedia).

David Eppstein
fuente