Particionando um retângulo sem danificar os retângulos internos


12

é um retângulo paralelo ao eixo.C

C1,,CnC1CnC

insira a descrição da imagem aqui

Uma partição de preservação de retângulo de é uma partição , de modo que , são retângulos paralelos ao eixo separados por pares e disjuntos no interior, e para cada : , ou seja, cada retângulo existente está contido em um novo retângulo exclusivo, assim:CC=E1ENNnEii=1,,nCiEi

insira a descrição da imagem aqui

O que é um algoritmo para encontrar uma partição de preservação de retângulo com um pequeno ?N

Em particular, existe um algoritmo para encontrar uma partição de preservação de retângulo com partes ?N=O(n)

Respostas:


4

NOVA RESPOSTA: o seguinte algoritmo simples é assintoticamente ideal:

Estique cada um dos retângulos arbitrariamente, na extensão máxima possível, de modo que os retângulos permaneçam separados por pares.Ci

O número de furos é no máximo . Isso é assintoticamente ideal, pois há configurações nas quais o número de furos é pelo menos .k2kO(k)

As provas estão neste artigo .


RESPOSTA ANTIGA:

O algoritmo a seguir, embora não seja o ideal, aparentemente é suficiente para encontrar uma partição de preservação de retângulo com partes .N=O(n)

O algoritmo funciona com um polígono rectilíneo , que é inicializado para o rectângulo .PC

Fase 1: Escolha um retângulo adjacente a um limite ocidental de (ou seja, não há outro retângulo entre o lado oeste de e um limite ocidental de ). Lugar dentro e esticá-lo até que ele toca a fronteira ocidental da . Seja (para ) a versão esticada de . Seja . Repita a Fase 1 vezes até que todos osCiPCjCiPCiPPEii=1,,nCiP=PEinnretângulos originais são colocados e esticados. Na imagem abaixo, uma possível ordem de colocação dos retângulos é :C1,C2,C4,C3

insira a descrição da imagem aqui

Agora, é um polígono retilíneo (possivelmente desconectado), assim:P

insira a descrição da imagem aqui

Afirmo que o número de vértices côncavos em é no máximo . Isso ocorre porque, sempre que um retângulo esticado é removido de , há 3 possibilidades:P2nP

  • 2 novos vértices côncavos são adicionados (como ao colocar );C1,C4
  • 3 novos vértices côncavos são adicionados e 1 é removido (como em );C3
  • 4 novos vértices côncavos são adicionados e 2 são removidos (como em ).C2

Fase 2: Partição em retângulos paralelos ao eixo usando um algoritmo existente (consulte Keil 2000, páginas 10-13 e Eppstein 2009, páginas 3-5 para uma revisão).P

Keil cita um teorema que diz que o número de retângulos em uma partição mínima é limitado por 1 + o número de vértices côncavos. Portanto, no nosso caso, o número é no máximo e o número total de retângulos na partição é .2n+1N3n+1


Este algoritmo não é ideal. Por exemplo, no exemplo acima, fornece enquanto a solução ideal tem . Portanto, restam duas perguntas:N=13N=5

A. Este algoritmo está correto?

B. Existe um algoritmo de tempo polinomial para encontrar o ideal , ou pelo menos uma melhor aproximação?N


Bem, na fase 1, você adiciona células de partição, cada uma contendo exatamente um retângulo inicial e não se sobrepõe a outra. Na fase 2, você particiona o espaço restante, para que as células criadas na fase 2 não cruzem nenhum retângulo inicial. A prova de correção parece bastante direta ou perdi alguma coisa?
Boson

@ No ponto em que não tenho certeza, o número de vértices côncavos é no máximo . Parece "óbvio" que existem apenas três possibilidades, como escrevi, mas posso ter perdido outra possibilidade. 2n
Erel Segal-Halevi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.