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.

AJed
fonte
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.

Chao Xu
fonte
Sim, isso está correto. Isso pode ser comprovado por contradição.
precisa saber é