Garantindo o melhor caso do grafo de visibilidade
Autor: Harlen | Publicado: 2010-12-17T15:27:00-02:00

Em uma postagem anterior, comentei sobre meu trabalho de pesquisa que envolve a otimização da construção do grafo de visibilidade. O objetivo principal desse trabalho é desenvolver um método capaz de garantir que o tamanho do grafo de visibilidade seja sempre Θ(n), onde n é o número de arestas de visibilidade. A complexidade é determinada pela disposição geométrica dos elementos da cena, e suponho que o melhor caso pode ser garantido se modificarmos cuidadosamente a cena original através da inserção de novas arestas chamadas de arestas de tela, ou simplesmente telas [1]. Telas são consideradas como obstáculos durante a construção do grafo, mas após isso podem ser descartadas, i.e., podem ser consideradas transparentes. Por exemplo, considere que t é um vértice de uma tela, e s e u são vértices de obstáculos situados em lados opostos desta tela. Se existe uma aresta de visibilidade entre s e t, e outra entre t e u, então para a maior parte dos propósitos práticos (cálculo de trajetórias, traçado de raios, radiosidade) podemos ignorar t e considerar que esta é uma aresta entre s e u. Observe no exemplo da cena da figura 1, como conseguimos reduzir a complexidade de Θ(n2) para Θ(n) ao adicionar apenas uma aresta de tela. Em especial, as arestas de visibilidade mostradas em laranja foram reduzidas de h2+3h-6 para 4h, onde h é o número de buracos.Figura 1. Esquerda: Cena Θ(n2). Direita: Cena Θ(n) após a inserção de uma aresta de tela, mostrada em azul. EPSNa discussão a seguir, considere que a cena de entrada G é um polígono simples com buracos constituídos por polígonos simples e não-degenerados (i.e., de área não nula). O esqueleto reto (straight skeleton) S(G) é um PSLG cujos vértices têm grau mínimo três, e particiona G em faces simplesmente conexas [2]. Um exemplo de esqueleto reto é mostrado na figura 2. O esqueleto reto é muito semelhante ao eixo medial ou diagrama de Voronoi em cenas compostas de segmentos de reta. Entretanto, como o nome já diz, as linhas de partição do esqueleto reto são sempre segmentos de reta. Minha hipótese é que podemos usar a estrutura do esqueleto reto para adicionar as telas em G de modo a garantir o tamanho Θ(n) do grafo de visibilidade VG(G). Figura 2. Esqueleto reto de um polígono com buracos. As arestas  pretas são as arestas da cena de entrada. As arestas laranjas e azuis  são as arestas do esqueleto. Em especial, as arestas azuis são as  arestas bissetoras internas. EPSProposição 1. O tamanho de VG(G), usando os arcos de S(G) como arestas de tela em G, é Θ(n), onde n é o número de arestas de visibilidade de G. Prova. S(G) é composto de Θ(n) arcos e nós [2]. Uma vez que estamos considerando a partição do interior de um polígono com buracos não-degenerados e vértices de grau dois, cada aresta de G pertence a exatamente uma face de S(G), e cada vértice de G é compartilhado por exatamente duas faces de S(G). Dessa forma, cada vértice de G gera arestas de visibilidade restritas a apenas duas faces de S(G), e assim a soma de todas as arestas de visibilidade geradas totaliza Θ(n). Q.E.D.Usando esta proposição, garantimos que VG(G) terá uma complexidade de espaço ótima ao utilizar os arcos de S(G) como arestas de tela de G. Por outro lado, se G já produz um grafo de visibilidade de tamanho linear, o fator constante resultante do número de arestas de visibilidade adicionadas pelas telas poderá ser indesejável; cada vértice da aresta de tela introduz O(n) arestas de visibilidade, o que só é vantajoso se em contrapartida a tela remover um número quadrático dessas mesmas arestas. Em resumo, gostaríamos de adicionar o menor número possível de arcos de S(G) como arestas de tela para manter o tamanho Θ(n) de VG(G). A seguinte proposição mostra como isso pode ser feito para uma cena específica, composta de um polígono convexo com buracos igualmente convexos.Seja Gc uma cena composta de um polígono convexo com buracos convexos não-degenerados. Seja VGO(Gc) o subconjunto de VG(Gc) contendo apenas as arestas de visibilidade que conectam pelo menor um vértice da fronteira externa de Gc (note que, uma vez que Gc não possui vértices reflexos, S(Gc) é equivalente ao eixo medial de Gc). Tais suposições são utilizadas para garantir que não teremos cenários de pior caso resultantes de interações locais de visibilidade entre vértices de um buraco com outros vértices do mesmo buraco, ou vértices da fronteira externa com outros vértices da fronteira externa.Proposição 2. Ao utilizar as arestas bissetoras internas de S(Gc) como arestas de tela de Gc, o tamanho de VG(Gc)-VGO(Gc) é Θ(n), onde n é o número de arestas de visibilidade de Gc.Prova.  Cada aresta de cada buraco pertence a uma face distinta de S(Gc), e cada face é composta de pelo menos uma aresta bissetora interna. Além disso, cada buraco é circundado por uma cadeia de arestas bissetoras internas (acompanhe pela figura 2, que mostra o esqueleto reto de um polígono convexo com buracos convexos). Ao utilizar tais arestas como arestas de tela em Gc, todas as arestas de visibilidade que partem do vértice de um buraco serão restritas à região formada por esta cadeia. Uma vez que o número total de arestas bissetoras internas é Θ(n), o número de arestas de visibilidade que partem de vértices de um buraco convexo é também Θ(n). No entanto, Θ(n2) arestas de visibilidade podem ser produzidas apenas por interações de visibilidade entre vértices situados na fronteira externa e outros vértices da fronteira externa, i.e., por VGO(Gc). Se descartarmos VGO(Gc), teremos apenas arestas de visibilidade entre os buracos convexos, que totalizam Θ(n). Q.E.D.Podemos aplicar este resultado em cenas nas quais sabemos que o pior caso é caracterizado por interações entre buracos, e não entre vértices de um mesmo buraco ou vértices da fronteira externa. Esse é caso, por exemplo, de cenas que contêm diversos obstáculos disjuntos e dispostos de forma mais ou menos regular (o suficiente para produzir o pior caso), como a planta de uma cidade cujos obstáculos são prédios ou quadras, ou a planta arquitetônica de um sala cujos obstáculos são os móveis e os pilares de sustentação.Referências[1] Franklin S. Cho e David Forsyth, "Interactive ray tracing with the visibility complex", Computer &amp; Graphics, 13:703-717, doi 10.1016/S0097-8493(99)00093-X, 1999.[2] Oswin Aichholzer e Franz Aurenhammer, "Straight Skeletons for General Polygonal Figures in the Plane", In Proceedings of the Second Annual International Conference on Computing and Combinatorics (COCOON '96), Springer-Verlag, 1996, p. 117-126.