Dado um polígono ortogonal (um polígono cujos lados são paralelos aos eixos), quero encontrar o menor conjunto de quadrados disjuntos do interior, cuja união é igual ao polígono.
Encontrei várias referências a problemas ligeiramente diferentes, como:
- Cobrir um polígono ortogonal com quadrados - semelhante ao meu problema, mas é permitido que os quadrados de cobertura se sobreponham. Esse problema tem uma solução polinomial ( Aupperle, Conn, Keil e O'Rourke, 1988 ; Bar-Yehuda e Ben-Hanoch, 1996 ).
- Lado a lado / decompondo / particionando um polígono ortogonal em retângulos . Esse problema tem uma solução polinomial ( Keil, 2000 ; Eppstein, 2009 ).
- Cobrindo um polígono ortogonal com retângulos - esse problema é conhecido como NP-completo ( Culberson e Reckhow, 1988 ).
Estou procurando um algoritmo para o mínimo de ladrilhos com quadrados .
algorithms
computational-geometry
tiling
Erel Segal-Halevi
fonte
fonte
Respostas:
Vou tentar mostrar que esse problema é NP-difícil, por redução do .Planar- 3 -SAT
Redução dePlanar- 3 -SAT
Alguns gadgets básicos
Gadgets são configurações internas da geometria que nos permitem construir portões para uso em um circuito, ao qual reduziremos o .Planar- 3 -SAT
Gadget 4X3
Este gadget possui dois estados mínimos de partição quadrada válidos :
Esquerda Um gadget 4X3 . Médio e direito: dois possíveis estados de partição quadrada mínima .
Gadget 5X4
Este gadget é exatamente como um gadget 4X3 , apenas com dimensões maiores.
Esquerda Um gadget 5X4 . Médio e direito: dois possíveis estados de partição quadrada mínima .
dispositivo de ponto final
Um dispositivo de ponto final é um dispositivo 5X4 . É freqüentemente usado como um ponto final / pino de uma porta . Um dos dois estados de um terminal pode ser avaliado como verdadeiro e o outro falso. Um ponto de extremidade marcas das duas extremidades, uma de eo outro como F . O fim coberto pelo quadrado grande é o valor do ponto final.T F
Esquerda: estrutura de arame do dispositivo de extremidade . Centro: ponto final com valor real. Direita: Ponto final com valor falso.
dispositivo i-wire
Um dispositivo i-wire é a abreviação de fio de implicação .
Regras:
Exemplo:
Figura 7: Um dispositivo de i-wire de comprimento e largura 2 .7 2
Aqui está como é usado:
Figura 8,9 , Esquerda: estrutura de arame i-wire em dois pontos finais . Direita: União.
Agora, se um ponto final estiver no estado correto, ele forçará o outro ponto final a uma posição empurrada. Exemplo:
Esquerda: diagrama de partição quadrado; o interruptor esquerdo está pressionado, "empurra" todos os quadrados para baixo no fio i e, finalmente, empurra o outro interruptor ( ponto final ). Direita: Diagrama de partição quadrado; o ponto final esquerdo está cheio "empurra" todos os quadrados para baixo do i-wire e força o ponto final à esquerda a "subir".
No entanto, isso deixa o caso irrestrito:
Se combinarmos dois i-fios , podemos obter uma implicação bidirecional, essencialmente uma igualdade (in) booleana:
Portanto, dois i-fios podem ter uma relação de igualdade completa, como um circuito - na verdade, é um circuito. Usaremos esses pares para construir um fio utilizável .
os fios i podem ser orientados conforme necessário.
fio
Um fio consiste em um par de fios i conectados aos mesmos portões em cada ponto final.
Imagens :
Acima: Um fio .
Esquerda e direita: dois possíveis estados de partição mínima quadrada de um fio . Observe que, se o fio tiver apenas esse comprimento, ele não poderá se deslocar para a direita ou para a esquerda e precisará quebrar um quadrado em pedaços menores.
os fios podem ser orientados conforme necessário.
dobrar-portão : dobrar um fio
Esquerda: Vista da estrutura de arame. Direita: visão da União.
Observe o uso do gadget 4X3 . É usado para fixar o fio vermelho em um comprimento ímpar.
A seguir, estão os dois possíveis estados de partição quadrada mínima da dobra:
Esquerda e direita: dois possíveis estados de partição mínima quadrada quadrada de um fio dobrado.
O portão pode ser orientado conforme necessário. Obviamente, esse portão pode ser espelhado para funcionar na outra direção.
Inclinar um fio
É fácil mudar um fio. Ilustração de estrutura de arame:
portão com valor nomeado
Uma porta de valor nomeado é essencialmente um terminal como uma porta com um contato de fio:
odd-skip-gate : Odd skipping a wire
Às vezes, é inconveniente ter apenas fios de comprimento ímpar. Por exemplo:
Como você pode ver, esse pequeno pedaço de extensão é um pouco chato. Aqui está uma solução correspondente, usando o 4X3-gate :
Então, transformando isso em um portão, obtemos o ímpar-pular-portão (em estrutura de arame):
O portão pode ser orientado conforme necessário.
porta de torção : Torcer um fio
Às vezes, você obtém os fios vermelhos e pretos nos lados errados para usar com um portão . Nesse caso, é fornecida uma porta de torção, para torcer os fios vermelhos e pretos para os lados opostos.
Ilustração de estrutura de arame:
Convença-se de que funciona:
O portão pode ser orientado conforme necessário.
porta dividida : dividindo um fio
Dividindo um fio, estrutura de arame:
Convença-se de que funciona:
Nota: Todo fio que entra e sai do divisor deve absolutamente se conectar a um ponto final em algum lugar, a fim de manter a invariante. Como alternativa, você pode adicionar pontos de extremidade a cada um dos pares de derivações do divisor.
O portão pode ser orientado conforme necessário.
não-portão
O portão não pega um fio e gera um fio que tem implicações inversas. É basicamente uma porta de torção , exceto pelo fato de rotular novamente as cores dos fios. O not-gate fica assim:
E uma visão dos dois estados possíveis:
O portão pode ser orientado conforme necessário.
porta-cláusula
Para o clause-gate , primeiro apresentamos o clause-gadget :
É assim que o portão se parece:
Explicação:
O portão pode ser orientado conforme necessário.
Redução
Um auxílio visual (fonte original: Terrain Guarding é NP-Hard (PDF) , reproduzido em tikz):
Então:
Por que funciona
fontes gráficas
Você também pode ver imagens maiores removendo os sufixos "s", "m", "l", dos URLs de imgur. Por exemplo, você pode ver uma imagem maior disso: http://i.stack.imgur.com/6CKlGs.jpg , acessando http://i.stack.imgur.com/6CKlG.jpg . Observe os "s" ausentes antes do
.jpg
.fonte
No entanto, a cobertura resultante pode incluir quadrados que se sobrepõem. Você está procurando um ladrilho, onde os quadrados não podem se sobrepor, portanto seu problema não é exatamente o mesmo.
fonte