Círculos cobrindo um retangular, como verificá-lo?


7

Isso pode ser básico para alguns de vocês, mas desculpe minha inexperiência com comp. geometria:

Dado um conjunto de n círculos com centros (xEu,yEu) para 1 1Eun e cada um com raios r. Também é dado um retângulo. Todos os objetos estão em um avião. Como verificar se todos os pontos dentro do retângulo (incluindo suas arestas) estão totalmente cobertos pelos círculos. Ou seja, cada ponto do retângulo está em pelo menos um dos círculos.

Alguém tem dicas? Atualmente, estou tentando com diagramas de voronoi.


11
Então, uma coisa poderosa a se usar é ϵredes. Criar umϵ-net do retângulo e verifique se todos os elementos da rede estão contidos em algum disco. Não sei o queϵ deve estar neste caso, acho que é r/2.
Chao Xu

Respostas:


8

Crie um diagrama Voronoi no n centros de disco em O(nregistron)Tempo. Intersectá-lo com o retângulo emO(n) Tempo.

Agora você tem um conjunto de formas convexas, portanto, o ponto mais distante do centro do disco dentro da célula é um vértice na célula. Calcular o ponto mais distante de cada célula pode ser feito emO(n)Tempo. Se para todos eles, está dentror, o conjunto de discos cobre o retângulo.

UMA O(nregistron) algoritmo.


Sim, isso está correto. Isso pode ser comprovado por contradição.
precisa saber é
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.