Ajustar o número mínimo de retângulos de largura / altura 1 em uma grade 2D

9

Considere um problema no qual você recebe uma grade 2D (por exemplo, um tabuleiro de xadrez) em que certos quadrados estão ocupados e você precisa colocar o número mínimo de retângulos sem sobreposição de qualquer tamanho wxh em que w = 1 ou h = 1 (ou seja, "quadrado" segmentos ") de forma que todos os quadrados desocupados sejam cobertos e cada retângulo cubra apenas quadrados desocupados.

Por exemplo, para a grade

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

a solução seria 4, já que você pode cobrir todos os quadrados desocupados (indicados por '.') com 4 retângulos da seguinte maneira:

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

Tentei criar um algoritmo polinomial ou provar que esse problema é difícil para o NP, mas sem sucesso. Alguém pode me ajudar a provar / refutar que este é um problema em P ou apontar-me para alguns trabalhos / problemas relacionados?

eold
fonte
2
Os retângulos também podem cobrir quadrados ocupados? Além disso, os retângulos podem se sobrepor? A maneira como você apresentou a solução do exemplo sugere que nenhum deles é permitido, mas a declaração do problema não diz nenhuma restrição.
Tsuyoshi Ito
Correto, nenhum é permitido. Vou atualizar a declaração do problema.
eold
stackoverflow.com/questions/8639154/…
Ciro Santilli escreveu:

Respostas:

11

P1×ab×1

GPPGvGsvs

R=SIRSPIISRIPGGé um gráfico bipartido (os segmentos horizontais são adjacentes apenas aos segmentos verticais e vice-versa); portanto, seu conjunto independente máximo pode ser encontrado em tempo polinomial (consulte o teorema de König na Wikipedia).

David Eppstein
fonte