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?
Respuestas:
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.P 1×a b×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.G P P G v G s v s
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=S−I R S P I I S R I P G G es 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).
fuente