Tenemos una cuadrícula . Tenemos una colección de rectángulos en esta rejilla, cada rectángulo se puede representar como un -by- binario matriz . Queremos cubrir la cuadrícula con esos rectángulos.N 1 N 2 R
¿La versión de decisión de este conjunto cubre el problema NP-completo?
- Entrada: Colección de rectángulos en la cuadrícula (tamaño de entrada: ) yN 1 N 2 L K ∈ N +
- Salida: Subconjunto con y contienen para cada celda al menos un rectángulo que lo cubre.| S | ≤ K S
Descubrí que el caso 1D ( ) se puede resolver en tiempo polinómico mediante programación dinámica: cualquier cobertura óptima será la unión de
- Una cobertura óptima para algunos subproblemas de cubrir las primeras celdas .
- un rectángulo 1D, es decir, un intervalo, que cubre las celdas restantes .
Sin embargo, no creo que DP pueda funcionar para el problema 2D: para el problema 1D, tiene un subproblema para resolver, pero para el 2D tiene \ binom {N_1 + N_2} {N_2} subproblemas (número de celosía Nordeste caminos en la cuadrícula).( N 1 + N 2
Creo que el problema podría ser NP, pero no estoy seguro (aunque parece más difícil que P), y no he logrado encontrar una reducción polinómica de un problema NP completo (3-SAT, cubierta de vértice, ...)
Cualquier ayuda o sugerencia es bienvenida.
|=
=|
Respuestas:
Gracias a la sugerencia de j_random_hacker, he encontrado una solución para reducir la cubierta de vértices al problema de la cuadrícula:
Hacemos un -por- | V | cuadrícula de bloques de 3 por 3, es decir, un 3 | E | -por- 3 | V | cuadrícula, con vértices ordenados como columnas { v 1 , ... , v N 1 } y bordes ordenados como filas { e 1 , ... , e N 2 } . Construiremos rectángulos en esta cuadrícula (el dibujo a continuación ayudará mucho a comprender los diferentes rectángulos utilizados)|E| |V| 3|E| 3|V| {v1,…,vN1} {e1,…,eN2}
Ahora, para cada borde construimos rectángulos de tipo 4, entre los bloques finales, tenemos dos rectángulos para la segunda fila:
Entonces, para cubrir la grilla:
Para cubrir, para un borde dado, la parte entre los bloques finales del borde aún no cubiertos (segunda y tercera filas de la fila de bloques), podemos usar:
Tenga en cuenta que, en cualquier caso, necesitamos al menos dos rectángulos de tipo 4.
fuente