palavras-chave Geometria Computacional, Problema da Galeria de Arte, Polígono Ortogonal, Minimização de Guardas em Vértices, Reflectores. resumo O Pro

Tamanho: px
Começar a partir da página:

Download "palavras-chave Geometria Computacional, Problema da Galeria de Arte, Polígono Ortogonal, Minimização de Guardas em Vértices, Reflectores. resumo O Pro"

Transcrição

1

2

3

4

5

6 palavras-chave Geometria Computacional, Problema da Galeria de Arte, Polígono Ortogonal, Minimização de Guardas em Vértices, Reflectores. resumo O Problema da Galeria de Arte e as suas variantes têm sido intensivamente estudados desde os anos 70, mantendo-se vários problemas em aberto. Um dos problemas da classe de Problemas da Galeria de Arte é o da colocação de focos em vértices dum polígono de forma que o iluminem completamente e o seu número seja mínimo. Este é um problema NP-difícil. Nesta dissertação, abordamos algumas variantes deste problema, nomeadamente para polígonos ortogonais (com e sem buracos) e focos com amplitude de iluminação 2π, π e π/2. Apresentamos um método que permite determinar o valor óptimo de focos por aproximações sucessivas e que segue a estratégia adoptada em [Tomás e al. 2004]. As aproximações são obtidas por resolução de sub-problemas de cobertura mínima, sendo melhoradas através do refinamento da partição inicial do polígono. Descrevemos ainda a aplicação desenvolvida para avaliação experimental do método nas diferentes variantes do Problema da Galeria de Arte mencionadas. Esta aplicação permite ainda escolher a partição inicial. Nessa avaliação experimental foram usadas amostras constituídas por polígonos ortogonais aleatórios com n vértices, representáveis numa grelha regular com exactamente uma aresta em cada linha da grelha. Para focos de amplitude 2π, concluímos que o número de guardas mínimo era n/6. Este valor é inferior ao valor teórico n/4, suficiente para guardar qualquer polígono ortogonal e ocasionalmente necessário. Para polígonos com dois buracos rectangulares, gerados a partir de polígonos da amostra referida, verificámos que o número de guardas mínimo era (n+h)/6. Neste caso, a conjectura é que bastam sempre (n+h)/4 guardas para vigiar um polígono ortogonal genérico com h buracos (sendo ocasionalmente necessários). Para reflectores, é habitual impor que seja colocado, no máximo, um reflector por vértice. Os nossos resultados não verificam necessariamente esta condição. As funções que interpolam os resultados experimentais que obtivemos para π-reflectores e π/2-reflectores para polígonos ortogonais simples são respectivamente f π (n) = (11n-30)/50 e f π/2 (n) = (23n-60)/100. Para polígonos com dois buracos rectangulares, as funções que interpolam os valores obtidos f π (n) = (9n-52)/40 e f π/2 (n) = (17n+4)/80.

7 keywords Computational Geometry, Art Gallery Problem, Orthgonal Polygon, Minimum Vertex Guard, Reflectors. abstract The Art Gallery Problem and its variants have been extensively studied since the seventies, several problems remaining open. In this thesis we address the problem of placing a minimum number of lights (guards) on the vertices of a polygon so that the whole polygon is illuminated (guarded). It is known that this is an NP-hard problem. We focus on orthogonal polygons (with and without holes) and lights with illumination range limited to 2π, π and π/2. We present an algorithm to compute the minimum number of lights by successive approximations, that follows the strategy proposed in [Tomás et al. 2004]. Each approximation is obtained by solving a minimum set covering problem for a given partition. Better approximations are achieved by refining the initial partition of the polygon. We describe the implementation we developed to experimentally evaluate this method for the different variants. This application allows the choice of different initial partitions. For that evaluation, we used random n-vertex orthogonal polygons that can be represented on a regular grid with exactly one edge in each line of the grid. For lights with amplitude 2π, we concluded that the minimum number of guards for random polygons is n/6. This value is smaller than the theoretical value n/4, that is always sufficient and sometimes necessary to guard an n-vertex orthogonal polygon. Random polygons with two rectangular holes were generated using the samples mentioned earlier. For these random samples, we verified that the minimum number of guards was (n+h)/6. In this case, the existing conjecture was that (n+h)/4 guards are always sufficient and occasionally necessary to guard an n-vertex orthogonal polygon with h holes. For reflex vertices, we have not imposed any condition on the number of guards per vertex, although it is usually required that this number does not exceed one. The experimental results indicate that for π-reflectors and π/2- reflectors on orthogonal polygons the minimum number of guards is interpolated by f π (n) = (11n-30)/50 and f π/2 (n) = (23n-60)/100. For polygons with two rectangular holes, these corresponding functions are f π (n) = (9n-52)/40 and f π/2 (n) = (17n+4)/80.

8 Conteúdo Introdução 1 Contributos Organização do Texto O Problema da Galeria de Arte e Algumas Variantes Definição Polígonos, Visibilidade e Guardas Polígonos Noções de visibilidade Guardas de amplitude de visão limitada Variantes para 2π-Guardas Polígonos com buracos Variantes para π-reflectores Variantes para Reflectores Ortogonais Optimização por Aproximações Sucessivas Visibilidade Total, Parcial e por Secções Dominância Dominância e -Equivalência i

9 ii CONTEÚDO Determinação da relação de dominância Aproximação de OP T (P ) Escolha da peça a partir Refinamento da partição Representação da -Dominância Modelação do Problema Problemas resultantes da -dominância não preservar espaço de soluções Dominância Conjunta Partição de Polígonos Ortogonais Representação de Partições Características da estrutura Determinação da Partição por Varrimento Eventos e estado da linha de varrimento Operações possíveis em cada evento Localização dos segmentos a alterar num evento Análise detalhada de eventos Representação por Listas de Arestas Duplamente Ligadas Estrutura de dados Algoritmo em Pseudo-Código Determinação da Visibilidade Ideias Fundamentais Propagação da visibilidade peça a peça Determinação de cones de visibilidade

10 CONTEÚDO iii Cortes que caracterizam secções Descrição do Algoritmo Uso e Actualização da Informação Determinação de Γ inicial Refinamento duma peça da partição Construção de Z p Exemplo Implementação Estrutura de Classes da Implementação Interface Gráfica Avaliação Experimental Resultados para polígonos aleatórios Impacto de BoxDominanciaConjunta Variação do número de iterações por escolha de Γ Resultados para 2π-guardas em polígonos aleatórios Resultados para π-guardas em polígonos aleatórios Resultados para π -guardas em polígonos aleatórios Número de guardas e de iterações para diferentes guardas Resultados para Polígonos com Buracos Resultados para 2π-guardas em polígonos com buracos Resultados para π-guardas em polígonos com buracos Resultados para π -guardas em polígonos com buracos Variação do tempo de execução por escolha de Π

11 iv CONTEÚDO Condição de cardinalidade Resultados para grid n-ogons da Classe Fat Resultados para 2π-guardas em grid n-ogons Fat Resultados para π-guardas em grid n-ogons Fat Resultados para π -guardas em grid n-ogons Fat Resultados para grid n-ogons da Classe MinArea Resultados para 2π-guardas em grid n-ogons MinArea Resultados para π-guardas em grid n-ogons MinArea Resultados para π -guardas em grid n-ogons MinArea Condição de cardinalidade Resumo das funções interpoladoras Conclusões e Trabalho Futuro 123

12 Lista de Figuras 1 Exemplo dum polígono que pode ser vigiado por apenas um guarda com amplitude de visão 2π (a) Triangulação do polígono. (b) 3-coloração do grafo da triangulação Exemplo dum polígono que requer n 3 guardas Polígono de 50 vértices, com 3 buracos (a) Os ponto y e z são visíveis de x. O ponto x não vê o ponto w. (b) Região de visibilidade de w π-guardas em posições restringidas: (a) ajustado a uma aresta; (b) direccionado para o interior; (c) direccionado para o exterior; Ambos os polígonos ortogonais têm 16 vértices. Segundo o Teorema 1.2, o limite superior para o número de guardas necessários para vigiar cada um dos polígonos é 4. Bastam 2 guardas para vigiar o polígono representado em (a) e são precisos 4 guardas para vigiar o polígono representado em (b) Exemplo dum polígono ortogonal com buracos que necessita de n+h 4 guardasem-vértices e uma possível solução. O polígono tem 44 vértices, 4 buracos e necessita de 12 guardas-em-vértices Exemplo dum polígono ortogonal com buracos que necessita de 2n 7 guardasem-vértices e possível solução (a) Polígono ortogonal com 12 vértices que necessita de 3n 4 8 reflectores ortogonais e possível solução. (b) Polígono ortogonal com 32 vértices e um buraco que necessita de 3n+4(h 1) 8 reflectores ortogonais e possível solução. 16 v

13 vi LISTA DE FIGURAS 2.1 Dois guardas bastam para guardar o polígono A peça p 4 é totalmente visível de v 8 ; a peça p 1 é parcialmente visível de v 8 ; a peça p 6 é não visível de v 8. A região sombreada é a região de visibilidade de v As peças p 1, p 2, p 7 e p 8 são trivialmente não visíveis por secções Nenhuma dos vértices de P vê totalmente a peça p, considerando que os guardas a colocar são π -reflectores Exemplo dum diagrama de Hasse As classes [p 1 ] = {p 1 }, [p 2 ] = {p 2 }, [p 7 ] = {p 7 } e [p 8 ] = {p 8 } são trivialmente não visíveis por secções Exemplos de partições (a) Partição Π H ; (b) Partição Π V ; (c) Partição Π r cut (a) Representação da partição Π r cut. (b) Representação da partição Π H O exterior do polígono está a cinzento. A meia aresta e delimita o exterior do polígono As meias arestas assinaladas a traço grosso e negro são as meias arestas que determinam a forma (orientação) como a fronteira do polígono é percorrida As peças p 0 e p 1 são vizinhas. As peças p 1 e p 2 não são vizinhas (a) O ELV (a cinzento) é constituído por várias meias arestas consecutivas. (b) No caso dum segundo varrimento, é possível existirem eventos determinados por conjuntos de meias arestas consecutivas O estado da linha de varrimento ainda não foi iniciado, portanto ELV = (a) Os p-segmentos do evento estão assinalados a traço grosso e negro. (b) ELV é iniciado com os p-segmentos do evento. ELV está assinalado a traço grosso e cinzento claro

14 LISTA DE FIGURAS vii 3.10 (a) Paragem de l. O primeiro p-segmento do evento abre uma nova peça. (b) e (c) O p-segmento (em análise) do evento irá originar duas novas meias arestas. (d) ELV é actualizado com as novas meias arestas e com as meias arestas dos p-segmentos dos eventos que lhes deram origem. ELV está assinalado a traço grosso e cinzento claro ELV está assinalado a traço grosso e cinzento claro. (a) Paragem de l. (b) O p-segmento do evento irá originar dois pares de duas novas meias arestas, fechando duas peças. (c) Paragem de l. (d) O p-segmento do evento irá fechar a única peça aberta, não sendo abertas novas peças. Portanto, terminou o varrimento A e B são os valores de menor e maior abcissa do p-segmento E, respectivamente Em (a) não há sobreposição entre e e E. Em (b) e (c) há sobreposição entre e e E (a) Extensão do p-segmento e. (b) Resultado obtido (a) O evento a analisar é constituído pelo p-segmento e. O p-segmento E do estado da linha de varrimento é composto por duas meias arestas. (b) São criadas as duas novas peças p 4 e p (a) Caso a > B f. (b) ELV no final da análise do p-segmento e (a) Caso b < A. (b) ELV no final da análise do p-segmento e (a) Caso a = A e b = B. (b) ELV no final da análise do p-segmento e (a) Caso a = A e b < B e não existe sucessor de e. (b) ELV no final da análise do p-segmento e (a) Caso a = A e b < B e o sucessor de e é tal que a > B. (b) ELV no final da análise do p-segmento e (a) Caso a = A e b < B e o sucessor de e é tal que a B. (b) ELV no final da análise do p-segmento e (a) Caso a < A e não existe sucessor de e. (b) ELV no final da análise do p-segmento e

15 viii LISTA DE FIGURAS 3.23 (a) Caso a < A e o sucessor de e é tal que a > B. (b) ELV no final da análise do p-segmento e (a) Caso a < A e o sucessor de e é tal que a B. (b) ELV no final da análise do p-segmento e (a) Caso A < a. (b) Neste momento, apenas conhecemos parte do novo ELV. A análise do p-segmento e ainda não está concluída (a) b = B (b) a = B e b < A (c) a = B e b = A Partição dum polígono ortogonal com a identificação dos diferentes componentes da estrutura Os p-segmentos assinalados a traço grosso e cinzento claro constituem o estado da linha de varrimento. (a) Temos b < A e E é o primeiro p-segmento do estado da linha de varrimento tal que a B. (b) Ao analisar e verifica-se que há sobreposição entre e e E Caso a > B f. Os p-segmentos assinalados a traço grosso e cinzento claro constituem o estado da linha de varrimento Cone de visibilidade fixado por v e por e Faces adjacentes ao vértice reflexo v e ao vértice convexo v (a) no caso da partição Π r cut. (b) no caso da partição Π V As peças p 1, p 2 e p 3 estão respectivamente a (S,W), (N,W) e (N,E) de v No vértice v está colocado um (a) 2π-guarda; (b) π-reflector; (c) π -reflector A peça q foi já analisada. Estamos a analisar a peça p. Como o segmento s da meia aresta e é visível do vértice v, então o segmento s da meia aresta gémea de e é também visível de v (a) Cone originado por apenas um segmento. (b) Cone originado por dois segmentos. (c) Devido à existência de buracos, existem quatro segmentos visíveis disjuntos para a peça p, e portanto, quatro cones de visibilidade independentes

16 LISTA DE FIGURAS ix 4.7 Análise duma peça p com vários cones de visibilidade independentes. Os segmentos assinalados a traço grosso e negro são os segmentos que originam os cones de visibilidade. Os segmentos assinalados a traço grosso e cinzento claro constituem a parte da fronteira da peça vizinha de p que é visível de v (a) A peça p 2 é não visível de v já que o segmento assinalado (visível em p 2 e transmitido por p 1 ) define com v um cone degenerado. (b) A peça p 3 está totalmente contida no cone de visibilidade, sendo totalmente visível de v. (c) Apenas parte do interior da peça p 4 está dentro do cone de visibilidade. Portanto p 4 é parcialmente visível de v A peça p tem duas secções visíveis de v Os segmentos s 1, s 2 e s 3 separam a região visível da região não visível de p em relação a v Existem duas secções de visibilidade em p. Uma é definida pelo corte s 1 e a outra pelos cortes s 2 e s Polígono e respectiva partição Π r cut Ajustamento de π -reflectores a arestas A partição considerada é Π H. Apesar de ser parcialmente visível por mais do que um vértice, a peça p 4 é trivialmente não visível por secções Apesar de um dos cortes não entrar pelo mesmo lado que os outros dois cortes, a peça p é trivialmente não visível por secções (a) Como todos os cortes estão no mesmo quadrante, a peça p é trivialmente não visível por secções. (b) Os cortes s 4 e s 5 definem uma secção visível. Como s 5 está no mesmo quadrante dos outros cortes, a peça é não visível por secções A ordem pela qual são visitadas as peças do arranjo é determinada pela orientação do corte (a) A peça p é parcialmente visível dos vértices v 1 e v 14. (b) Resultado da introdução do corte que define a secção visível de v 1 e actualização da visibilidade. (c) Adição dos cortes originados pela secção visível de v 14 e actualização da visibilidade. Uma face do arranjo não fica visível de nenhum vértice

17 x LISTA DE FIGURAS 4.19 A peça p é parcialmente visível dos vértices v 1, v 6 e v Actualização do arranjo e da visibilidade por (a) introdução do corte provocado pelo vértice v 1 ; (b) adição do corte originado pelo vértice v 6 ; (c) inserção do corte relativo ao vértice v Diagrama das classes que constituem as estruturas de dados Atributos das classes Structure, LoL e Vertex Atributos das classes GridNode, HalfEdge e Face Atributos das classes Cut e MPElement Classes Segment, EdgeVisibility e VisibilityWindow e seus atributos Classes HasseNode e VertexHN e respectivos atributos Classes que implementam as diferentes fases do método Informação recolhida na resolução de MVG para um polígono Interface gráfica da aplicação Interface gráfica da aplicação: polígono de visibilidade dum vértice Exemplos de grid n-ogons: (a) grid 12-ogon; (b) grid 14-ogon; (c) grid 16-ogon; (d) grid 18-ogon Polígono de 48 vértices e 2 buracos Variação do tempo de execução por alteração da partição inicial, para amostras aleatórias (sem buracos) e 2π-guardas Nenhum dos vértices de P vê totalmente a peça p, considerando que os guardas a colocar são π -reflectores Ajuste (por interpolação) entre o tempo de execução obtido para 2π-guardas com partição inicial Π H e o polinómio interpolador, em polígonos aleatórios Ajuste (por interpolação) entre o tempo de execução obtido para 2π-guardas com partição inicial Π r cut e o polinómio interpolador, em polígonos aleatórios. 91

18 LISTA DE FIGURAS xi 6.7 Comparação entre o número de 2π-guardas obtido para polígonos aleatórios e as funções f(n) = n 4 e g(n) = n Ajuste (por interpolação) entre o número de π-guardas determinado experimentalmente e f(n) = 11n 30 50, nas amostras aleatórias Ajuste (por interpolação) entre o número de π -guardas obtido experimentalmente e g(n) = 23n 60, nas amostras aleatórias Comparação entre o número de guardas obtido para polígonos aleatórios, considerando diferentes tipos de guardas Comparação entre o número de iterações obtido para polígonos aleatórios, considerando diferentes tipos de guardas e partição inicial Π H Comparação entre o número de iterações obtido para polígonos aleatórios, considerando diferentes tipos de guardas e partição inicial Π r cut Ajuste (por interpolação) entre o tempo de execução obtido para 2π-guardas com partição inicial Π H e o polinómio interpolador, em polígonos com buracos Ajuste (por interpolação) entre o tempo de execução obtido para 2π-guardas com partição inicial Π r cut e o polinómio interpolador, em polígonos com buracos Comparação entre o número de 2π-guardas obtido para polígonos aleatórios com dois buracos rectangulares e as funções f(n) = n+h e k(n) = 2n Comparação entre o número de 2π-guardas obtido para polígonos aleatórios com dois buracos rectangulares e as funções g(n) = n+h 6 e h(n) = n+2h Ajuste (por interpolação) entre o número de π-guardas obtido experimentalmente e a função f(n) = 9n 52 40, nas amostras aleatórias com dois buracos rectangulares Ajuste (por interpolação) entre o número de π -guardas obtido e a função 2 f(n) = 17n+4, em polígonos aleatórios com dois buracos rectangulares Polígonos da classe Fat para n = 4, 6, 8, 10, Ajuste (por interpolação) entre o tempo total de execução e o polinómio p(n) de grau 2 para 2π-guardas e partição Π H, para polígonos Fat

19 xii LISTA DE FIGURAS 6.21 Ajuste (por interpolação) entre o tempo total de execução e o polinómio p(n) de grau 4 para 2π-guardas e partição Π r cut, para polígonos Fat Ajuste (por interpolação) entre o tempo total de execução e o polinómio p(n) de grau 2 para π-guardas e partição Π H, para polígonos Fat Ajuste (por interpolação) entre o tempo total de execução e a função exponencial p(n) = 5, 8 exp(0, 2n) para π-guardas e partição Π r cut, para polígonos Fat Ajuste (por interpolação) entre o tempo total de execução e a função exponencial p(n) = 2, 4 exp(0, 2n) para π-guardas e partição Π r cut, para polígonos Fat Ajuste (por interpolação) entre o tempo total de execução e o polinómio p(n) de grau 2 para π-guardas e partição Π 2 H, para polígonos Fat Polígonos da classe MinArea para n = 4, 6, 8, 10, Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para 2π-guardas e partição Π H, para polígonos da classe MinArea Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para 2π-guardas e partição Π r cut, para polígonos da classe MinArea Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para 2π-guardas e partição Π H, para polígonos da classe MinArea Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para 2π-guardas e partição Π r cut, para polígonos da classe MinArea Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para π-guardas e partição Π H, para polígonos da classe MinArea Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para π-guardas e partição Π r cut, para polígonos da classe MinArea

20 LISTA DE FIGURAS xiii 6.33 Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para π-guardas e partição Π H, para polígonos da classe MinArea Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para π-guardas e partição Π r cut, para polígonos da classe MinArea Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para π 2 -guardas e partição Π H, para polígonos da classe MinArea Comparação entre o tempo de determinação da visibilidade e o tempo total de execução para π 2 -guardas e partição Π r cut, para polígonos da classe MinArea Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para π 2 -guardas e partição Π H, para polígonos da classe MinArea Ajuste (por interpolação) entre o tempo total de execução e o polinómio interpolador de grau 4 para π 2 -guardas e partição Π r cut, para polígonos da classe MinArea (a) Colocação de 18 = 4 reflectores (π-guardas ou π -guardas) num polígono 4 2 MinArea de 18 vértices. (b) Colocação de 20 = 5 reflectores (π-guardas 4 ou π -guardas) num polígono MinArea de 20 vértices Comparação entre o número de π-guardas obtido para polígonos aleatórios e a função f(n) = n Comparação entre o número de π -guardas obtido para polígonos aleatórios 2 e a função f(n) = n

21 xiv LISTA DE FIGURAS

22 Lista de Tabelas 1.1 Limites inferiores e superiores para o número de 2π-guardas necessários para vigiar um polígono. As conjecturas estão assinaladas com o sinal (?) Limites inferiores e superiores para o número de α-reflectores necessários para vigiar um polígono, com α = π, π/ Tabela referente aos pontos da partição da Figura Tabela referente às peças da partição da Figura Tabela referente às meias arestas da partição da Figura Redução do tempo de execução quando se aplica boxdominanciaconjunta (BDC): tempo de execução para 2π-guardas partindo de Π H sem e com BDC Redução do tempo de execução quando se aplica boxdominanciaconjunta (BDC): tempo de execução para 2π-guardas partindo de Π r cut sem e com BDC Número de iterações para as partições Π H e Π r cut considerando 2π-guardas e Γ 0 constituído pelas peças que são parcialmente visíveis de, no máximo, um vértice Número de iterações e tempo de execução para as partições Π H e Π r cut considerando 2π-guardas e Γ 0 segundo o conceito alargado de peças trivialmente não visíveis por secções xv

23 xvi LISTA DE TABELAS 6.5 Número guardas, número de iterações e valor de m 0 para as partições Π H e Π r cut considerando 2π-guardas e Γ 0 (antigo) constituído apenas pelas peças parcialmente visíveis de, no máximo, um vértice, e Γ 0 (actual) segundo o conceito alargado de peças trivialmente não visíveis por secções (cf., critério exposto na Secção 4.3.1) Número guardas, número de iterações e valor de m 0 para as partições Π H e Π r cut considerando π-guardas e Γ 0 (antigo) constituído apenas pelas peças parcialmente visíveis de, no máximo, um vértice, e Γ 0 (actual) segundo o conceito alargado de peças trivialmente não visíveis por secções (cf., critério exposto na Secção 4.3.1) Número guardas, número de iterações e valor de m 0 para as partições Π H e Π r cut considerando π 2 -guardas e Γ 0 (antigo) constituído apenas pelas peças parcialmente visíveis de, no máximo, um vértice, e Γ 0 (actual) segundo o conceito alargado de peças trivialmente não visíveis por secções (cf., critério exposto na Secção 4.3.1) Número de iterações e tempo de execução para as partições Π H e Π r cut considerando π-guardas em polígonos aleatórios Número de iterações e tempo de execução para as partições Π H e Π r cut considerando π -guardas em polígonos aleatórios Número médio de π-guardas e π -guardas necessários para vigiar polígonos 2 ortogonais aleatórios Número de iterações e tempo de execução para as partições Π H e Π r cut considerando 2π-guardas em polígonos aleatórios com dois buracos rectangulares Limites inferiores e superiores para o número de 2π-guardas, colocados em vértices, necessários para vigiar um polígono ortogonal com n vértices e h buracos. As conjecturas estão assinaladas com o sinal (?) Número de iterações e tempo de execução para as partições Π H e Π r cut considerando π-guardas em polígonos aleatórios com dois buracos rectangulares Número de iterações e tempo de execução para as partições Π H e Π r cut considerando π -guardas em polígonos aleatórios com dois buracos rectangulares

24 LISTA DE TABELAS xvii 6.15 Tempo de execução para as partições Π H e Π r cut considerando 2π-guardas em polígonos da classe Fat Número de peças para as partições Π H e Π r cut em função do número de vértices em polígonos da classe Fat Tempo para a determinação da visibilidade, da dominância e do tempo total de execução para Π H em função do número de vértices em polígonos da classe Fat, considerando 2π-guardas Tempo para a determinação da visibilidade, da dominância e do tempo total de execução para Π r cut em função do número de vértices em polígonos da classe Fat considerando 2π-guardas Tempo para a determinação da visibilidade, da dominância e do tempo total de execução para Π H em função do número de vértices em polígonos da classe Fat considerando π-guardas Tempo para a determinação da visibilidade, da resolução dos sub-problemas de cobertura mínima e do tempo total de execução para Π r cut em função do número de vértices em polígonos da classe Fat considerando π-guardas Comparação entre a dimensão dos problemas de cobertura mínima resolvidos para alguns polígonos da classe Fat para as partições Π H e Π r cut considerando π-guardas Tempo para a determinação da visibilidade, da dominância e do tempo total de execução para Π r cut em função do número de vértices em polígonos da classe Fat considerando π -guardas Tempo para a determinação da visibilidade, da visibilidade e dominância e do tempo total de execução para Π H em função do número de vértices em polígonos da classe Fat considerando π -guardas Número de iterações para 2π-guardas, π-guardas e π -guardas para as partições Π H e Π r cut em polígonos MinArea Redução do número de iterações para os polígonos da classe MinArea partindo de Π H e de Π r cut Tabela resumo das funções interpoladoras dos resultados experimentais

25

26 Introdução Nesta dissertação tratamos o problema da colocação de guardas em vértices dum polígono simples de forma que o vigiem completamente e o seu número seja mínimo. Será abreviadamente designado por MVG (Minimum Vertex Guard, em Inglês). Admitindo que os guardas têm amplitude de visão 2π, podemos verificar que o polígono representado na Figura 1 fica completamente vigiado se se colocarem guardas nos vértices v i e v j, mas basta um guarda se for colocado no vértice v k. v k v i v j Figura 1: Exemplo dum polígono que pode ser vigiado por apenas um guarda com amplitude de visão 2π. Atendendo às caraterísticas estruturais dalguns polígonos, é possível em certos casos conhecer imediatamente a solução do problema. Por exemplo, se os polígonos forem convexos basta um guarda, o qual poderá ficar colocado em qualquer vértice. É também conhecido que são suficientes n guardas com amplitude de visão 2π para vigiar qualquer polígono simples de n vértices [Chvátal 1975], e que bastam n se o polígono for 3 4 ortogonal [Edelsbrunner et al. 1984]. Nestes casos, a determinação dos vértices em que os guardas ficariam colocados pode ser feita em tempo O(n log n) [Avis & Toussaint 1981, Edelsbrunner et al. 1984]. Quando o objectivo é a minimização do número de guardas o problema torna-se NPdifícil (NP-hard, em Inglês). Este resultado começou por ser demonstrado para polígonos com buracos por O Rourke e Supowit [O Rourke & Supowit 1983], e posteriormente foi 1

27 2 Introdução demonstrado para polígonos sem buracos por Lee e Lin [Lee & Lin 1986]. Em 1995, Shuchardt e Hecker provaram que MVG é NP-difícil também para polígonos ortogonais e que a minimização do número de guardas continua a ser NP-difícil mesmo quando se considera que os guardas podem ser colocados em qualquer posição e não apenas em vértices [Shuchardt & Hecker 1995]. Esta dissertação focará um método para resolver MVG por aproximações sucessivas e segue a abordagem proposta por Tomás, Bajuelos e Marques [Tomás et al. 2003]. Cada aproximação é obtida por resolução dum problema de cobertura mínima de conjuntos (Minimum Set Cover, em Inglês) associado a uma partição do polígono. O processo é iterativo. Para melhorar a aproximação, a partição inicialmente considerada vai sendo refinada. Em cada iteração o valor óptimo está encaixado num intervalo, que se vai sucessivamente reduzindo. Contributos O trabalho realizado dá continuidade ao descrito em [Tomás et al. 2003, Marques 2004, Tomás 2004, Tomás et al. 2006]. Um dos objectivos do trabalho foi melhorar aspectos da implementação desenvolvida por Marques [Marques 2004] para avaliação experimental do método usando polígonos ortogonais. Outro objectivo foi versatilizar a implementação de modo a tratar diferentes problemas de vigilância. Assim, foi considerado o problema de minimização de guardas em vértices para guardas com amplitude de visão inferior a 2π, nomeadamente, para guardas com amplitude de visão π e π. Além de se considerar diferentes 2 tipos de guardas, considerou-se também polígonos ortogonais com buracos. Nesse sentido, foi realizado um estudo dos resultados existentes sobre majorantes e minorantes para o número de guardas nas diferentes formulações de MVG. A nova aplicação foi também desenvolvida com aplicação a polígonos ortogonais. Nesta implementação melhoraram-se alguns dos algoritmos bem como as estruturas de dados que os suportam, tendo como fim a resolução dos diferentes problemas de vigilância referidos. Assim, esta implementação pode ser usada para resolver MVG em polígonos com e sem buracos, para guardas colocados em vértices com amplitudes de visão 2π, π e π. Permite também flexibilizar o tipo de partição inicial. Estes aspectos serão apresentados detalhamente 2 nos capítulos seguintes.

28 Introdução 3 Organização do Texto Além desta introdução, a dissertação é constituída por 7 capítulos. No Capítulo 1 apresentamos o Problema da Galeria de Arte e algumas das suas variantes. No Capítulo 2 descrevemos o método proposto em [Tomás et al. 2003] assim como as modificações introduzidas. Os Capítulos 3 e 4 debruçam-se sobre os algoritmos necessários à implementação. No Capítulo 3 descrevemos o método de construção da partição assim como a estrutura escolhida para representar quer o polígono como a partição. No Capítulo 4 abordamos o problema da determinação da visibilidade, apresentando o método desenvolvido. Neste capítulo explicamos ainda como decompor uma peça da partição segundo as suas secções visíveis. No Capítulo 5 é descrita a implementação do método exposto no Capítulo 2. Finalmente, no Capítulo 6 apresentamos a análise dos resultados obtidos na avaliação experimental desse mesmo método. Terminamos com algumas propostas para continuação deste trabalho.

29

30 Capítulo 1 O Problema da Galeria de Arte e Algumas Variantes O Problema da Galeria de Arte e suas variantes tem sido activamente estudado desde os anos 70. Neste capítulo apresentamos algumas das variantes, e respectivos resultados, mais relevantes para o trabalho desenvolvido. Começamos por expor, na Secção 1.1, o resultado fundamental, conhecido como Teorema da Galeria de Arte. Na Secção 1.2 introduzimos alguns conceitos. Nas Secções 1.3 e 1.4 apresentamos os resultados conhecidos para algumas variantes do Problema da Galeria de Arte, nomeadamente, para guardas de amplitude de visão 2π e inferior a 2π. Estes resultados servem de controlo aos resultados obtidos pela aplicação implementada para avaliar o método, uma vez que a avaliação foi realizada considerando guardas com amplitude de visão 2π, π e π Definição De acordo com a bibliografia relevante da área, o interesse pelo problema da caracterização do número necessário de guardas para vigiar uma região poligonal surge, tal como relata Honsberger [Honsbeger 1976], na sequência duma questão colocada por Klee em Klee colocou o problema de determinar o número mínimo de guardas estacionários suficientes para vigiar uma sala duma galeria da arte cujo chão possa ser representado por um polígono de n vértices. 5

31 6 O Problema da Galeria de Arte e Algumas Variantes Um guarda estacionário (que neste contexto teria amplitude de visão 2π) é um guarda localizado num ponto fixo que pode ver em todas as direcções e com alcance ilimitado, se não existirem obstruções. Dizemos que um conjunto de guardas vigia completamente (ou cobre) uma região poligonal se todo o ponto dessa mesma sala é visível dalgum guarda. No âmbito deste trabalho identificar-se-á o problema da vigilância com o problema da iluminação. Assim, podemos dizer que um conjunto de guardas vigia uma sala ou que um conjunto de focos ilumina uma sala. Em resposta à questão colocada por Klee, em 1975, Chvátal provou o seguinte. Teorema 1.1 [Chvátal 1975] Para vigiar qualquer polígono de n vértices, n 3 guardas são sempre suficientes e por vezes necessários. Este resultado ficou conhecido como o Teorema da Galeria de Arte de Chvátal. A prova proposta por Chvátal é indutiva e baseia-se numa decomposição adequada do polígono. Em 1978, Fisk [Fisk 1978] apresentou uma prova mais simples baseada na coloração de grafos. Tal como na de Chvátal, a prova começa pela triangulação do polígono. A Figura 1.1 (a) apresenta o grafo resultante da triangulação dum polígono simples. Uma k-coloração dum grafo é uma atribuição de k cores aos nós do grafo de tal modo que nós adjacentes não tenham a mesma cor. Fisk baseia-se num resultado de teoria de grafos que estabelece que o grafo resultante da triangulação dum polígono simples admite uma 3-coloração. Os guardas colocados sobre vértices com a mesma cor, conseguem vigiar todo o polígono. Como existirá pelo menos uma cor que é usada, no máximo, n vezes, concluise que bastam n guardas. No final, os guardas são colocados sobre os vértices com a cor 3 3 menos frequente. No caso da Figura 1.1 (b) os guardas seriam colocados sobre os vértices com a cor 1, bastando três guardas para vigiar o polígono (a) (b) Figura 1.1: (a) Triangulação do polígono. (b) 3-coloração do grafo da triangulação.

32 O Problema da Galeria de Arte e Algumas Variantes 7 Para provar que poderão ser necessários n guardas basta considerar, por exemplo, o 3 polígono da Figura 1.2. Figura 1.2: Exemplo dum polígono que requer n 3 guardas. 1.2 Polígonos, Visibilidade e Guardas Nesta secção são introduzidas algumas noções, nomeadamente de polígono, visibilidade e guarda com amplitude de visão limitada mas de alcance ilimitado. Estas serão necessárias ao longo da dissertação Polígonos Definição 1.1 Um conjunto ordenado de n pontos distintos do plano (v 1,..., v n ) define uma cadeia poligonal, que é a união dos segmentos de recta e 1 = v 1 v 2,..., e n 1 = v n 1 v n. A cadeia poligonal é fechada se existir também o segmento e n = v n v 1. A cadeia poligonal é simples se segmentos de recta não consecutivos não se intersectam e quaisquer dois segmentos consecutivos v i 1 v i e v i v i+1 intersectam-se apenas no ponto v i. Segundo o Teorema da Curva de Jordan, qualquer cadeia poligonal fechada simples divide o plano em duas componentes conexas: uma limitada designada por interior e outra ilimitada designada por exterior. A cadeia é a fronteira de ambas. Neste trabalho definimos polígono como sendo a região fechada limitada por uma cadeia poligonal simples fechada, sendo considerada degenerada a situação em que existem três vértices colineares consecutivos. Os pontos v i, com i = 1,..., n, são os vértices do polígono P. Denotamos o conjunto de vértices de P por V P. Os segmentos e i, com i = 1,..., n, são as arestas, constituindo fronteira de P. O interior, exterior e fronteira de P são designados por int(p ), ext(p ) e fr(p ), respectivamente. Então P = int(p ) fr(p ).

33 8 O Problema da Galeria de Arte e Algumas Variantes Definição 1.2 Um vértice v i é convexo se o ângulo interno v i 1 v i v i+1 é menor ou igual a π, e reflexo caso contrário. O ângulo interno é o ângulo medido no interior do polígono. Definição 1.3 Um polígono é ortogonal se os seus ângulos internos têm amplitude π 2 ou 3π 2. Um polígono ortogonal também pode ser definido como um polígono cujas arestas são todas paralelas a um par de eixos ortogonais no plano. O Rourke mostrou que n = 2r + 4 para todo o polígono ortogonal com n vértices sendo r o número dos vértices reflexos do polígono [O Rourke 1983]. Definição 1.4 Um polígono P é um polígono com buracos, se o seu interior contém subpolígonos (buracos), que não se intersectam entre si, nem intersectam a fronteira de P. Um polígono ortogonal com buracos é um polígono ortogonal em que os buracos são subpolígonos ortogonais. Tal como a Figura 1.3 ilustra, o conjunto de vértices dum polígono com buracos inclui os vértices dos buracos. Figura 1.3: Polígono de 50 vértices, com 3 buracos Noções de visibilidade Definição 1.5 Sejam x, y P. O ponto x vê o ponto y (ou y é visível de x) se o segmento xy não intersecta o exterior do polígono P. Isto é, se xy P = xy. Definição 1.6 Seja x P. O conjunto de pontos V(x) = {y y P xy P = xy} designa-se por região de visibilidade de x. É o conjunto de todos os pontos do polígono P visíveis dum ponto x.

34 O Problema da Galeria de Arte e Algumas Variantes 9 A Figura 1.4 ilustra os dois conceitos que acabámos de definir. w y x w V(w) z (a) (b) Figura 1.4: (a) Os ponto y e z são visíveis de x. O ponto x não vê o ponto w. (b) Região de visibilidade de w. A definição de visibilidade apresentada acima permite que o segmento xy intersecte a fronteira do polígono. É de notar que esta noção de visibilidade nem sempre é a adoptada na bibliografia. Em aplicações como robótica, por exemplo, pode não ser permitido que o segmento xy intersecte a fronteira do polígono pois, isso poderia resultar numa colisão do robô com um obstáculo. Para modelar essas situações seria útil considerar que o ponto x vê o ponto y se e só se xy int(p ) = xy. Para o problema que será focado no trabalho determinação do número mínimo de guardas colocados em vértices necessários para vigiar um dado polígono não é relevante fazer esta distinção entre as duas noções de visibilidade. Assim, utilizaremos a noção de visibilidade introduzida na Definição 1.5. Um conjunto de guardas consegue vigiar um polígono se e só se a reunião das suas regiões de visibilidade for o polígono P. Quando se pretender reforçar que os guardas são colocados necessariamente em vértices do polígono, usar-se-á a designação de guardas-em-vértices. Em 1983, Lee apresentou um algoritmo com complexidade temporal linear para determinar a região de visibilidade a partir dum ponto dado [Lee 1983]. Mais tarde, Joe e Simpson mostraram que o algoritmo de Lee falhava para certas classes de polígonos, nomeadamente para a classe de polígonos em espiral e propuseram uma versão nova corrigida [Joe & Sympson 1987]. Para polígonos com buracos, Suri e O Rourke, e Asano et al. apresentaram algoritmos O(n log n) para determinar a região de visibilidade dum ponto qualquer do polígono [Suri & O Rourke 1986, Asano et al. 1986]. Cerca duma década depois, Hefferman e Mitchell apresentaram um algoritmo O(n + h log h) para o mesmo problema, sendo h o número de buracos do polígono [Heffernan & Mitchell 1995]. Conhecidas as regiões de visibilidade de cada vértice, as quais são polígonos, podemos verificar se um conjunto de guardas consegue vigiar o polígono, determinando a união

35 10 O Problema da Galeria de Arte e Algumas Variantes das suas regiões e verificando se é igual ao polígono dado. A união, intersecção e diferença de dois polígonos pode ser realizada em tempo O(n log n + k log n), em que n é o número total de vértices em ambos os polígonos e k é o número de vértices do polígono resultante [Bentley & Ottmann 1979]. Se estas operações forem realizadas muitas vezes, pode ser vantajoso seguir outra abordagem. Uma possibilidade é começar por escolher uma partição conveniente do polígono, caracterizar o modo como cada vértice vê cada peça dessa partição e assim reduzir MVG ao problema de cobertura de todas as peças com um número mínimo de guardas. O método que será focado nesta dissertação enquadra-se nesta última linha Guardas de amplitude de visão limitada Em alguns casos é interessante e útil considerar o problema de iluminação (vigilância) em que os focos emitem luz dentro duma zona angular de amplitude α inferior a 2π, designandose por α-reflectores. Isto corresponde a dizer que os guardas têm uma amplitude de visão α inferior a 2π. Para este trabalho iremos considerar também problemas de vigilância em polígonos ortogonais com π-reflectores e π-reflectores (também designados π -guardas e π-guardas, respectivamente). Note-se que estamos a limitar a amplitude mas não o alcance de visão 2 2 dos guardas. Na Figura 1.5 estão ilustradas três formas de colocar um π-guarda num vértice reflexo v. Quando não é indicada qualquer restrição considera-se que o π-guarda está em posição geral. (a) (b) (c) Figura 1.5: π-guardas em posições restringidas: (a) ajustado a uma aresta; (b) direccionado para o interior; (c) direccionado para o exterior; Na próxima secção são apresentados alguns resultados relacionados com as variantes do Problema da Galeria de Arte abordadas neste trabalho, alguns dos quais definem limites

36 O Problema da Galeria de Arte e Algumas Variantes 11 inferiores e superiores para o número de guardas necessários. usados na procura da solução óptima de MVG. Esses valores podem ser 1.3 Variantes para 2π-Guardas Recordemos que para polígonos simples, Chvátal [Chvátal 1975] provou que para vigiar qualquer polígono de n vértices, n guardas são sempre suficientes e por vezes necessários. 3 A prova de Fisk deste mesmo resultado conduziu Avis e Toussaint à construção dum algoritmo O(n log n) para a colocação dos n guardas [Avis & Toussaint 1981]. 3 O Teorema 1.2, análogo ao Teorema da Galeria de Arte de Chvátal, mas agora para polígonos ortogonais, afirma que bastam e são por vezes necessários n 4 guardas. Teorema 1.2 [Kahn et al. 1983] Para vigiar qualquer polígono ortogonal de n vértices são sempre suficientes e por vezes necessários n guardas, ou seja, r + 1, sendo r o 4 2 número de vértices reflexos. Este resultado é válido também quando se restringe a colocação dos guardas aos vértices do polígono. A prova pode ser encontrada, por exemplo, em [O Rourke 1987]. A Figura 1.6 (a) ilustra um polígono em que n guardas são suficientes e a Figura 1.6 (b) 4 mostra um polígono em que n guardas são necessários. 4 (a) (b) Figura 1.6: Ambos os polígonos ortogonais têm 16 vértices. Segundo o Teorema 1.2, o limite superior para o número de guardas necessários para vigiar cada um dos polígonos é 4. Bastam 2 guardas para vigiar o polígono representado em (a) e são precisos 4 guardas para vigiar o polígono representado em (b). Edelsburnner, O Rourke e Welzl desenvolveram um algoritmo com complexidade temporal O(n log n) [Edelsbrunner et al. 1984] para a colocação de n 4 guardas num polígono ortogonal. Para o conseguir recorreram a uma decomposição do polígono em peças em forma

37 12 O Problema da Galeria de Arte e Algumas Variantes de L. Mais tarde, Sack e Toussaint mostraram que, para polígonos ortogonais monótonos, tal colocação pode ser efectuada em tempo O(n log log n) [Sack & Toussaint 1988]. Um polígono é monótono se pode ser decomposto em duas cadeias monótonas em relação à mesma linha. Uma cadeia é monótona em relação a uma linha se os pontos que a constituem mantiverem a mesma ordem quando projectados sobre essa linha Polígonos com buracos O livro de O Rourke [O Rourke 1987] refere alguns resultados e conjecturas existentes para o número de guardas necessários para vigiar um polígono com buracos. Em particular, em 1982 O Rourke mostrou que n+2h 3 guardas são suficientes para vigiar um polígono de n vértices e h buracos, e Shermer provou que são por vezes necessários n+h guardas. Hoffmann et al. mostraram que n+h guardas são sempre suficientes, melhorando o resultado de O Rourke [Hoffmann et al. 1991]. Estes valores são válidos 3 quando não se introduz qualquer restrição ao posicionamento dos guardas. No entanto, para guardas em vértices, o problema está em aberto, existindo a seguinte conjectura de Shermer (cf., [Urrutia 2000]). 3 Conjectura 1.1 [Shermer] Para vigiar qualquer polígono de n vértices e h buracos são suficientes n+h 3 guardas-em-vértices. Para o caso em que o número de buracos é 1, Shermer provou que o resultado era válido. Contudo, para h > 1, mantém-se em aberto. Para polígonos ortogonais são também conhecidos alguns resultados idênticos. Em particular, Hoffmann provou que, para vigiar um polígono ortogonal com n vértices e h buracos, são sempre suficientes n guardas [Hoffmann 1990]. Para o caso de guardas-em-vértices, 4 Shermer conjectura o seguinte. Conjectura 1.2 [Shermer] Para vigiar qualquer polígono ortogonal com n vértices e h buracos, são sempre suficientes n+h 4 guardas-em-vértices. À semelhança da Conjectura 1.1, também esta é válida para polígonos com 1 buraco, mas para h > 1, a conjectura mantém-se em aberto [Aggarwal 1984].

38 O Problema da Galeria de Arte e Algumas Variantes 13 O exemplo dado na Figura 1.7 mostra que n+h guardas-em-vértices são ocasionalmente 4 necessários. Figura 1.7: Exemplo dum polígono ortogonal com buracos que necessita de n+h 4 guardasem-vértices e uma possível solução. O polígono tem 44 vértices, 4 buracos e necessita de 12 guardas-em-vértices. Por outro lado, Hoffmann encontrou uma família de polígonos ortogonais com buracos que necessita de exactamente 2n guardas-em-vértices. A Figura 1.8 mostra um polígono dessa 7 família. Este resultado constitui um contra-exemplo a uma conjectura de Aggarwal que Figura 1.8: Exemplo dum polígono ortogonal com buracos que necessita de 2n 7 guardasem-vértices e possível solução. afirmava 3n guardas-em-vértices eram sempre suficientes. A não dependência do número 11 de buracos é interessante, tendo Hoffmann elaborado a seguinte conjectura. Conjectura 1.3 [Hoffmann] Para vigiar qualquer polígono ortogonal com n vértices e h buracos são sempre suficientes 2n 7 guardas-em-vértices. Os polígonos de Hoffmann têm 14k vértices e 2k buracos, e como 2n = n+h, este limite 7 4 nada acrescenta à conjectura de Shermer. Os Teoremas 1.3 e 1.4 enunciam os dois melhores resultados para polígonos ortogonais com um número arbitrário de buracos e guardas colocados em vértices. Teorema 1.3 [O Rourke 1987] Qualquer polígono ortogonal com n vértices e h buracos pode ser sempre vigiado por n+2h 4 guardas-em-vértices.

39 14 O Problema da Galeria de Arte e Algumas Variantes Teorema 1.4 [Hoffmann & Kriegel 1993] Qualquer polígono ortogonal com n vértices e h buracos pode ser sempre vigiado por n 3 guardas-em-vértices. Não é difícil verificar que para h > n n+2h tem-se > n e portanto, nesse caso, o segundo resultado é melhor do que o primeiro. A Tabela 6.10 apresenta um resumo dos resultados referidos para 2π-guardas. Tipo de polígono Colocação de guardas Limite inferior Limite superior Simples sem restrições n 3 n 3 Ortogonal sem restrições n 4 n 4 Simples com h sem restrições n+h 3 n+h 3 buracos em vértices n+h 3 (?) Ortogonal com sem restrições n 4 h buracos em vértices n+h 4 n+h 4 (?) 2n 7 (?) n+2h 4 n 3, h > n 6 Tabela 1.1: Limites inferiores e superiores para o número de 2π-guardas necessários para vigiar um polígono. As conjecturas estão assinaladas com o sinal (?). Nas duas próximas secções apresentamos os melhores resultados conhecidos para α-reflectores colocados em vértices, com α = π e α = π Variantes para π-reflectores Os resultados existentes para o número de α-reflectores suficientes e necessários dependem das restrições impostas ao posicionamento dos reflectores nos vértices reflexos. Por exemplo, se se encontram ajustados a arestas, direccionados para o interior ou exterior ou, simplesmente, em posição geral. Para π-reflectores em posição geral Speackmann e Tóth provaram que para iluminar qualquer polígono com n vértices são suficientes n π-reflectores. Quanto ao limite inferior, Speackmann e Tóth estabeleceram 2

40 O Problema da Galeria de Arte e Algumas Variantes 15 que para iluminar qualquer polígono de n vértices, são necessários n π-reflectores, para n 2 ímpar, e n + 1 π-reflectores, para n par [Speackmann & Tóth 2005]. 2 Para π-reflectores ajustados a uma aresta Em 2001, Urrutia apresentou uma família particular de polígonos que necessita de 5(n+1) 8 π-reflectores, em que n é o número de vértices do polígono, estabelencendo o melhor limite inferior conhecido para π-reflectores ajustados a uma aresta. Posteriormente, Speackmann e Tóth mostraram que o número de π-reflectores suficientes para iluminar qualquer polígono de n vértices é 2n 1. Para polígonos com mais de 3 três vértices convexos, provaram ainda um resultado mais forte: para iluminar qualquer polígono de n vértices são suficientes 2n k 3 π-reflectores, em que k é o número de vértices convexos [Speackmann & Tóth 2005]. Para π-reflectores direccionados para o interior O único limite superior conhecido para π-reflectores direccionados para o interior é n 2 π-reflectores. Ou seja, para iluminar qualquer polígono com n vértices n 2 π-reflectores são suficientes [Urrutia 2000]. Quanto ao limite inferior, o melhor resultado conhecido para π-reflectores direccionados para o interior resulta duma família apresentada por Speackmann e Tóth que necessita de 9n O(1), sendo n o número de vértices do polígono [Speackmann & Tóth 2005] Variantes para Reflectores Ortogonais Na bibliografia, os π -reflectores são usualmente designados por reflectores ortogonais. Os 2 dois teoremas seguintes consideram reflectores ajustados a uma aresta, com a restrição de existir no máximo um reflector por vértice. Teorema 1.5 [Estivill-Castro & Urrutia 1994] Para iluminar qualquer polígono ortogonal com n vértices são suficientes e por vezes necessários 3n 4 8 reflectores ortogonais.

41 16 O Problema da Galeria de Arte e Algumas Variantes Teorema 1.6 [Abello et al.] Para iluminar qualquer polígono ortogonal com n vértices e h buracos são suficientes e por vezes necessários 3n+4(h 1) 8 reflectores ortogonais. As provas dos teoremas 1.5 e 1.6 podem ser encontradas, por exemplo, em [Urrutia 1995]. A Figura 1.9 exemplifica a necessidade de 3n 4 e 3n+4(h 1) reflectores ortogonais para 8 8 polígonos ortogonais sem e com buracos, respectivamente. (a) (b) Figura 1.9: (a) Polígono ortogonal com 12 vértices que necessita de 3n 4 8 reflectores ortogonais e possível solução. (b) Polígono ortogonal com 32 vértices e um buraco que necessita de 3n+4(h 1) 8 reflectores ortogonais e possível solução. A Tabela 1.2 apresenta um resumo dos resultados referidos para α-reflectores com α = π e α = π 2. Tipo de polígono Tipo de guardas Limite inferior Limite superior Simples π-reflectores em posição n 2, n ímpar n 2 geral n 2 + 1, n par Simples (k vértices π-reflectores ajustados 5(n+1) 8 2n 3 1 convexos) a uma aresta 2n k 3, k > 3 9n Simples π-reflectores direccionados 14 O(1) n 2 para o interior Ortogonal Ortogonal com h -buracos π 2 -reflectores ajustados a uma aresta π 2 -reflectores ajustados a uma aresta 3n 4 8 3n 4 8 3n+4(h 1) 8 3n+4(h 1) 8 Tabela 1.2: Limites inferiores e superiores para o número de α-reflectores necessários para vigiar um polígono, com α = π, π/2.

42 Capítulo 2 Optimização por Aproximações Sucessivas Mencionámos que a dissertação foca um método para resolver MVG por aproximações sucessivas seguindo a abordagem proposta em [Tomás et al. 2003]. No presente capítulo apresentamos essa mesma abordagem assim como as adaptações realizadas. Observemos o exemplo da Figura 2.1. Por análise das regiões de visibilidade dos dois v 11 v 1 0 v 3 v 2 p 8 v 9 v 7 v 8 p 5 v 6 v 5 v 4 p 2 p 8 p 5 p 2 p 7 p 6 p 4 p 3 p 1 v 1 2 v 1 v 1 2 v 1 Figura 2.1: Dois guardas bastam para guardar o polígono. vértices assinalados pode-se concluir que bastam dois guardas para vigiar o polígono. Não é difícil verificar, por uma análise de casos, que um guarda não seria suficiente. Para a partição do polígono representada (adiante designada Π r cut ), vemos que não é possível a peça rectangular p 2 ficar vigiada a não ser que se coloque algum guarda num vértice que a veja totalmente. Isto quer dizer que o guarda teria de ficar colocado nalgum dos vértices da peça p 2 ou em v 1. O mesmo se pode dizer de p 8 e de v 12. Assim, para vigiar 17

43 18 Optimização por Aproximações Sucessivas o polígono são necessários pelo menos dois guardas, atendendo a que p 2 e p 8 não partilham vértices. Se os guardas forem colocados em v 1 e v 12, o polígono fica completamente vigiado, caso se admita que os guardas podem colaborar para conjuntamente vigiarem peças que nenhum dos dois consegue por si só vigiar. De facto, a peça rectangular p 5 não ficaria vigiada se v 1 e v 12 não pudessem colaborar, o que obrigaria à colocação de mais um guarda. Daqui se conclui que OP T ({p 2, p 8 }) OP T (P ) OP T (Π r cut ) = 3, em que OP T designa o valor mínimo quando se impõe a restrição de não colaboração e OP T (P ) o valor mínimo para P sem essa restrição. A ideia que se acabou de ilustrar é a subjacente ao método proposto em [Tomás et al. 2003] para determinar intervalos de encaixe do óptimo. Considera-se uma partição Π. Estima-se um majorante para o número de guardas necessários resolvendo um problema de cobertura com a restrição de que os guardas não poderão colaborar para conjuntamente vigiarem peças que não vêem totalmente. restrição será designada por não colaboração. Para obter um minorante para OP T (P ), tenta-se identificar um conjunto Γ de peças de Π que não possam ser cobertas colaborativamente (pelo que, cada uma delas terá de ficar necessariamente totalmente visível dalgum guarda). O algoritmo proposto em [Tomás et al. 2003] resume-se ao seguinte. Esta aproximacao OPT(P ) Π decompor(p ) caracterizar visibilidade para cada p de Π Γ {peças de Π trivialmente não visíveis por secções} Enquanto OP T (Γ) < OP T (Π) Γ, Π refinar(π) Este método de aproximação baseia-se no facto de OP T (Γ) OP T (P ) OP T (Π), em cada iteração, se Π for tal que cada uma das suas peças é sempre totalmente visível de pelo menos um vértice. Mais adiante descreveremos com maior detalhe cada um dos passos do algoritmo, nomeadamente a determinação do conjunto Γ inicial. O objectivo do refinamento é melhorar a aproximação. No entanto, o refinamento implica um aumento de complexidade dos sub-problemas de optimização que se vão resolvendo. Para poder verificar se uma peça pode ser vigiada colaborativamente por um conjunto de guardas que a vêem parcialmente pode-se determinar a união das secções que os guardas

44 Optimização por Aproximações Sucessivas 19 vêem, e verificar se essa união é a peça. Em alternativa, o que se faz é determinar a decomposição da peça induzida pelas secções que os guardas vêem e verificar se cada uma das subpeças obtidas é visível totalmente dalgum dos guardas. Neste sentido o que se faz é um refinamento da partição por decomposição da peça. Cada subpeça só fica vigiada se for vigiada totalmente por algum guarda, pelo que tais peças ingressariam no novo conjunto Γ. Em cada iteração só se partirá uma peça. Caso se conclua que a peça não pode ser vigiada colaborativamente, essa peça será incluída no novo Γ e Π mantém-se inalterado. No exemplo dado na Figura 2.1 se se partisse a peça p 5 concluir-se-ia que OP T (Π) = 2, para a partição resultante, o que demonstraria que OP T (P ) = 2. Em [Tomás et al. 2003], Tomás, Bajuelos e Marques propõem que o refinamento seja efectuado criteriosamente, de forma a tentar localizar peças que possam mais rapidamente conduzir a uma redução significativa do intervalo de encaixe. De facto, MVG é assim reduzido a uma sucessão de problemas de cobertura mínima de conjuntos. Estes problemas são também NP-difíceis, sendo fundamental reduzir a dimensão de cada um dos problemas a resolver para obter um resultado em tempo aceitável. Tal como não é irrelevante a ordem pela qual as peças vão sendo decompostas, verifica-se também que certas peças e vértices são mais relevantes para a resolução do problema do que outros. Esta relevância pode ser formalmente traduzida por uma relação de dominância que será explorada na resolução do problema para reduzir a sua dimensão. Informalmente, as peças dominantes são aquelas que são visíveis do menor número de vértices e, em princípio, as mais difíceis de vigiar. Os vértices dominantes são aqueles que vêem mais peças e, em princípio, os melhores candidatos para colocar os guardas. Tendo apresentado a ideia geral do método, iremos descrevê-lo mais formalmente na Secção 2.3. Para isso começaremos por introduzir formalmente nas Secções 2.1 e 2.2 alguns dos conceitos já referidos. 2.1 Visibilidade Total, Parcial e por Secções Uma partição Π dum polígono consiste na sua decomposição em polígonos menores, de tal forma que estes não se sobreponham. Estes polígonos menores são designados peças (ou faces) da partição.

45 20 Optimização por Aproximações Sucessivas Definição 2.1 Uma peça p é totalmente visível dum vértice v se p V(v) e é parcialmente visível de v se apenas parte do interior de p é visível de v. Se p é parcialmente visível de v então V(v) p é a secção (de visibilidade) que v vê de p. Uma peça p é visível por secções se é igual à união das suas secções de visibilidade. Uma peça p é não visível dum vértice v se o interior de p não intersecta a região de visibilidade de v. As peças de Π podem ser classificadas como totalmente visíveis, parcialmente visíveis ou não visíveis de v, para cada v V P. A Figura 2.2 exemplifica estas três situações. v 4 v 3 p 2 p 3 p 6 p 1 p 4 v 1 v 2 v 5 v 6 p 5 v 7 v 8 Figura 2.2: A peça p 4 é totalmente visível de v 8 ; a peça p 1 é parcialmente visível de v 8 ; a peça p 6 é não visível de v 8. A região sombreada é a região de visibilidade de v 8. Definição 2.2 Os conjuntos de vértices que vêem total e parcialmente a peça p são designados por G t (p) e G s (p), respectivamente. Os conjuntos das peças que v vê total e parcialmente são designados por G t (v) e G s (v), respectivamente. Para o polígono da Figura 2.2, tem-se G t (p 1 ) = {v 1, v 4, v 5, v 6 }, G s (p 1 ) = {v 3, v 8 }, G t (v 3 ) = {p 2, p 3, p 6 } e G s (v 3 ) = {p 1, p 4 }. Quando se pretende determinar o número mínimo de guardas necessário para vigiar Π, impondo a restrição de não colaboração, para a caracterização da visibilidade são relevantes apenas os conjuntos G t (p) e G t (v), com p Π e v V P. Já os conjuntos G s (p) e G s (v), com p Π e v V P são usados na fase de refinamento da partição. O passo de caracterização de visibilidade referido no algoritmo aproximacao OPT(P ) consiste em determinar os conjuntos G t (p) e G s (p) para cada p de Π e G t (v) e G s (v) para cada v de P.

46 Optimização por Aproximações Sucessivas Dominância Como já mencionámos, certas peças e vértices são mais relevantes na determinação de OP T (Π) e de OP T (Γ) do que outros. Esta relevância pode ser formalmente traduzida por uma relação de dominância que vamos agora formalizar Dominância e -Equivalência Observemos a Figura 2.3. v 11 v 1 0 v 3 v 2 p 8 v 9 v 7 v 8 p 5 v 6 v 5 v 4 p 2 p 7 p 6 p 4 p 3 p 1 v 1 2 v 1 Figura 2.3: As peças p 1, p 2, p 7 e p 8 são trivialmente não visíveis por secções. Para o polígono da Figura 2.3 obtemos os seguintes conjuntos G t (p) e G t (v), para todo p Π e todo v V P, respectivamente. G t (p 1 ) = {v 1, v 2, v 3, v 4, v 5, v 8, v 9, v 12 } G t (v 1 ) = G t (v 4 ) = {p 1, p 2, p 3, p 4, p 6, p 7 } G t (p 2 ) = {v 1, v 2, v 3, v 4 } G t (v 2 ) = G t (v 3 ) = {p 1, p 2 } G t (p 3 ) = G t (p 6 ) = {v 1, v 4, v 5, v 8, v 9, v 12 } G t (v 5 ) = G t (v 8 ) = {p 1, p 3, p 4, p 5, p 6, p 7 } G t (p 4 ) = {v 1, v 4, v 5, v 6, v 7, v 8, v 9, v 12 } G t (v 6 ) = G t (v 7 ) = {p 4, p 5 } G t (p 5 ) = {v 5, v 6, v 7, v 8 } G t (v 9 ) = G t (v 12 ) = {p 1, p 3, p 4, p 6, p 7, p 8 } G t (p 7 ) = {v 1, v 4, v 5, v 8, v 9, v 10, v 11, v 12 } G t (v 10 ) = G t (v 11 ) = {p 7, p 8 } G t (p 8 ) = {v 9, v 10, v 11, v 12 } Como G t (p 3 ) = G t (p 6 ), as peças p 3 e p 6 são totalmente visíveis exactamente dos mesmos vértices. G t (p 5 ) G t (p 4 ), ou seja, os vértices que vêem p 5 também vêem p 4, sendo menor o número de vértices que vêem totalmente p 5. Informalmente, podemos dizer que p 5 é dominante relativamente a p 4 pois é totalmente visível dum menor número de vértices.

47 22 Optimização por Aproximações Sucessivas Temos também que G t (p 2 ) G t (p 1 ). A peça p 2 é não visível por secções. Então, para a vigiar, é necessário colocar um guarda num dos vértices que a vê totalmente. consequência, p 1 fica automaticamente vigiada. Como Para os vértices temos, por exemplo, G t (v 1 ) = G t (v 4 ), o que traduz o facto de os vértices v 1 e v 4 verem totalmente exactamente as mesmas peças. Colocando um guarda no vértice v 2 todas as peças em G t (v 2 ) ficam vigiadas. Mas se colocarmos um guarda em v 1, conseguimos vigiar mais peças, incluindo as peças em G t (v 2 ). Repare-se que G t (v 2 ) G t (v 1 ). Informalmente, podemos dizer que v 1 é dominante em relação a v 2, pois vê totalmente as mesmas peças que v 2 além de outras peças. Esta ideia de dominância é formalmente traduzida pela noção de -dominância. As Definições 2.3 e 2.4 introduzem as noções de -dominância e -equivalência para vértices e para peças, respectivamente. Definição 2.3 Sejam v i, v j V P. O vértice v i é -dominante em relação ao vértice v j se G t (v j ) G t (v i ). Se G t (v j ) = G t (v i ) então v j e v i são -equivalentes. Definição 2.4 Sejam p i e p j peças da partição Π. A peça p i é -dominante em relação a p j se G t (p i ) G t (p j ). As peças são -equivalentes se G t (p i ) = G t (p j ). No exemplo da Figura 2.3, as peças p 3 e p 6 são -equivalentes e a peça p 5 -domina a peça p 4. Os vértices v 1 e v 4 são -equivalentes e o vértice v 1 -domina o vértice v 2. Se a peça p i -dominar a peça p j e se p i ficar vigiada por algum dos vértices em G t (p i ) então p j também ficará. Se p i e p j forem -equivalentes passa-se o mesmo. Podemos concluir que vigiar as peças de Π (resp. Γ) que são -dominantes em Π (resp. Γ) garante que Π (resp. Γ) fica vigiada. Ou seja, OP T (Γ) = OP T (D (Γ)) e OP T (Π) = OP T (D (Π)), em que D designa o conjunto das peças -dominantes. A Proposição 2.1 estabelece o que acabámos de afirmar. Para a -equivalência passa-se o mesmo. Vigiar uma peça p Π (resp. Γ) garante que todas as peças em Π (resp. Γ) que são -equivalentes de p ficam vigiadas. Proposição 2.1 [Tomás et al. 2003] Para todas as partições Π de P temos OP T (Π) = OP T (D (Π)) e OP T (Γ) = OP T (D (Γ)), para todo o Γ Π.

48 Optimização por Aproximações Sucessivas 23 Existem peças de Π que são redundantes e por isso podem ser descartadas, de forma definitiva. São duas as situações que nos permitem descartar peças. Se uma peça p Π é -dominada por alguma peça de Γ então p pode ser definitivamente descartada, pois será sempre -dominada em qualquer refinamento de Π. A outra situação em que podemos descartar uma peça p de forma definitiva é quando p Γ e p é -equivalente a alguma peça de Γ. Em oposição, uma peça p Π\Γ que não é -equivalente nem -dominada por alguma peça de Γ não pode ser descartada enquanto não se determinar se é ou não visível por secções ou não se encontrar alguma peça num novo Γ que -domine ou seja -equivalente a p. Ao descartar peças pretendemos obter um conjunto de peças de maior relevância para a resolução de MVG. Sabemos que os vértices dominantes são aqueles que vêem totalmente maior número de peças. Como sempre que são descartadas peças, a relação -dominância entre os vértices é actualizada, os vértices dominantes são aqueles que vêem mais peças relevantes. Apesar de a relação -dominância entre vértices poder ser alterada com a eliminação de peças, a resolução de MVG não é prejudicada, pois é efectuada com base nos conjuntos de vértices e peças -dominantes. Em [Marques 2004] é verificado que a -equivalência é uma relação de equivalência. As classes de equivalência do vértice v e da peça p são denotadas respectivamente por [v] e [p]. A classe de equivalência da peça p Π é dada por [p] = {q Π p é -equivalente a q} e a classe de equivalência do vértice v V P por [v] = {s V P v é -equivalente a s}. No exemplo da Figura 2.3 as peças p 3, p 6 Π são -equivalentes, logo estão na mesma classe de equivalência e [p 3 ] = [p 6 ] = {p 3, p 6 }. No mesmo exemplo, os vértices v 1 e v 4 são -equivalentes e portanto [v 1 ] = [v 4 ] = {v 1, v 4 }. Por simplicidade de notação vamos usar o símbolo para representar a relação de -equivalência para peças e para vértices. Podemos estender a relação de -dominância às classes de peças e às classes de vértices uma vez que esta relação se traduz pela inclusão de conjuntos. Definição 2.5 Sejam [v i ], [v j ] classes de vértices e [p i ], [p j ] classes de peças. A classe [v j ] é -dominante em relação à classe [v k ] se G t (v k ) G t (v j ). A classe [p j ] é -dominante em relação à classe [p k ] se G t (p j ) G t (p k ).

49 24 Optimização por Aproximações Sucessivas Determinação da relação de dominância Seja Γ 0 o conjunto inicial das peças que se sabe (trivialmente) não serem visíveis por secções. Começamos por reduzir Γ 0 a um conjunto de representantes das peças em Γ 0 que não são -dominadas por outras peças em Γ 0. Seja R(Γ 0 ) esse conjunto. Assim, cada classe em R(Γ 0 )/ é constituída por uma única peça. As classes de R(Γ 0 )/ são incomparáveis entre si para a -dominância. Deste processo resulta o diagrama de dominância para R(Γ 0 )/. Seja Π 0 a partição inicial. Partindo do diagrama R(Γ 0 )/ procedemos à inserção das peças de Π 0 \ Γ 0. Para cada p Π 0 \ Γ 0, caso exista no diagrama alguma classe de R(Γ 0 )/ constituída por uma peça que -domine p ou que seja -equivalente a p, descartamos definitivamente p. Caso essa classe não exista, e exista alguma classe de peças (de Π 0 \ Γ 0 ) que tenha peças -equivalentes a p, inserimos p nessa classe. Caso contrário, formamos a classe [p] = {p} e colocamo-la no diagrama. No final deste processo, Π 0 ficou reduzido a um conjunto R(Π 0 ) de peças que serão relevantes para a determinação de MVG e tem-se que R(Γ 0 ) R(Π 0 ). Resulta também o diagrama de dominância para R(Π 0 )/. Notação para conjuntos de classes de peças e de classes de guardas Vamos designar R(Π i )/ por R(Π i ) e R(Γ i )/ por R(Γ i ), para i 0. Analogamente, designaremos G/ por G o diagrama para a dominância entre guardas, sendo G o conjunto de guardas. Um guarda é definido por um terno: amplitude de visão, vértice em que se localiza, e forma como está ajustado à aresta. Naturalmente, um π-guarda (ou π -guarda) é definido por um par: identificando o vértice em que se 2 localiza e a forma como se ajusta à aresta (tornando-o estacionário); um 2π-guarda pode ser identificado pelo vértice em que se localiza, porque o ajuste a arestas não é relevante. 2.3 Aproximação de OP T (P ) Assumimos que cada peça de Π é totalmente visível de pelo menos um guarda g G. No entanto, em certos casos, pode ser necessário refinar Π para que esta condição se verifique.

50 Optimização por Aproximações Sucessivas 25 Por exemplo no caso polígono da Figura 2.4 a partição é refinada até que a condição seja válida. v p Figura 2.4: Nenhuma dos vértices de P vê totalmente a peça p, considerando que os guardas a colocar são π 2 -reflectores. Tal como mencionámos anteriormente, a aproximação a OP T (P ) é feita iterativamente através da determinação de intervalos sucessivamente menores que encaixam o valor óptimo. Para o primeiro intervalo podemos definir o majorante com base nos resultados teóricos conhecidos e para o minorante determinamos um conjunto de classes de peças que sejam trivialmente não visíveis por secções, isto é, determinamos Γ 0. Em trabalhos anteriores [Tomás et al. 2003, Marques 2004, Tomás et al. 2006] considerouse que Γ 0 era constituído pelas peças parcialmente visíveis por, no máximo, um vértice (guarda). Observe-se que quanto maior for Γ 0 mais próximo do valor óptimo estará OP T (Γ 0 ). Assim, é útil alargar o conceito de peças trivialmente não visíveis por secções. Na Secção explicaremos como determinar um conjunto Γ 0 maior. Ao longo deste processo iterativo de aproximação de OP T (P ) é determinada uma sequência de pares ( R(Γ i ), R(Π i )), i 0 que permitem obter a correspondente sequência de intervalos [OP T ( R(Γ i )),OP T ( R(Π i ))] = [m i, M i ]. A Proposição 2.2 estabelece que através de aproximações sucessivas se chega ao valor óptimo. Proposição 2.2 [Tomás et al. 2003] Para todo o i 0, OP T ( R(Γ i )) OP T ( R(Γ i+1 )) OP T (P ) OP T ( R(Π i+1 )) OP T ( R(Π i )).

51 26 Optimização por Aproximações Sucessivas Sejam R(Π i ) e R(Γ i ) para um certo i 0. Determinamos OP T ( R(Γ i )), obtendo m i+1. Se obtivermos OP T ( R(Γ i )) = M i então o valor óptimo foi encontrado. Senão, determinamos OP T ( R(Π i )), obtendo M i+1. Verificamos se OP T ( R(Π i )) = m i+1, caso em que encontrámos OP T (P ). Caso contrário, escolhemos a peça a ser partida e que conduzirá a um novo par (R(Γ i+1 ), R(Π i+1 )) Escolha da peça a partir Começamos por tentar identificar as peças que (potencialmente) originarão uma maior redução do intervalo de encaixe. Em [Tomás et al. 2003, Marques 2004, Tomás et al. 2006], tal peça era escolhida dentre as dominantes em R(Π i ) \ R(Γ i ), dando-se preferência primeiramente às que eram parcialmente visíveis dum menor conjunto de guardas. No presente trabalho, começámos por considerar um critério semelhante. Posteriormente, com o objectivo de diminuir o número de iterações do método, foi implementado um melhoramento dessa escolha. Tal melhoramento consistiu em alterar o critério de selecção de forma a restringi-la às classes dominantes de R(Π i ) que não tinham ficado cobertas pela solução obtida na resolução do sub-problema OP T ( R(Γ i )). Quando não existem classes nessas condições, então o processo pára, pois OP T ( R(Γ i )) é o valor óptimo. Caso contrário, escolhe-se a classe e a peça p, dessa classe, a partir. As classes de peças são conjuntos ordenados, sendo o critério de ordenação a cardinalidade de G s (p) para cada peça p na classe. Com base na primeira peça de cada classe também conseguimos ordenar as classes. A peça que vamos partir é a primeira peça da primeira classe. Esta peça é uma das peças parcialmente visível do menor número de guardas. Intuitivamente, quanto menor a cardinalidade de G s (p), maior é a possibilidade de a peça p ser não visível por secções, permitindo assim aumentar a dimensão de Γ i sem aumentar a dimensão de Π i. Mas se a peça for visível por secções, o número de peças da decomposição será, em princípio, menor. Já em fase de conclusão deste trabalho, constatámos que, nessa linha de pensamento, o que se deveria ter feito era começar por verificar tal condição imediatamente após resolver o sub-problema OP T ( R(Γ i )). Dessa forma, nalguns casos, ter-se-ia evitado a resolução do último sub-problema OP T ( R(Π i )). Observamos que os resultados que apresentamos no Capítulo 6 não contemplam esta alteração, ainda que seja de prever que possa conduzir a uma redução significativa do tempo

52 Optimização por Aproximações Sucessivas 27 de execução. Já não foi possível voltar a repetir a simulação para estudar tal melhoramento, uma vez que a realização da análise experimental foi bastante demorada Refinamento da partição Seja p a peça escolhida. visibilidade. Determinamos a partição de p induzida pelas suas secções de Definição 2.6 A partição induzida pelas secções de visibilidade da peça p será representada por Z p. As secções de Z p são as faces do arranjo de segmentos que definem a fronteira de p e as secções de visibilidade V s p (r), para cada posição r G s (p). Cada peça de Z p satisfaz a restrição de não colaboração. Portanto, se houver alguma peça em Z p que seja não visível para todos os guardas de G s (p), a peça p é não visível por secções. Nesse caso, descartamos todas as peças de [p] com excepção de p e todas as classes que têm peças -dominadas por p. Obtemos R(Π i+1 ) = {{p}} {classes em R(Π i ) \ {[p]} que não são -dominadas por [p]} e R(Γ i+1 ) = {{p}} {classes de R(Γ i ) que não são -dominadas por [p]}. Caso p seja visível por secções, começamos por construir o diagrama de R(Z p )/, à semelhança do que foi efectuado para Γ 0. Posteriormente, inserimos as classes de R(Z p ) no diagrama das classes de R(Π i ). Como cada classe de R(Z p ) é constituída por uma única peça, esta inserção vai ser semelhante à efectuada para Γ 0. R(Π i+1 ) é a união das peças das classes que ficam no diagrama resultante e R(Γ i+1 ) é a união das peças das classes de R(Γ i ) R(Z p ) que persistem no diagrama R(Π i+1 ). Neste processo sempre que são descartadas peças, as máscaras dos guardas são actualizadas de forma a apenas referirem peças de R(Π i+1 ). Então, para cada g G, actualizamos as máscaras correspondentes a G t (g) e a G s (g) para as peças descartadas e para as novas peças, se as houver. Resulta o diagrama G actualizado. 2.4 Representação da -Dominância Nesta secção abordamos a representação das relações de -dominância entre classes de peças e classes de guardas.

53 28 Optimização por Aproximações Sucessivas As relações -dominância definidas em R(Π) e em G são relações de pré-ordem (antisimétricas e transitivas). Tal como no trabalho de Marques, optámos por representar estas pré-ordens através dos seus diagramas de Hasse, já que o permitem fazer de forma compacta [Marques 2004]. Denotamos por G t [p] o conjunto das classes de guardas que vêem totalmente as peças de [p], e por G t [g] o conjunto das classes de peças que são totalmente visíveis dos guardas de [g]. A Figura 2.5 representa um diagrama de Hasse que traduz a relação de inclusão existente entre os conjuntos A, B,..., G. A B C D E F G Figura 2.5: Exemplo dum diagrama de Hasse. A leitura do diagrama é feita de baixo para cima. Por exemplo, o nó D = G t [p i ] está ligado ao nó A = G t [p j ] que está mais acima, ou seja G t [p i ] G t [p j ]. Então a classe de peças [p i ] -domina a classe [p j ]. No caso dos guardas se o nó E = G t [g i ] estiver ligado a um nó B = G t [g j ] mais acima, temos G t [g i ] G t [g j ] e consequentemente a classe de vértices [g i ] é -dominada pela classe [g j ]. Assim, os guardas -dominantes são aqueles que se encontram no topo do diagrama e as peças -dominantes são as que se encontram na base do diagrama. Do facto de em R(Π) não existirem classes dominadas por classes em R(Γ) resulta que as classes de R(Γ) se encontram no topo do diagrama para as peças. Em [Marques 2004] é possível encontrar uma descrição destes diagramas assim como das operações a eles associadas. 2.5 Modelação do Problema Referimos anteriormente que o problema de minimizar o número de guardas em vértices pode ser tratado como um problema de cobertura mínima. De facto, a formulação do problema de minimização de guardas-em-vértices com a restrição de não colaboração permite-nos modelá-lo como um problema de satisfação de restrições. Seja F um conjunto de classes de peças e G F um conjunto de classes de guardas. G t [p] G F é o conjunto das classes de guardas que podem iluminar totalmente a classe [p], qualquer

54 Optimização por Aproximações Sucessivas 29 que seja a classe [p] F. G t [g] F é constituído pelas classes de peças que os guardas da classe [g] conseguem iluminar totalmente, qualquer que seja a classe [g] pertencente a G F. As variáveis de decisão para os sub-problemas de satisfação de restrições são X [g] {0, 1} com [g] G F e Y [p] {0, 1} com [p] F. O valor de X [g] é 1 se se colocar um foco ou reflector num dos guardas da classe [g]. O valor de Y [p] é 1 se a classe [p] ficar vigiada. Segundo a abordagem de [Tomás et al. 2006], as restrições são: (1) Y [p] = F [p] F (2) X [g] Y [p], [p] F [g] G t [p] (3) Y [p] X [g] G t [g], [g] G F [p] G t [g] A restrição (1) traduz a condição que todas as classes de peças têm que ficar vigiadas. Relativamente à restrição (2), uma classe de peças [p] fica vigiada apenas se existe uma classe de guardas [g] G t [p] com X [g] = 1. Quanto à restrição (3), um foco ou reflector colocado num dos guardas da classe [g] vê todas as classes de peças de G t [g]. A função objectivo é min X [g], [g] G F isto é, minimizar o número de classes de guardas com focos ou reflectores. Além deste número mínimo, obtemos ainda um conjunto solução óptimo. É possível adicionar restrições de forma a reduzir o espaço de procura. Por exemplo, para 2π-guardas e polígonos ortogonais sabemos que min X [g] n. Se os polígonos 4 tiverem buracos, então min [g] G F [g] G F X [g] n + 2h, em que h é o número de buracos. 4

55 30 Optimização por Aproximações Sucessivas Problemas resultantes da -dominância não preservar espaço de soluções Para guardas com amplitude de visão limitada (como π-reflectores e π -reflectores) é habitual impor a restrição de que o número de guardas por vértice não exceda 2 1. Assim, para resolver MVG para α-reflectores com a condição de cardinalidade, isto é com a restrição de apenas um reflector por vértice, seria necessário adicionar restrições ao modelo. Cada reflector/guarda g está associado a um vértice. Para os guardas em vértices reflexos escrevemos g = (v, o) para algum v V P e orientação o. No caso de vértices convexos fica g = (v, ). Seja U a união das classes de G F. Seja W g {0, 1} a variável de decisão para g U. Se W g = 1 então o guarda g tem um reflector lá colocado. As restrições adicionais para reflectores são: (4) W g + W g 1, g, g U tais que g g, g = (v, o) e g = (v, o ) (5) W g = X [g], g [g] [g] G F A restrição (4) impõe que para um mesmo vértice, no máximo um guarda é ocupado, ou seja, o número de reflectores por vértice não pode exceder um. A restrição (5) traduz a condição que para se colocar um reflector na classe [g] então tem de se colocar um reflector numa das posições que a constituem. O que se pretende é que caso X [g] = 1, se force alguma das variáveis W g, com g [g] a tomar também o valor 1, e que caso X [g] = 0 se tenha W g = 0 para todo g [g]. Como a -dominância não preserva o espaço de soluções, poderá haver instâncias para as quais o problema de satisfação de restrições formulado seja impossível. Assim, para restringir a colocação de reflectores a apenas um por vértice, será ainda necessário redefinir a noção de -dominância entre vértices/guardas. No entanto, não efectuámos essa alteração. 2.6 Dominância Conjunta No sentido de tentar reduzir a dimensão dos conjuntos de classes de peças e guardas que são necessários à resolução de MVG, podemos aplicar a -dominância conjuntamente para

56 Optimização por Aproximações Sucessivas 31 classes de peças e classes de guardas, até os conjuntos se tornarem invariantes. Ou seja, a aplicação da -dominância conjuntamente permite obter modelos (para os problemas) menores. Consideremos a Figura 2.6 em que os focos a colocar têm amplitude de visão 2π. Nesta situação, os vértices coincidem com os guardas. v 11 v 1 0 v 3 v 2 p 8 v 9 v 7 v 8 p 5 v 6 v 5 v 4 p 2 p 7 p 6 p 4 p 3 p 1 v 1 2 v 1 Figura 2.6: As classes [p 1 ] = {p 1 }, [p 2 ] = {p 2 }, [p 7 ] = {p 7 } e [p 8 ] = {p 8 } são trivialmente não visíveis por secções. As classes [p 1 ] e [p 7 ] são -dominadas por [p 2 ] e [p 8 ], respectivamente. Assim sendo, as classes de peças [p 1 ] e [p 7 ] são descartadas definitivamente. Portanto Γ 0 = {[p 2 ], [p 8 ]}. Temos ainda [p 3 ] = [p 6 ] = {p 3, p 6 } e a classe [p 4 ] = {p 4 } é -dominada por [p 5 ] = {p 5 }. Para os guardas/vértices temos as classes [v 2 ] = [v 3 ] = {v 2, v 3 }, [v 6 ] = [v 7 ] = {v 6, v 7 } e [v 10 ] = [v 11 ] = {v 10, v 11 } -dominadas respectivamente por [v 1 ] = [v 4 ] = {v 1, v 4 }, [v 5 ] = [v 8 ] = {v 5, v 8 } e [v 9 ] = [v 12 ] = {v 9, v 12 }. Considerando apenas as classes de peças e vértices -dominantes, obtemos G t [p 2 ] = {[v 1], [v 2 ]} G t [v 1 ] = {[p 2], [p 3 ]} G t [p 3 ] = {[v 1], [v 5 ], [v 9 ]} G t [v 5 ] = {[p 3], [p 5 ]} G t [p 5 ] = {[v 5], [v 6 ]} G t [v 9 ] = {[p 3], [p 8 ]} G t [p 8 ] = {[v 9], [v 10 ]}. Aplicando a -dominância em conjunto, obtemos para as peças G t [p 2 ] = {[v 1]} G t [p 3 ] = {[v 1], [v 5 ], [v 9 ]} G t [p 5 ] = {[v 5]} G t [p 8 ] = {[v 9]}.

57 32 Optimização por Aproximações Sucessivas A classe [p 3 ] é -dominada pelas classes [p 2 ], [p 5 ] e [p 8 ]. classe [p 3 ] não é relevante. Para os vértices temos Portanto, neste momento, a G t [v 1 ] = {[p 2]} G t [v 5 ] = {[p 5]} G t [v 9 ] = {[p 8]}. Obtemos assim conjuntos de classes de peças e guardas/vértices invariantes. O algoritmo boxdominanciaconjunta é apresentado a seguir. G F é o conjunto das classes de guardas que vêem totalmente as classes de peças em F, G t [p], F = Gt [p] G F e G t [g], F = Gt [g] F, para [g] G F e [p] F. boxdominanciaconjunta( G F, F ) D ( G F ) boxdominantesg( G F ) Repetir G F D ( G F ) Para todo [p] F G t [p], F Gt [p], F G F D ( F ) boxdominantesp( F ) Se F D ( F ) F D ( F ) Para todo [g] G F G t [g], F Gt F [g], F D ( G F ) boxdominantesg( G F ) enquanto D ( G F ) G F retorna ( G F, F ) Apesar de o algoritmo preservar OP T ( F ), a redução de G F pode não preservar o conjunto de soluções óptimas. Isto significa que esta transformação não é válida quando é imposta algum tipo de restrição adicional como, por exemplo, a condição de cardinalidade em conjunto com α-reflectores. Isto porque, durante o processo poderemos dispensar classes de guardas que viessem a fazer parte da ou das soluções possíveis. Nessa situação, o resultado falacioso seria que não era possível encontrar uma solução que satisfizesse as restrições impostas.

58 Capítulo 3 Partição de Polígonos Ortogonais Neste capítulo descrevemos o processo de construção de partições de polígonos ortogonais por extensão de arestas incidentes em vértices reflexos. Começamos por apresentar, na Secção 3.1, a forma de representação desse tipo de partição. Na Secção 3.2 expomos o método de partição do polígono. A estrutura de dados utilizada e o algoritmo em pseudocódigo são apresentados na Secção 3.3. Recordamos que uma partição Π dum polígono consiste na sua decomposição em peças de tal forma que estas não se sobreponham. Na Figura 3.1 estão exemplificadas duas partições distintas. Figura 3.1: Exemplos de partições. Uma partição bastante natural para polígonos ortogonais é obtida através de cortes rectilíneos horizontais e/ou verticais. Definição 3.1 Um corte rectilíneo dum polígono ortogonal P é obtido por extensão duma aresta incidente a um vértice reflexo de P, para o interior do polígono, e até à sua fronteira. Um corte é horizontal (resp. vertical) se resulta da extensão duma aresta horizontal (resp. vertical). 33

59 34 Partição de Polígonos Ortogonais A Figura 3.2 ilustra três tipos de partição que resultam da aplicação de todos os cortes horizontais e/ou verticais. (a) (b) (c) Figura 3.2: (a) Partição Π H ; (b) Partição Π V ; (c) Partição Π r cut. Designamos por Π H e Π V as partições resultantes da aplicação de todos os cortes horizontais e verticais, respectivamente. A partição resultante da realização simultânea de todos os cortes horizontais e verticais é designada por Π r cut. Para obter Π r cut é necessário aplicar os cortes horizontais e verticais. A partição Π r cut pode ser obtida realizando Π H depois da partição Π V ou Π V depois de Π H. 3.1 Representação de Partições A Figura 3.3 mostra a estrutura escolhida para representação de cada uma das partições. Interessa representar a partição do polígono (Π H, Π V ou Π r cut ) por uma estrutura como a (a) (b) Figura 3.3: (a) Representação da partição Π r cut. (b) Representação da partição Π H. que se apresenta na Figura 3.3, por ser útil para o algoritmo de determinação da visibilidade. Este tipo de estrutura é análogo ao usado por Berg et al. para a representação dum arranjo de rectas no plano [Berg et al. 1997]. Na Figura 3.3 os pontos com a cor mais escura são os vértices do polígono. Os restantes vértices do arranjo resultam do processo de partição do polígono e são designados pontos de Steiner.

60 Partição de Polígonos Ortogonais 35 Esta estrutura de dados é implementada como uma estrutura ligada composta por vértices, meias arestas e peças como se detalhará na Secção 3.3. Uma aresta é constituída por duas meias arestas que são designadas gémeas. As meias arestas estão orientadas no sentido positivo, isto é, de tal modo que cada meia aresta tem à sua esquerda a peça que delimita. Isto é válido mesmo para o exterior do polígono, tal como ilustra a Figura 3.4. e Figura 3.4: O exterior do polígono está a cinzento. A meia aresta e delimita o exterior do polígono. Nota: No resto deste trabalho, quando nos referirmos a peças estamos a considerar apenas as peças da partição (as peças no interior do polígono). A partição Π H (resp. Π V ) é determinada através da inserção na estrutura de todos os cortes horizontais (resp. verticais). A afirmação anterior de que para obter a partição Π r cut, a ordem por que são realizadas as partições Π H e Π V é indiferente significa que é indiferente inserir primeiro os cortes horizontais ou verticais na estrutura. Ou seja, para o método que adiciona, por exemplo os cortes horizontais, terá que ser indiferente receber o polígono original ou o polígono com os respectivos cortes verticais. Para o conseguir, o polígono é representado pela mesma estrutura que acabámos de definir Características da estrutura Uma das características relevantes desta estrutura é o permitir representar um qualquer polígono ortogonal com buracos (ou uma partição deste), bastando para isso considerar que a fronteira do buraco é percorrida no sentido negativo, como ilustra a Figura 3.5. Desta forma garantimos que o interior do polígono se situa sempre à esquerda de qualquer meia aresta na sua fronteira [Berg et al. 1997].

61 36 Partição de Polígonos Ortogonais Figura 3.5: As meias arestas assinaladas a traço grosso e negro são as meias arestas que determinam a forma (orientação) como a fronteira do polígono é percorrida. Outra característica relevante tem a ver com a navegabilidade na estrutura. É fácil deslocarmo-nos ao longo da fronteira do polígono ou duma peça, ou ainda duma peça para outra peça que lhe seja adjacente. Na realidade, nesta estrutura, a noção de adjacência/vizinhança é natural, sendo uma vantagem relativamente ao trabalho realizado por Marques. Nesse trabalho, após a determinação da partição, procedia-se à construção da relação de vizinhança entre peças da partição [Marques 2004]. Neste caso, este procedimento não é necessário, pois a relação de vizinhança está embutida na própria estrutura da partição. A Definição 3.2 formaliza a noção de adjacência/vizinhança. Definição 3.2 Duas peças p i e p j são adjacentes/vizinhas se uma meia aresta de p i tem como gémea uma meia aresta de p j. A Figura 3.6 ilustra esta definição. A meia aresta e de p 0 tem como gémea uma meia aresta de p 1. Portanto as peças p 0 e p 1 são vizinhas. Observe-se que a relação de vizinhança entre duas peças se estabelece através dum só par de meias arestas gémeas (e a cada meia aresta corresponde uma só peça). Observe-se ainda que as peças p 0 e p 3, do exemplo da Figura 3.6, são limitadas por mais de quatro meias arestas. Esta situação ocorre nas partições Π H ou Π V mas não em Π r cut. p 1 p 2 e p 0 p 3 Figura 3.6: As peças p 0 e p 1 são vizinhas. As peças p 1 e p 2 não são vizinhas.

62 Partição de Polígonos Ortogonais 37 A seguir à construção da partição do polígono é determinada a região de visibilidade de cada vértice. A noção de vizinhança é fundamental nesta fase, mais concretamente na transmissão da visibilidade entre peças vizinhas. Na secção seguinte iremos expor o método utilizado para efectuar uma partição. 3.2 Determinação da Partição por Varrimento O processo de partição tem por base um varrimento segundo a mesma direcção da partição. Por exemplo, para obter Π H efectuamos um varrimento horizontal, para obter Π V efectuamos um varrimento vertical e finalmente, para obter Π r cut é necessário efectuar os varrimentos horizontal e vertical. O procedimento para determinar a partição que é proposto neste trabalho é uma extensão do método proposto em [Tomás 2004]. Nesse trabalho, o algoritmo determina a partição Π r cut através dum varrimento horizontal seguido dum varrimento vertical, havendo dependência entre o primeiro e segundo varrimentos. Isto é, não é possível efectuar primeiro o varrimento vertical e depois o horizontal, pois o método para o varrimento vertical supõe a realização prévia do varrimento horizontal. No presente trabalho uniformizámos ambos os varrimentos, tornando-os independentes entre si. Esta extensão do método permite também lidar com polígonos com buracos. Quanto à relação de vizinhança, tal como mencionámos anteriormente, está embutida na partição, sendo mantida actualizada durante o processo Eventos e estado da linha de varrimento O varrimento é uma técnica muito usada em Geometria Computacional. Neste caso, imagina-se que uma linha percorre (ou varre) o polígono, recolhendo algum tipo de informação ao longo do varrimento [O Rourke 1998]. A estrutura que guarda esta informação é designada por estado da linha de varrimento e será identificada por ELV. A linha de varrimento l pára sempre que atinge um evento. Os eventos são determinados pelas arestas verticais do polígono se o varrimento for vertical e pelas arestas horizontais se for horizontal.

63 38 Partição de Polígonos Ortogonais Vimos que cada peça da partição é limitada por pelo menos quatro meias arestas. Isto é o mesmo que dizer que os lados da peça poderão ser constituídos por uma ou mais meias arestas colineares consecutivas. Definição 3.3 Um p-segmento é um conjunto de meias arestas consecutivas maximal que pode estar sobre uma recta horizontal ou vertical. A Figura 3.7 (a) ilustra este facto. Um dos lados da peça p 0, que é o actual ELV, é constituído por várias meias arestas consecutivas. Mais ainda, na Figura 3.7 (b), o evento que originou a actual paragem de l foi determinado por um conjunto de meias arestas consecutivas. l p 1 p 2 p 3 l p 0 (a) (b) Figura 3.7: (a) O ELV (a cinzento) é constituído por várias meias arestas consecutivas. (b) No caso dum segundo varrimento, é possível existirem eventos determinados por conjuntos de meias arestas consecutivas. Esta observação motivou a introdução da noção de p-segmento para designar um tal conjunto de meias arestas consecutivas. Naturalmente, este conjunto de meias arestas consecutivas pode ter cardinalidade um, no caso em que o p-segmento é uma só meia aresta Operações possíveis em cada evento Sem perda de generalidade, o processo de partição do polígono será descrito para o caso da partição Π H. Consideraremos um referencial ortonormado em que a abcissa cresce da esquerda para a direita e a ordenada de cima para baixo.

64 Partição de Polígonos Ortogonais 39 A linha de varrimento l pára sempre que atinge um evento, sendo os eventos determinados por p-segmentos segundo a direcção do varrimento. Como iremos descrever um varrimento horizontal então os eventos são determinados por p-segmentos horizontais. Como consequência da existência no polígono de arestas colineares cada evento pode ser determinado por mais do que um p-segmento. Os p-segmentos que determinam uma mesma paragem de l, são tratados de forma sequencial, isto é, começamos pelo p-segmento de menor coordenada até ao de maior coordenada. A coordenada é a abcissa ou a ordenada consoante o varrimento seja horizontal ou vertical, respectivamente. A análise dos eventos é realizada por ordem crescente da ordenada dos p-segmentos que os determinaram (caso se tratasse dum varrimento vertical, seria por ordem crescente da abcissa). O estado da linha de varrimento está também ordenado pela abcissa podendo ser formalmente definido da seguinte maneira: ELV = {(A i, B i ) (A i, B i ) são p-segmentos e i 0}. Os valores dos extremos crescem no sentido do varrimento. Para i = 0, ELV =, ou seja, o estado da linha de varrimento ainda não foi iniciado. As Figuras 3.8 a 3.11 ilustram o varrimento horizontal sobre um polígono ortogonal com o objectivo de o decompor segundo Π H. A Figura 3.8 exemplifica a situação em que ELV = com i = 0. l Figura 3.8: O estado da linha de varrimento ainda não foi iniciado, portanto ELV =. Na primeira paragem da linha iniciamos o estado ELV com os p-segmentos que determinam o primeiro evento, tal como a Figura 3.9 ilustra. A Figura 3.10 ilustra algumas das operações realizadas durante uma paragem da linha de varrimento. Na Figura 3.10 (a) o primeiro p-segmento do evento irá abrir uma nova peça. Isto significa que esse p-segmento fará parte do novo estado da linha de varrimento, como ilustrado na Figura 3.10 (b). Quer nesta figura quer na Figura 3.10 (c), o p-segmento do evento em análise dará origem as duas novas meias arestas. Uma meia aresta fecha a peça acima da linha de varrimento e a sua gémea identifica a vizinha dessa abaixo da linha, herdando a etiqueta. Os resultados são apresentados na Figura 3.10 (c) e na Figura 3.10 (d), respectivamente. A Figura 3.10 (d) ilustra o ELV actualizado após a paragem da linha.

65 40 Partição de Polígonos Ortogonais l l p 0 p 0 (a) (b) Figura 3.9: (a) Os p-segmentos do evento estão assinalados a traço grosso e negro. (b) ELV é iniciado com os p-segmentos do evento. ELV está assinalado a traço grosso e cinzento claro. l p 0 p 0 l p 0 p 0 p 0 (a) (b) l p 1 p 0 p 1 p 2 p 0 l p 0 p 0 p 0 p 0 p 0 (c) (d) Figura 3.10: (a) Paragem de l. O primeiro p-segmento do evento abre uma nova peça. (b) e (c) O p-segmento (em análise) do evento irá originar duas novas meias arestas. (d) ELV é actualizado com as novas meias arestas e com as meias arestas dos p-segmentos dos eventos que lhes deram origem. ELV está assinalado a traço grosso e cinzento claro. Observe-se que o estado ELV tem referências de meias arestas que identificam peças em aberto. Com efeito, após a actualização de ELV este é formado por meias arestas que têm à sua esquerda a parte ainda não percorrida por l. As meias arestas gémeas destas ou delimitam peças que foram fechadas recentemente (durante a actual paragem de l) ou delimitam o exterior do polígono. Por exemplo, depois da paragem de l na Figura 3.10 (a) obtém-se o estado ELV assinalado na Figura 3.10 (d). Duas das meias arestas gémeas das meias arestas que constituem o ELV delimitam as peças p 1 e p 2 que foram fechadas

66 Partição de Polígonos Ortogonais 41 na actual paragem de l; as restantes meias arestas delimitam o exterior do polígono. A Figura 3.11 ilustra as paragens seguintes da linha. p 1 p 2 p 1 p 2 l p 0 p 0 l p 3 p 4 p 0 (a) (b) p 1 p 2 p 1 p 2 p 3 p 4 p 3 p 4 l p 0 l p 5 (c) (d) Figura 3.11: ELV está assinalado a traço grosso e cinzento claro. (a) Paragem de l. (b) O p-segmento do evento irá originar dois pares de duas novas meias arestas, fechando duas peças. (c) Paragem de l. (d) O p-segmento do evento irá fechar a única peça aberta, não sendo abertas novas peças. Portanto, terminou o varrimento. Resumindo, na paragem da linha num evento, as meias arestas dos p-segmentos dos eventos podem fechar peças, abrir peças, ou dar origem a duas novas meias arestas (gémeas) que delimitam peças em aberto e fecham peças na partição Localização dos segmentos a alterar num evento Seja E um dos p-segmentos que constitui o ELV. O extremos A e B são, respectivamente, os valores de menor e maior abcissa do p-segmento E, como ilustrado na Figura Análogamente, seja e um p-segmento do evento. Os extremos a e b são os valores de menor e maior abcissa de e. Genericamente, a análise dos eventos processa-se da forma que a seguir expomos. Seja e o p-segmento do evento que está a ser analisado conjuntamente com o p-segmento E do ELV. Começamos por determinar se os p-segmentos e e E se sobrepõem.

67 42 Partição de Polígonos Ortogonais A B x E y Figura 3.12: A e B são os valores de menor e maior abcissa do p-segmento E, respectivamente. Definição 3.4 Dizemos que dois p-segmentos sobrepõem-se se as suas projecções na recta real, se intersectam. Obtemos uma das duas situações ilustradas na Figura E E E e e e (a) (b) (c) Figura 3.13: Em (a) não há sobreposição entre e e E. Em (b) e (c) há sobreposição entre e e E. Quando há sobreposição entre os p-segmentos e e E, prolongamos o p-segmento e em ambos os sentidos e até onde for possível. Esta extensão traduz-se na criação de novos pares de meias arestas (gémeas) que referimos na Subsecção Se nesta operação forem atingidos outros p-segmentos do evento, as suas meias arestas são integradas no conjunto de (pares de) meias arestas que traduzem a extensão do p-segmento e, tal como a Figura 3.14 sugere. Além das actualizações do ELV, são também efectuadas alterações à estrutura que representa a partição: detecção de pontos de Steiner, divisão de meias arestas e fecho de novas peças.

68 Partição de Polígonos Ortogonais 43 E E e e (a) (b) Figura 3.14: (a) Extensão do p-segmento e. (b) Resultado obtido. Há situações em que um par de novas meias arestas pode fechar mais do que uma peça. Como exemplo, consideremos a Figura Analisando o p-segmento e verificamos que, ao ser estendido, origina o fecho de duas peças. Assim, é necessário um critério para reconhecer os casos em que se fecha mais do que uma peça. Sabemos que um p-segmento é constituído por uma ou mais meias arestas e que cada meia aresta limita uma só peça. Então, a extensão dum p-segmento fecha mais do que uma peça se duas meias arestas consecutivas (do estado da linha de varrimento) limitarem diferentes peças. E E e p 1 p 2 p 3 e p 4 p 5 p 1 p 2 p 3 (a) (b) Figura 3.15: (a) O evento a analisar é constituído pelo p-segmento e. O p-segmento E do estado da linha de varrimento é composto por duas meias arestas. (b) São criadas as duas novas peças p 4 e p 5. Vamos agora analisar em pormenor os diversos casos que se colocam durante o varrimento. Na tentativa de não sobrecarregar essa descrição não se menciona a verificação acima referida para o fecho de peças. Ao tratamento das várias situações basta acrescer o cuidado de verificar se as meias arestas (consecutivas) do estado da linha de varrimento limitam peças distintas.

69 44 Partição de Polígonos Ortogonais Análise detalhada de eventos Utilizaremos as letras α, β e γ para representar partes (ou a totalidade) do estado da linha de varrimento. Por exemplo, α α, e indica que do estado α se obtém α, e. Ou seja, indica que o estado da linha de varrimento inicial é α e que após a análise do p-segmento e e actualização do estado da linha de varrimento se obtém α, e. Este estado traduz uma actualização em que o p-segmento e foi adicionado ao final do estado da linha de varrimento inicial. Nas figuras que acompanham a descrição da análise de casos, os p-segmentos assinalados a cinzento constituem o estado actual da linha de varrimento. Análise sequencial de casos A descrição seguinte requer uma leitura sequencial: a condição indicada em cada caso pressupõe já a não verificação das condições que definem os casos precedentes. À semelhança do que acontece na descrição das implementações doutros algoritmos geométricos, o número de casos em que se divide acaba por não facilitar a sua leitura. Para futura referência e completude do texto, optámos por incluir esta análise exaustiva de casos, a qual poderá ser útil a alguém interessado em efectuar uma implementação do método. Seja e = (a, b) o p-segmento activo do evento e e = (a, b ) o seu sucessor, se existir. Seja E = (A, B) o primeiro p-segmento do estado da linha de varrimento tal que a B. O p-segmento que segue E será designado por E = (A, B ), caso exista. 1. a > B f. O índice f significa que E f = (A f, B f ) é o último p-segmento de ELV. Como a > B f, o p-segmento e está além do último p-segmento do ELV. Não há alterações na estrutura que representa a partição. ELV é actualizado tal como exemplifica a Figura 3.16: α α, e. E f A f B f l a e b (a) (b) Figura 3.16: (a) Caso a > B f. (b) ELV no final da análise do p-segmento e.

70 Partição de Polígonos Ortogonais b < A. Não há sobreposição entre os p-segmentos e e E. A estrutura que representa a partição não sofre alterações. Actualizamos ELV como a Figura 3.17 ilustra: α, E, β α, e, E, β. A E B l a e b (a) (b) Figura 3.17: (a) Caso b < A. (b) ELV no final da análise do p-segmento e. 3. a = A e b = B. O p-segmento e origina o fecho uma peça. Como podemos observar na Figura 3.18, essa é a única operação a realizar sobre a estrutura que representa a partição. A actualização de ELV é tal como exemplificado na Figura 3.18: α, E, β α, β. A E B l a e b (a) (b) Figura 3.18: (a) Caso a = A e b = B. (b) ELV no final da análise do p-segmento e. 4. a = A e b < B. Neste caso, prolongamos o segmento e a partir de b. Podemos ter um de três casos 4.1, 4.2 e 4.3, tal como está exposto nas Figuras 3.19 a A E B l a e b (a) (b) Figura 3.19: (a) Caso a = A e b < B e não existe sucessor de e. (b) ELV no final da análise do p-segmento e.

71 46 Partição de Polígonos Ortogonais 4.1 Além de a = A e b < B, não existe sucessor de e. A Figura 3.19 exemplifica este caso. 4.2 Além de a = A e b < B, existe e sucessor de e e é tal que a > B. Esta situação está ilustrada na Figura A E B l a e b a e b (a) (b) Figura 3.20: (a) Caso a = A e b < B e o sucessor de e é tal que a > B. (b) ELV no final da análise do p-segmento e. Os casos 4.1 e 4.2 são tratados do mesmo modo: prolongamos o p-segmento e até B. Esta extensão irá fechar uma peça. Além desta operação, é também necessário criar pontos de Steiner e dividir arestas. Observando as Figuras 3.19 e 3.20, verificamos que ELV é actualizado de igual modo em ambos os casos: α, E, β α, (b, B), β. 4.3 No caso da Figura 3.21 prolongamos o p-segmento e até a. Esta extensão irá limitar parte duma peça. Esta peça é fechada quando a = B, se existir algum e tal que isso se verifique, ou quando a extensão do p-segmento e atingir B. A E B l a e b a e b (a) (b) Figura 3.21: (a) Caso a = A e b < B e o sucessor de e é tal que a B. (b) ELV no final da análise do p-segmento e. A actualização de ELV terá em conta a possibilidade de haver novos p-segmentos que irão ocupar o lugar do p-segmento E no ELV. Assim, ELV é actualizado: α, E, β α, (b, a ), γ em que γ representa o resto de ELV ainda a calcular neste evento. Esta incógnita representa a possibilidade de novos p-segmentos

72 Partição de Polígonos Ortogonais 47 no ELV com a eliminação ou não de segmentos lá existentes no início da análise do p-segmento corrente. Continuamos a análise no caso 7 a partir de e para obter γ. 5. a < A. Significa que b = A. Prolongamos o p-segmento e a partir de b. Tal como no caso 4 existem três possibilidades. A Figuras 3.22 a 3.24 ilustram estas três situações. 5.1 Além de a < A, não existe sucessor de e. Esta situação é análoga ao caso 4.1 e está ilustrada na Figura A E B l e a b (a) (b) Figura 3.22: (a) Caso a < A e não existe sucessor de e. (b) ELV no final da análise do p-segmento e. 5.2 Além de a < A, existe e o sucessor de e e é tal que a > B. Este caso é semelhante ao caso 4.2, estando exemplificado na Figura A E B l a e b a e b (a) (b) Figura 3.23: (a) Caso a < A e o sucessor de e é tal que a > B. (b) ELV no final da análise do p-segmento e. 5.3 Além de a < A, existe e sucessor de e e é tal que a B. A Figura 3.24 ilustra este caso que é análogo ao caso 4.3. O tratamento de cada uma das situações é análogo às suas correspondentes no caso referido. Assim, a actualização de ELV para os exemplos da Figura 3.22 e da Figura 3.23 fica α, E, β α, (a, B), β. No exemplo da Figura 3.24 a actualização do

73 48 Partição de Polígonos Ortogonais A E B l e a b a b e (a) (b) Figura 3.24: (a) Caso a < A e o sucessor de e é tal que a B. (b) ELV no final da análise do p-segmento e. estado da linha de varrimento é α, E, β α, (a, a ), γ em que γ representa o mesmo que em 4.3. Nesta situação, continuamos a análise caso 7, a partir de e para obter γ. 6. A < a. Como exemplificado na Figura 3.25, prolongamos o p-segmento e desde A até a. Esta extensão irá limitar parte duma peça. Actualizamos ELV : α, E, β α, (A, a), γ em que γ representa a incógnita que é o restante estado da linha de varrimento. Prosseguimos a análise no caso 7 com os p-segmentos e e E. A E l a e e (a) (b) Figura 3.25: (a) Caso A < a. (b) Neste momento, apenas conhecemos parte do novo ELV. A análise do p-segmento e ainda não está concluída b < B. Prolongamos o p-segmento e a partir de b, sendo a análise análoga à do caso b = B. O actual ELV é α, (A, a), γ em que A representa o extremo inferior do p-segmento (A, a). Como neste momento não há novos p-segmentos a acrescentar a ELV, podemos escrever o novo estado da linha de varrimento α, (A, a), β. Como podemos observar na Figura 3.26 (a), o p-segmento e fecha uma peça. 7.3 a = B e b < A. Como não há novos p-segmentos a acrescentar a ELV escrevemos α, (A, a), γ α, (A, b), β, tal como a Figura 3.26 (b) ilustra.

74 Partição de Polígonos Ortogonais a = B e b = A. Prolongamos o p-segmento e a partir de b. Fazendo E = E a análise é análoga à do caso 5. A Figura 3.26 (c) exemplifica a actualização de ELV : α, (A, a), γ α, (A, b), γ B B A E B A E a e b e e a b a b (a) (b) (c) Figura 3.26: (a) b = B (b) a = B e b < A (c) a = B e b = A 3.3 Representação por Listas de Arestas Duplamente Ligadas Estrutura de dados Tal como já foi referido, a estrutura utilizada para representar a partição baseia-se na apresentada em [Berg et al. 1997]. Passamos então a descrever a adaptação da estrutura referida, no contexto da implementação. A estrutura é designada por lista de arestas duplamente ligada (doubly-connected edge list). Esta estrutura contém um registo para cada peça, meia aresta e ponto da partição (inclui vértices e pontos de Steiner). Informação sobre pontos Cada ponto, além da informação sobre as suas coordenadas, tem também um ponteiro para uma das meias arestas de que é origem. Os pontos da partição que são vértices do polígono têm ainda um ponteiro para o vértice que o segue e outro para o vértice que o precede. Informação sobre peças Para podermos aceder à fronteira de cada peça, a informação que é associada a cada peça inclui um ponteiro para uma das meias arestas que a delimita. A orientação das meias arestas é tal que a peça limitada por cada meia aresta está à sua esquerda.

75 50 Partição de Polígonos Ortogonais Informação sobre meias-arestas Cada meia aresta limita uma só peça, tendo um ponteiro para essa mesma peça. Tal como os vértices, cada meia aresta tem um ponteiro para a meia aresta seguinte e outro para a meia aresta anterior. Como existe uma orientação, podemos também falar em origem e destino duma meia aresta. Assim se uma meia aresta tem origem no ponto v e destino no ponto s, a sua meia aresta gémea tem origem no ponto s e destino no ponto v. Isto significa que basta guardar um destes pontos para cada meia aresta. Iremos guardar o ponto de origem. Como já mencionámos, no caso de existirem buracos, a orientação das meias arestas que os delimitam deverá ser tal que a peça delimitada pelas meias arestas se encontra sempre à esquerda (podendo essa peça ser o exterior adjacente ao buraco). De seguida apresentamos um exemplo detalhado da estrutura que acabámos de descrever. v 1 s 2 e 1, 2 e 8, 2 v 6 e 1, 1 e 8, 1 e 2, 2 e 2, 1 p 1 e 9, 2 e 9, 1 p 2 e 7, 1 e 7, 2 s 1 e 10, 2 e 6, 2 e 6, 1 e 10, 1 v 4 v 5 e 3, 2 p 3 e 3, 1 e 5, 1 e 5, 2 e 4, 1 v 2 v 3 e 4, 2 Figura 3.27: Partição dum polígono ortogonal com a identificação dos diferentes componentes da estrutura. Ponto Coordenadas Aresta incidente Próximo Anterior v 1 (2, 1) e 2,1 v 2 v 6 v 2 (2, 5) e 4,1 v 3 v 1 v 3 (3, 5) e 5,1 v 4 v 2 v 4 (3, 3) e 6,1 v 5 v 3 v 5 (6, 3) e 7,1 v 6 v 4 v 6 (6, 1) e 8,1 v 1 v 5 s 1 (2, 3) e 3,1 - - s 2 (3, 1) e 1,1 - - Tabela 3.1: Tabela referente aos pontos da partição da Figura 3.27.

76 Partição de Polígonos Ortogonais 51 Face Meia aresta p 1 e 2,1 p 2 e 7,1 p 3 e 4,1 Tabela 3.2: Tabela referente às peças da partição da Figura Meia aresta Origem Gémea Face incidente Próxima Anterior e 1,1 s 2 e 1,2 p 1 e 2,1 e 9,2 e 2,1 v 1 e 2,2 p 1 e 10,2 e 1,1 e 3,1 s 1 e 3,2 p 3 e 4,1 e 10,1 e 4,1 v 2 e 4,2 p 3 e 5,1 e 3,1 e 5,1 v 3 e 5,2 p 3 e 10,1 e 4,1 e 6,1 v 4 e 6,2 p 2 e 7,1 e 9,1 e 7,1 v 5 e 7,2 p 2 e 8,1 e 6,1 e 8,1 v 6 e 8,2 p 2 e 9,1 e 7,1 e 9,1 s 2 e 9,2 p 2 e 6,1 e 8,1 e 10,1 v 4 e 10,2 p 3 e 3,1 e 5,1 e 1,2 v 1 e 1,1 null e 2,2 e 8,2 e 2,2 s 1 e 2,1 null e 3,2 e 1,2 e 3,2 v 2 e 3,1 null e 4,2 e 2,2 e 4,2 v 3 e 4,1 null e 5,2 e 3,2 e 5,2 v 4 e 5,1 null e 6,2 e 4,2 e 6,2 v 5 e 6,1 null e 7,2 e 5,1 e 7,2 v 6 e 7,1 null e 8,2 e 6,2 e 8,2 s 2 e 8,1 null e 1,2 e 7,2 e 9,2 v 4 e 9,1 p 1 e 10,2 e 1,1 e 10,2 s 1 e 10,1 p 1 e 2,1 e 9,2 Tabela 3.3: Tabela referente às meias arestas da partição da Figura Algoritmo em Pseudo-Código Apresentamos agora em pseudo-código excertos do método desenvolvido para aplicar o varrimento e obter uma decomposição dum qualquer polígono ortogonal, segundo uma certa direcção.

77 52 Partição de Polígonos Ortogonais A lista de eventos é obtida previamente percorrendo todas as meias arestas do polígono (ou partição) e colocando ordenadamente as que determinarão os eventos numa lista eventos. Assim, o método realizavarrimento inicia o processo de varrimento, horizontal ou vertical. Caso o procedimento seja aplicado a P com varrimento horizontal (resp. vertical) obtém-se Π H (resp. Π V ). Caso seja aplicado a Π H (resp. Π V ) com varrimento vertical (resp. horizontal), obtém-se Π r cut. realizavarrimento(eventos) ptr leprimeiro(eventos) elv inicializaelv(ptr) ptr leseguinte(ptr) Enquanto ptr nulo trataevento(ptr, elv) ptr leseguinte(ptr) O método leprimeiro devolve o primeiro evento da lista de eventos eventos e o método inicializaelv inicia o estado da linha de varrimento com o primeiro evento da lista. Relembramos que cada evento é constituído por uma sequência de p-segmentos, assim como o estado da linha de varrimento. A variável elv representa o estado da linha de varrimento, tendo a referência para o seu primeiro elemento e ptr um evento. As variáveis elv e ptr representam sequências de p-segmentos. A lista de eventos é percorrida através da chamada do método leseguinte que devolve o próximo evento da lista. O método trataevento é chamado para processar os p-segmentos da lista de eventos. trataevento(ptr, elv) e leprimeiropsegmento(ptr) temp elv Enquanto e nulo E localizapsegmento(e, temp) Se E = nulo (e, temp) lidanaoexistencia(e f, e) Senão Se hasobreposicao(e, e) (e, temp) lidasobreposicao(e, e) Senão (e, temp) lidanaosobreposicao(e, e)

78 Partição de Polígonos Ortogonais 53 O método trataevento inicia e com o primeiro p-segmento do evento. Chama para tal, o procedimento leprimeiropsegmento. A seguir, é localizado o primeiro p-segmento E do estado da linha de varrimento que satisfaz a condição a B, em que a e B designam, respectivamente, a origem de e e o fim de E. A variável auxiliar temp conterá a referência para o p-segmento do estado da linha de varrimento utilizado por último, facilitando a localização de E nas várias chamadas de localizapsegmento durante a análise do evento actual. Caso exista um p-segmento que satisfaça a condição a B, o método hasobreposicao verifica se há sobreposição entre e e E. Se houver sobreposição é chamado o método lidasobreposicao. lidasobreposicao(e, e) Se a = A Se b = B retorna actualizaelv(e, e) Senão //b < B retorna bmenorb(e, e) Senão //a A Se a < A retorna amenora biguala(e, e) Senão //A < a retorna AMenora(E, e) O método lidasobreposicao trata a situação em que há sobreposição entre os p-segmentos e e E, ou seja, quando b A. Começa por verificar qual a situação inicial, tendo em conta os vários casos descritos na Subsecção O procedimento actualizaelv é chamado no caso 3. Quando detectada a situação 4 é chamado o método bmenorb. As chamadas dos métodos amenora biguala e AMenora tratam os casos 5 e 6, respectivamente. Se não houver sobreposição entre os p-segmentos e e E, então b < A sendo chamado o método lidanaosobreposicao.

79 54 Partição de Polígonos Ortogonais lidanaosobreposicao(e, e) Enquanto b < A novo novopsegmento(e) insereelv(novo, E) e leseguinte(e) E novo retorna lidasobreposicao(e, e) Este método adiciona o p-segmento e ao estado da linha de varrimento inserindo-o antes de E, chamando insereelv. Todos os p-segmentos que sucedem e no evento e que não intersectem E são também adicionados. O método termina quando já não houver p-segmentos no evento por analisar, ou quando atingir um p-segmento do evento tal que exista sobreposição entre este e E, sendo chamado o método lidasobreposicao. A Figura 3.28 ilustra o caso em que são adicionados ao estado da linha de varrimento três p-segmentos do evento, sendo depois necessário chamar o método lidasobreposicao para o quarto p-segmento. E l e e (a) (b) Figura 3.28: Os p-segmentos assinalados a traço grosso e cinzento claro constituem o estado da linha de varrimento. (a) Temos b < A e E é o primeiro p-segmento do estado da linha de varrimento tal que a B. (b) Ao analisar e verifica-se que há sobreposição entre e e E. Se não existir um p-segmento E tal que a B, é chamado o método lidanaoexistencia. lidanaoexistencia(e, e) Enquanto e nulo novo novopsegmento(e) seguinte(e) novo e leseguinte(e) E novo retorna (e, E)

80 Partição de Polígonos Ortogonais 55 O método lidanaoexistencia termina a análise do evento actual. Isto porque, a partir do momento em que temos um p-segmento do evento com a > B f, em que o índice f significa que se trata do último p-segmento do estado da linha de varrimento, podemos adicionar e e todos os restantes p-segmentos ao estado da linha de varrimento. Os métodos novopsegmento e seguinte criam um novo p-segmento e estabelecem qual o p-segmento que se segue a um dado p-segmento, respectivamente. A Figura 3.29 ilustra o que acabámos de referir. E f l e Figura 3.29: Caso a > B f. Os p-segmentos assinalados a traço grosso e cinzento claro constituem o estado da linha de varrimento. O método trataevento termina apenas quando todos os p-segmentos do evento actual tiverem sido analisados.

81

82 Capítulo 4 Determinação da Visibilidade Uma das fases do método de resolução de MVG apresentado no Capítulo 2 consiste na determinação da região de visibilidade para cada um dos vértices do polígono. Para cada vértice v analisamos a partição do polígono determinando as peças totalmente visíveis e parcialmente visíveis de v. Para cada peça parcialmente visível de v determinamos também a sua secção visível. Assim, neste capítulo descrevemos o algoritmo implementado para a construção de G t (p), G s (p), G t (v) e G s (v) para cada p Π e cada v V P, pelo qual se obtém também a caracterização das secções visíveis em cada peça. O método utilizado na construção desses conjuntos baseia-se numa análise da propagação de visibilidade ao longo da partição, adoptando a ideia de propagação de cones de visibilidade subjacente ao trabalho apresentado em [Aronov et al. 2002, Tomás 2004]. Para caracterizar a região que o vértice v vê, começa por analisar as peças adjacentes a v, depois as vizinhas dessas, e sucessivamente. Para cada v, efectua uma pesquisa em largura no grafo dual associado à partição (isto é, no grafo que traduz a relação de adjacência), com início nas peças adjacentes a v, o que garante a sua correcção [Tomás 2004]. Neste trabalho desenvolvemos uma nova implementação desse método, para que pudesse ser aplicada a polígonos com e sem buracos, focos de amplitudes π/2, π e 2π, e partições Π H, Π V e Π rcut. A implementação anteriormente desenvolvida por Marques não o permitia [Marques 2004], embora tenhamos adoptado as suas ideias principais nesta extensão. Na próxima secção, apresentamos formalmente a noção de propagação de cones de visibilidade e as adaptações que introduzimos ao trabalho anterior para efectuar a extensão 57

83 58 Determinação da Visibilidade referida. Na Secção 4.2 apresentamos uma descrição mais detalhada do método. Na Secção descrevemos como é determinado, com base na informação da visibilidade, um conjunto inicial de peças não visíveis por secções maior. Na Secção descrevemos como se determina a partição duma peça induzida pelas suas secções de visibilidade. 4.1 Ideias Fundamentais Definição 4.1 Seja e = ab o segmento de recta totalmente visível dum vértice v e tal que v e. O cone definido pelos raios va e vb (restrito ao polígono P ) e que tem vértice v é o cone de visibilidade. O cone de visibilidade, fixado pelo segmento e e por v, é denotado por C e (v). Os cones de visibilidade são orientados de forma a que o seu interior (a região visível) tenha uma orientação positiva. O cone C e (v), com e = ab, tem uma orientação positiva se e só se o triângulo avb está orientado positivamente. A Figura 4.1 ilustra o cone de visibilidade orientado. Um cone diz-se degenerado se tem área zero. a e b va C (v) e vb v Figura 4.1: Cone de visibilidade fixado por v e por e Propagação da visibilidade peça a peça A propagação da visibilidade a partir dum vértice v começa pelas suas peças adjacentes. Estas peças são aquelas em cuja fronteira se encontra v. A Figura 4.2 ilustra as peças adjacentes a um vértice no caso da partição Π r cut e da partição Π V. Observe-se que no

84 Determinação da Visibilidade 59 caso da partição Π r cut um vértice reflexo tem três peças adjacentes, enquanto que no caso da partição Π V ou Π H tem duas peças adjacentes. Um vértice convexo tem apenas uma peça adjacente, independentemente da partição considerada. v v v v (a) (b) Figura 4.2: Faces adjacentes ao vértice reflexo v e ao vértice convexo v (a) no caso da partição Π r cut. (b) no caso da partição Π V. Em [Tomás 2004], a análise da propagação da visibilidade é feita através da exploração de quadrantes orientados com origem em v. Neste trabalho, a partição considerada era a Π r cut com 2π-guardas. Cada peça adjacente a v definia duas direcções de pesquisa que identificavam o quadrante associado a essa peça. Essas direcções eram denotadas usando os pontos cardeais N (Norte), S (Sul), E (Este) e W (Oeste). Para uma dada peça p adjacente a v, dizia-se que p se encontrava a (N,E), (N,W), (S,E) ou (S,W) de v se essa fosse a posição do vértice de p diametralmente oposto a v. A Figura 4.3 ilustra a localização duma peça relativamente a um vértice. p 2 p 3 p 1 v Figura 4.3: As peças p 1, p 2 e p 3 estão respectivamente a (S,W), (N,W) e (N,E) de v. No nosso trabalho adoptamos também a noção de direcções de pesquisa. Estas são definidas pelo tipo de foco, isto é, pela amplitude, ajuste (ou posição) e direccionamento (para o interior ou para o exterior) do foco. Assim, num vértice convexo, qualquer um dos tipos de foco fica com a sua amplitude de visão limitada a um quadrante. Para 2π-guardas em vértices reflexos, as direcções de pesquisa são as definidas pelos três quadrantes que

85 60 Determinação da Visibilidade intersectam o interior do polígono. Por exemplo, na Figura 4.4 (a) as direcções de pesquisa são (N,W),(N,E) e (S,E). p 2 p 2 p 2 v p 1 v p 1 v p 1 (a) (b) (c) Figura 4.4: No vértice v está colocado um (a) 2π-guarda; (b) π-reflector; (c) π 2 -reflector. Na Figura 4.4 (b) as direcções de pesquisa são (N,E) e (S,E). De facto, o π-reflector colocado em v define um semi-plano de visibilidade com a direcção E, mas como a visibilidade se propaga duma peça às suas vizinhas, na prática temos as direções (N,E) e (S,E). Para um π-reflector, o quadrante orientado que ilumina define a direcção de pesquisa. Por exemplo, 2 na Figura 4.4 (c), o π -reflector colocado em v define a direcção (S,E) Determinação de cones de visibilidade A visibilidade propaga-se duma peça às suas vizinhas através das suas meias arestas. Uma meia aresta e duma peça p funciona como uma janela que deixa passar a luz (visibilidade) para a sua meia aresta gémea e, iluminando (total ou parcialmente) a peça vizinha de p incidente a e. Referimos que a análise da visibilidade começa pelas peças adjacentes a v. O grafo dual da partição (grafo que traduz a relação de adjacência) será explorado em largura a partir das peças adjacentes a v [Tomás 2004]. Este facto é importante durante a análise duma dada peça p pois garante que as peças vizinhas de p que lhe poderiam transmitir visibilidade foram já analisadas. Seja q uma peça já analisada e que tem como vizinha uma peça p por analisar. Na análise da peça q determinamos como é que cada uma das meias arestas que delimita q é visível de v. Então, para cada uma das peças vizinhas de q ainda não analisadas, marcamos os segmentos da sua fronteira que são visíveis de v. Isto é feito com base na análise da peça q. Por exemplo, se o segmento s da meia aresta e de q é visível, então o correspondente segmento s da meia aresta gémea de e também é visível. A Figura 4.5 ilustra esta ideia.

86 Determinação da Visibilidade 61 s s q p e v Figura 4.5: A peça q foi já analisada. Estamos a analisar a peça p. Como o segmento s da meia aresta e é visível do vértice v, então o segmento s da meia aresta gémea de e é também visível de v. Queremos analisar a peça p. Para determinar a forma como a peça p é visível de v é necessário determinar o(s) cone(s) de visibilidade para essa peça. Estes são construídos tendo em conta os segmentos da fronteira de p que se sabe serem visíveis de v. Podem ocorrer as três situações exemplificadas na Figura 4.6. p p p v (a) v (b) (c) v Figura 4.6: (a) Cone originado por apenas um segmento. (b) Cone originado por dois segmentos. (c) Devido à existência de buracos, existem quatro segmentos visíveis disjuntos para a peça p, e portanto, quatro cones de visibilidade independentes. Se a peça p tiver apenas um segmento visível, a amplitude do cone de visibilidade é definida por esse segmento (Figura 4.6 (a)); Se a peça p tiver dois segmentos visíveis e esses segmentos estiverem unidos, então a amplitude do cone é fixada pela hipotenusa do triângulo rectângulo definido por esses dois segmentos (Figura 4.6 (b)); Se a peça p tiver mais de dois segmentos visíveis ou dois segmentos visíveis não unidos, então tratam-se de cones independentes (Figura 4.6 (c)). Cones de visibilidade independentes ocorrem, exclusivamente, em polígonos com buracos.

87 62 Determinação da Visibilidade No caso de existir mais do que um cone de visibilidade, estes são analisados de forma independente. A Figura 4.7 ilustra o que descrevemos. p p p v v v (a) (b) (c) Figura 4.7: Análise duma peça p com vários cones de visibilidade independentes. Os segmentos assinalados a traço grosso e negro são os segmentos que originam os cones de visibilidade. Os segmentos assinalados a traço grosso e cinzento claro constituem a parte da fronteira da peça vizinha de p que é visível de v. A análise da propagação da visibilidade a uma dada peça por cada cone inicia-se pela determinação do próprio cone. Se for degenerado então não transmite visibilidade. Se uma dada peça p apenas tem cones degenerados relativamente a um vértice v então a peça é não visível de v. Na Figura 4.8 (a) podemos observar um caso que origina um cone degenerado. Se apenas parte do interior da peça está dentro do cone, então a peça é parcialmente visível de v, tal como exemplificado na Figura 4.8 (c). Naturalmente, se existir mais do que um cone de visibilidade, a peça p em análise é parcialmente visível de v. A Figura 4.8 (b) ilustra uma peça p totalmente contida no cone, ou seja, totalmente visível de v. p 1 p 2 p 4 v p 3 v v (a) (b) (c) Figura 4.8: (a) A peça p 2 é não visível de v já que o segmento assinalado (visível em p 2 e transmitido por p 1 ) define com v um cone degenerado. (b) A peça p 3 está totalmente contida no cone de visibilidade, sendo totalmente visível de v. (c) Apenas parte do interior da peça p 4 está dentro do cone de visibilidade. Portanto p 4 é parcialmente visível de v.

88 Determinação da Visibilidade Cortes que caracterizam secções Se a peça p, que está a ser analisada, for parcialmente visível do vértice v então p não está totalmente contida no cone de visibilidade, sendo necessário determinar a parte de p que é visível de v. Cada secção visível de p com relação ao vértice v é definida por um ou dois segmentos de recta oblíquos, uma vez que as restantes (meias) arestas da secção estão contidas nas meias arestas da peça p. Estes segmentos oblíquos resultam da intersecção dos raios que definem o cone de visibilidade com o interior de p (ver a Figura 4.9). p v Figura 4.9: A peça p tem duas secções visíveis de v. Para determinar a ou as secções visíveis duma dada peça p é preciso determinar os segmentos que separam uma região visível duma região não visível em p em relação a v. Por exemplo, na Figura 4.10 pretendemos determinar os segmentos s 1, s 2 e s 3. b 1 s 1 p s 2 s 3 a 1 Figura 4.10: Os segmentos s 1, s 2 e s 3 separam a região visível da região não visível de p em relação a v. Na fase de refinamento da partição descrita no Capítulo 2 poderá ser necessário construir as secções de visibilidade para uma dada peça p. Para tal iremos guardar os segmentos que definem essas secções. No exemplo da Figura 4.10, saber que o segmento s 1 delimita uma secção de visibilidade não permite determinar qual é essa região visível. Mas se os segmentos forem guardados de modo a que a orientação da secção de visibilidade que delimitam seja positiva (ou seja, se forem guardados segundo a orientação do cone de visibilidade que lhes deu origem), então podemos concluir que a parte visível está à esquerda do segmento orientado s 1 = a 1 b 1. Estes segmentos orientados são designados cortes. Na Figura 4.11 é

89 64 Determinação da Visibilidade b 1 a 2 b 3 s 1 p s 2 s 3 a 1 b 2 a 3 Figura 4.11: Existem duas secções de visibilidade em p. Uma é definida pelo corte s 1 e a outra pelos cortes s 2 e s 3. possível observar os cortes a guardar. Os cortes são guardados de modo a identificar aqueles que têm origem num mesmo cone de visibilidade. Assim, em casos como o da Figura 4.11 é possível reconhecer que os cortes s 2 e s 3 definem a mesma secção visível. 4.2 Descrição do Algoritmo Apresentamos nesta secção o algoritmo para a determinação da visibilidade. Para representar os conjuntos G t (p), G s (p), G t (v) e G s (v) optámos por utilizar máscaras de bits, uma vez que permitem efectuar as operações usuais entre conjuntos de forma eficiente. Observando a Figura 4.12 verificamos que a partição Π r cut é composta por oito peças. Assim sendo, o comprimento de cada máscara dos vértices é oito. v 11 v 1 0 v 3 v 2 p 8 v 9 v 7 v 8 p 5 v 6 v 5 v 4 p 2 p 7 p 6 p 4 p 3 p 1 v 1 2 v 1 Figura 4.12: Polígono e respectiva partição Π r cut. Por exemplo G t (v 2 ) = {p 1, p 2 } e G s (v 2 ) = {p 3, p 4 }. As máscaras correspondentes a cada um destes conjuntos são [1, 1, 0, 0, 0, 0, 0, 0] e [0, 0, 1, 1, 0, 0, 0, 0], respectivamente. Como foi mencionado anteriormente, no contexto deste trabalho, os focos são sempre posicionados de modo a estarem ajustados a uma das arestas incidentes ao vértice em causa. Assim, no caso de vértices reflexos, e no caso de o foco ter amplitude π ou π, existem duas 2

90 Determinação da Visibilidade 65 possibilidades de colocação do foco - identificadas por pos1 e pos2. Seguindo a orientação das meias arestas da fronteira do polígono, pos1 corresponde à colocação do foco ajustado à meia aresta com fim em v e pos2 corresponde à localização do foco ajustado à meia aresta com origem em v. Nas restantes situações há apenas uma posição possível (pos1). A Figura 4.13 ilustra, para π -reflectores, como é feito o ajuste o foco. Para π-reflectores o 2 ajuste é feito de modo idêntico. POS1 POS2 v Figura 4.13: Ajustamento de π -reflectores a arestas. 2 Para representar G t (v) e G s (v) associados a pos1 e G t (v) e G s (v) associados a pos2, no caso de vértices reflexos e reflectores (π-guardas ou π -guardas), as máscaras de bits são 2 matrizes 2 Π em que Π representa o número de peças da partição. Considerando o polígono da Figura 4.12 com um π-guarda colocado no vértice v 4 segundo pos1 obtemos G t (v 4, pos1) = {p 1, p 2 } e G s (v 4, pos1) = {}. Se o reflector estiver colocado segundo pos2 os conjuntos são G t (v 4, pos2) = {p 1, p 3, p 4, p 6, p 7 } e G s (v 4, pos2) = {}. As máscaras correspondentes a cada um dos conjuntos G t (v 4 ) e G s (v 4 ) são [ ] [ ] 1, 1, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0, 0 e, respectivamente. 1, 0, 1, 1, 0, 1, 1, 0 0, 0, 0, 0, 0, 0, 0, 0 Para a determinação e caracterização da visibilidade começamos por chamar o método determinavisibilidade que a seguir se apresenta. determinavisibilidade(poligono, tipof oco) Para cada v de poligono F iniciaf(v, tipof oco,pos1) determinaregiaovisibilidade(v, tipof oco,pos1,f ) Se v reflexo (tipof oco = π tipof oco = π) 2 F iniciaf(v, tipof oco,pos2) determinaregiaovisibilidade(v, tipof oco,pos2,f )

91 66 Determinação da Visibilidade Este método chama, para cada possível posição de colocação dum guarda nos vértices, o método iniciaf que inicia a fila F das peças a analisar, chamando em seguida o método determinaregiaovisibilidade para a determinação da região de visibilidade. iniciaf(v, tipof oco, pos) Se v reflexo retorna determinaadjacentesevisibilidade(v, tipof oco, pos) Senão F p lefaceadjacente(v)) marcar(p, v, pos,total visivel) adicionavizinhas(p, F ) retorna F No método iniciaf começamos por identificar o tipo de vértice. Se v é convexo tem apenas uma peça adjacente. O método lefaceadjacente devolve a peça adjacente a v. Seja p essa peça. Sabemos que independentemente da amplitude do foco, p é totalmente visível de v. Podemos então colocar p em G t (v) e v em G t (p). Para o fazer, é executado o método marcar. Este activa o bit correspondente a v (posição pos1) em G t (p) e activa o bit correspondente a p em G t (v). Marca ainda a peça p como analisada por v. É então chamado o método adicionavizinhas. Este coloca as peças vizinhas de p na fila F. Se o vértice v é reflexo executamos o método determinaadjacentesevisibilidade. Se o foco tem amplitude 2π, todas as peças adjacentes a v são totalmente visíveis de v. Então, para cada uma das peças adjacentes a v são executados os métodos marcar e adicionavizinhas relativamente ao vértice v (posição pos1). Se o foco tiver amplitude π ou π determinamos a forma como cada uma das peças adjacentes 2 a v é visível de v. O método facesadjacentes determina o conjunto das peças adjacentes a v e o método determinavisibilidadeface determina a forma como uma dada peça é visível de v, fixada uma posição pos. Então, para cada uma das peças adjacentes e visível de v são executados os métodos marcar e adicionavizinhas relativamente ao vértice v (posição pos).

92 Determinação da Visibilidade 67 determinaadjacentesevisibilidade(v, tipof oco, pos) F Se tipof oco = 2π Para cada p em facesadjacentes(v) marcar(p, v, pos,total visivel) adicionavizinhas(p, F ) retorna F Senão // foco π ou π 2 Para cada p em facesadjacentes(v) vis determinavisibilidadeface(p, v, pos) marcar(p, v, pos, vis) Se vis nao visivel retorna F adicionavizinhas(p, F ) Após a análise das peças adjacentes ao vértice v, prosseguimos com a análise das peças que se encontram em F. O método determinaregiaovisiblidade analisa cada uma das peças p que se encontra na fila e determina a forma como p é visível de v. determinaregiaovisiblidade(v, tipof oco, pos, F ) Enquanto F p retiraprimeiro(f) vis determinavisibilidadeface(p, v, pos) marcar(p, v, pos, vis) Se vis nao visivel adicionavizinhas(p, F ) O método determinaregiaovisiblidade começa por retirar o elemento à cabeça de F através da chamada do método retiraprimeiro. Seja p esse elemento. Para a peça p é executado o método determinavisibilidadeface e consoante o valor devolvido assim é actualizada a informação nas máscaras de bits, tanto de v como de p, usando o método marcar. Se p for visível de v, o método adicionavizinhas é executado, adicionando as suas vizinhas à fila F (apenas as peças vizinhas não analisadas e que não se encontrem já em F ).

93 68 Determinação da Visibilidade determinavisiblidadeface(p, v, pos) l determinaconevisibilidade(p, v, pos) Se formacone(l) retorna determinavisibilidadearestas(l, v, p) Caso contrario retorna nao visivel A função determinavisiblidadeface começa por determinar o cone de visibilidade. Se este for degenerado, a peça p é não visível de v. Se o cone for não degenerado é chamado o método determinavisibilidadearestas. determinavisibilidadearestas(l,v,p) visibilidade total visivel Para cada aresta e em p vis determinavisibilidadearesta(e, l) Se vis = parcial visivel visibilidade parcial visivel retorna visibilidade O procedimento determinavisibilidadearestas chama, para cada uma das meias arestas de p, o método determinavisibilidadearesta que verifica como se localiza uma meia aresta e relativamente ao cone de visibilidade. Se e estiver totalmente dentro do cone de visibilidade, então o método devolve total visivel. Caso contrário é devolvido parcial visivel. Tendo em conta que neste momento já foi excluída a hipótese de p ser não visível de v, basta existir uma meia aresta de p não totalmente contida no cone de visibilidade para p ser parcialmente visível de v. O método determinavisibilidadearesta, para verificar se uma dada meia aresta e está dentro do cone de visibilidade determina, caso existam, o(s) ponto(s) de intersecção entre e e o cone de visibilidade, permitindo determinar o(s) corte(s). 4.3 Uso e Actualização da Informação Nesta secção começamos por descrever como é determinado um conjunto Γ inicial maior, apresentando dois critérios que permitem reconhecer peças não visíveis por secções. Em

94 Determinação da Visibilidade 69 seguida fazemos uma descrição geral do processo de refinamento duma peça partição. Apresentamos ainda um exemplo da decomposição de uma peça segundo as suas secções visíveis Determinação de Γ inicial Nesta secção descrevemos os critérios implementados para a determinação do conjunto Γ inicial. Este conjunto é constituído pelas peças que é trivial determinar que não são visíveis por secções. Na Secção 2.3 referimos que seria útil alargar o conceito de peças trivialmente não vsíveis por secções, pois permitiria obter um conjunto Γ 0 maior. Um dos critérios para a determinação dessas peças é o mesmo usado em trabalhos anteriores. Este critério afirma que as peças parcialmente visíveis por, no máximo, um vértice são peças não visíveis por secções [Tomás et al. 2003, Marques 2004, Tomás et al. 2006]. Tendo sido já introduzida a noção de corte, apresentamos mais dois critérios para a determinação de peças trivialmente não visíveis por secções. Observemos a Figura Os vértices v 2 e v 4 vêem parcialmente a peça p 4. Os cortes v 6 v 5 v 6 v 5 v 2 p 1 p 2 v 1 v 2 p 1 p 2 v 1 v 4 v 3 v 4 v 3 p 3 p 3 v 7 v 8 v 7 v 8 p 4 p 4 v 9 v 1 0 v 9 v 1 0 Figura 4.14: A partição considerada é Π H. Apesar de ser parcialmente visível por mais do que um vértice, a peça p 4 é trivialmente não visível por secções. originados por estes vértices entram na peça pelo mesmo lado. Como a secção visível se situa à esquerda dos cortes, podemos então concluir que a peça p 4 é não visível por secções. Com efeito, se todos os cortes para uma dada peça, entrarem pelo mesmo lado, então essa peça é trivialmente não visível por secções. Consideremos agora o exemplo da Figura O corte s 1 define uma secção de visibilidade da peça p e os cortes s 2 e s 3 definem outra. Como estes três cortes não entram todos pelo

95 70 Determinação da Visibilidade s 1 s 2 p s 3 Figura 4.15: Apesar de um dos cortes não entrar pelo mesmo lado que os outros dois cortes, a peça p é trivialmente não visível por secções. mesmo lado de p, poder-se-ia pensar que nada se pode concluir quanto a p ser trivialmente não visível por secções. Mas de facto esta é uma peça de Γ 0, porque um dos cortes do par ( s 2, s 3 ) entra pelo mesmo lado que s 1. Com efeito, se introduzíssemos mais secções de visibilidade em p e todas elas tivessem um dos cortes que entrasse pelo mesmo lado que s 2 (ou s 1 ), p continuaria a ser trivialmente não visível por secções. Existe outro critério baseado no declive e na direcção dos cortes que nos permite determinar se uma dada peça é não visível por secções. Observemos a Figura 4.16 (a). A peça p é não visível por secções. Cada um dos cortes s 1, s 2 e s 3 define uma secção visível, encontrandose todos os cortes no mesmo quadrante do plano. Este é o outro critério que permite determinar se uma peça é trivialmente não visível por secções. Tal como para o critério anterior, se introduzíssemos mais secções de visibilidade em p e todas elas tivessem um dos cortes no mesmo quadrante de s 2, a peça p continuaria a ser trivialmente não visível por secções. A Figura 4.16 (b) ilustra este caso. s 1 s 5 s 1 p p s 3 s 2 s s 3 4 s 2 (a) (b) Figura 4.16: (a) Como todos os cortes estão no mesmo quadrante, a peça p é trivialmente não visível por secções. (b) Os cortes s 4 e s 5 definem uma secção visível. Como s 5 está no mesmo quadrante dos outros cortes, a peça é não visível por secções. Assim, para construir Γ 0 verificamos, para cada p Π, se a cardinalidade da máscara G s (p) é no máximo 1 ou se os cortes em p respeitam um dos outros dois critérios apresentados. Ou seja, verificamos se todos os cortes para a peça p entram pelo mesmo lado de p ou se estão todos no mesmo quadrante.

96 Determinação da Visibilidade Refinamento duma peça da partição Durante a aplicação do método de aproximação para resolução de MVG há necessidade de refinar a partição. Tal refinamento é obtido por decomposição duma peça que seja parcialmente visível dum conjunto de vértices. A decomposição realizada é a que é induzida pelos cortes que determinam as secções visíveis. Para a peça p será designada por Z p. A determinação de Z p envolve a actualização da informação sobre visibilidade. Assim, cada secção de visibilidade tem associada informação sobre o vértice v que a determinou. Após concluir a inserção dos cortes correspondentes, adicionamos v ao conjunto dos vértices que vêem totalmente as peças do novo arranjo que tal secção cobre. Nesta secção descreveremos a ideia do método, proposto em [Tomás 2004], aplicado para construir Z p, e que consiste numa adaptação do algoritmo apresentado por Berg et al. para construção de arranjos de rectas [Berg et al. 1997]. Em [Marques 2004] é apresentada uma implementação do algoritmo para a construção de Z p e determinação dos vértices que vêem cada peça de Z p. A informação necessária para a construção de Z p e caracterização de cada uma das peças resultantes é obtida a partir de G s (p) e dos cortes que definem as diferentes secções de visibilidade de p. Cada uma das peças de Z p é um polígono simples convexo que satisfaz a restrição de não colaboração. Ou seja, cada peça de Z p ou é totalmente visível ou totalmente invisível de cada vértice do polígono [Ghosh 1987]. Assim, para decidir se uma dada peça de Z p é visível dum vértice v basta verificar se um qualquer ponto do seu interior - ponto testemunho - é visível de v [Tomás 2004]. De acordo com o Teorema de Caratheodory (cf., por exemplo [Schrijver 1986]) um qualquer ponto no interior do invólucro convexo dum conjunto de pontos pode ser expresso como uma combinação linear convexa de três vértices desse invólucro. Podemos assim considerar o ponto testemunho um ponto no interior dum triângulo definido por três vértices da peça, por exemplo o ponto 1(v v 2 + v 3 ) em que v 1, v 2 e v 3 são três vértices consecutivos da peça Construção de Z p As peças de Z p são as faces do arranjo de segmentos que definem a fronteira de p e as secções de visibilidade V s p (v), para v G s (p). Iremos descrever o algorimo para a determinação de Z p seguindo o exposto nos trabalhos [Tomás 2004, Tomás et al. 2006].

97 72 Determinação da Visibilidade O arranjo é construído incrementalmente, partindo da peça p. Em cada iteração inserimos uma secção adicionando os cortes oblíquos que definem a secção, obtendo um novo arranjo. Como notámos anteriormente, cada secção pode ser definida por um ou dois cortes. Ao introduzir um corte, algumas peças são divididas. A ordem pela qual são visitadas é fixada pela orientação do corte, como se pode observar na Figura Figura 4.17: A ordem pela qual são visitadas as peças do arranjo é determinada pela orientação do corte. A cada momento, cada peça tem associado um subconjunto de vértices de G s (p) dos quais é totalmente visível. Quando uma peça é dividida, as novas peças herdam esse conjunto de guardas. Uma vez concluída a inserção dos cortes que definem uma secção visível relativamente ao vértice v determinamos quais as peças do novo arranjo que são cobertas por essa secção, ou seja, que são visíveis de v. A semelhança do que acontece na propagação da visibilidade, iremos efectuar uma exploração em largura do grafo dual do arranjo. A peça onde iniciamos a visita ao grafo dual é uma peça que sabemos ser visível de v. Com o objectivo de simplificar a determinação das peças visíveis de v, é mantida a referência duma peça que se sabe estar dentro da secção de visibilidade determinada por v. Chegando a uma qualquer peça do arranjo, decidimos se é visível determinando o seu ponto testemunho e verificando se este é visível de v. De forma análoga ao adoptado para a propagação da visibilidade, se a peça for visível adicionamos as suas peças vizinhas a uma fila (apenas as peças não analisadas e que não estejam já na fila). Se a peça for não visível de v, então nenhuma das suas peças vizinhas é adicionada à fila. Desta forma, evitamos visitar muitas peças que são não visíveis sem deixar de visitar as que são visíveis.

98 Determinação da Visibilidade Exemplo Observemos o polígono da Figura 4.18 (a). Temos G s (p) = {v 1, v 14 }. Para determinar a partição induzida pelas secções visíveis da peça p, introduzimos em p, para cada v G s (p), os respectivos cortes partindo a peça. À medida que os cortes são adicionados é necessário actualizar a visibilidade. Isto é, a forma como cada uma das novas peças é visível de cada vértice em G s (p), se totalmente visível ou se não visível. v 8 v9 v 7 v 5 v6 v 4 v 3 v 2 p v 1 0 v 11 v1 3 v 1 2 v 1 6 v 1 7 v 1 4 v 1 5 v 1 8 v 1 (a) (b) (c) Figura 4.18: (a) A peça p é parcialmente visível dos vértices v 1 e v 14. (b) Resultado da introdução do corte que define a secção visível de v 1 e actualização da visibilidade. (c) Adição dos cortes originados pela secção visível de v 14 e actualização da visibilidade. Uma face do arranjo não fica visível de nenhum vértice. Na Figura 4.18 (b) é adicionado à peça o corte provocado pelo vértice v 1, resultando duas novas peças. A peça visível de v 1 é a que está à esquerda do corte introduzido. Na Figura 4.18 (c) são inseridos os cortes relativos ao vértice v 14. Da peça não visível de v 1 resultam duas novas peças e da peça visível resultam três novas peças. O vértice v 4 vê a região delimitada pelos cortes. A conclusão que se retira é que a peça p é não visível por secções. Isto porque uma das peças de Z p é invisível para todos os vértices em G s (p). Nesta situação, a partição da peça p não será usada.

99 74 Determinação da Visibilidade Consideremos agora o exemplo da Figura Neste caso, temos G s (p) = {v 1, v 6, v 16 }. v 7 v 6 v 1 0 v 11 v 9 v 1 2 v 1 3 v 8 p v 5 v 4 3 v 2 v 1 5 v 1 4 v 1 6 v 1 8 v 1 9 v 1 7 v 2 0 v 1 Figura 4.19: A peça p é parcialmente visível dos vértices v 1, v 6 e v 14. Construímos a partição Z p como a Figura 4.20 ilustra. (a) (b) (c) Figura 4.20: Actualização do arranjo e da visibilidade por (a) introdução do corte provocado pelo vértice v 1 ; (b) adição do corte originado pelo vértice v 6 ; (c) inserção do corte relativo ao vértice v 16. Concluímos que todas as peças resultantes são visíveis dalgum vértice v em G s (p), logo a peça p é visível por secções. Então, passamos a utilizar a partição Z p em vez da peça p.

100 Capítulo 5 Implementação Para avaliar o método proposto implementámos uma aplicação com uma interface gráfica utilizando a linguagem Java e o ambiente de desenvolvimento Netbeans Para a resolução dos sucessivos sub-problemas de cobertura mínima, analisados no Capítulo 2, utilizámos os resolutores da biblioteca Choco (versão ) que é uma biblioteca Java para resolução de problemas de satisfação de restrições em domínios finitos baseada no paradigma de Programação por Restrições [Rossi et al. 2007]. O sistema Choco 2 é actualmente um projecto em código aberto (open source, em Inglês) [F. Laburthe & Le Project OCRE 2000]. Essencialmente, em programação por restrições são declaradas restrições e um resolutor é usado para as resolver. As restrições são relações e um problema de satisfação de restrições (também abreviadamente designado por CSP, Constraint Satisfaction Problem, em Inglês) estabelece as relações entre as variáveis de decisão. Mais formalmente, um problema de satisfação de restrições consiste num conjunto de variáveis, cada uma com um domínio de valores, e num conjunto de restrições em subconjuntos dessas variáveis. 5.1 Estrutura de Classes da Implementação Na Figura 5.1 está desenhado o diagrama correspondente às classes que definem as estruturas de dados. Além destas classes/estruturas criadas por nós, foram ainda utilizadas as classes Hashtable, BitSet e Arrays existentes na API do Java

101 76 Implementação Figura 5.1: Diagrama das classes que constituem as estruturas de dados. Classes para estruturas de dados Em seguida serão descritas, duma forma geral, as principais classes para as estruturas de dados utilizadas na implementação. A classe Structure (Figura 5.2) é utilizada para representar o polígono/partição. Um Figura 5.2: Atributos das classes Structure, LoL e Vertex. objecto desta classe é definido à custa de objectos da classe Vertex e da classe LoL. A classe LoL (Figura 5.2) permite representar listas simples de objectos com uma etiqueta (ou chave) associada. Cada objecto desta classe é composto por um objecto Object, um outro Rational e um do tipo LoL para guardar a referência do elemento seguinte da lista.

102 Implementação 77 No caso dum objecto Structure, esta estrutura auxiliar contém a lista dos buracos. Um objecto da classe Vertex (Figura 5.2) representa um elemento duma lista duplamente ligada de GridNode. Outros atributos relevantes são objectos do tipo BitSet para representar os conjuntos G t (v) e G s (v) e um objecto do tipo HasseNode para possibilitar uma mais rápida actualização do diagrama de Hasse que representa a relação -dominância entre classes de vértices. GridNode (Figura 5.3) contém, além das coordenadas do ponto da partição, uma referência para uma das meias arestas de que é origem. Para isso, GridNode tem associado um objecto Figura 5.3: Atributos das classes GridNode, HalfEdge e Face. do tipo HalfEdge. Um objecto da classe HalfEdge (Figura 5.3) representa um elemento duma lista duplamente ligada de meias arestas. Cada objecto desta classe é definido pelo GridNode que é a sua origem, pela HalfEdge gémea e pela Face incidente, isto é, a peça que delimita. A classe Face (Figura 5.3) permite representar peças. Cada objecto da classe Face é definido por uma das HalfEdge que a delimita, por objectos BitSet para representar G t (p) e G s (p) e uma lista LoL para guardar os cortes, agrupados pelo vértice que os origina (etiqueta correspondente à posição do foco). A classe Face contém ainda métodos que permitem decompor uma peça e verificar se a peça é ou não visível por secções. Um objecto do tipo Cut (Figura 5.4) identifica uma secção visível dum guarda e é definido por um array de objectos da classe RationalPoint2D e por um Vertex, para identificar o guarda que originou o(s) corte(s). Figura 5.4: Atributos das classes Cut e MPElement.

103 78 Implementação A classe RationalPoint2D representa um ponto cujas coordenadas são números racionais, isto é, do tipo Rational. Como pode existir mais do que uma secção visível associada a um mesmo vértice numa peça, os objectos do tipo Cut são guardados em objectos do tipo MPElement. Cada objecto da classe MPElement (Figura 5.4) representa um elemento duma lista de Object duplamente ligada. Deste modo, a lista de cortes em Face é uma lista de cortes associados a um mesmo vértice. Algumas das classes da estrutura de dados foram criadas como estruturas auxiliares. É este o caso da classe Segment (Figura 5.5) que é definida por dois objectos do tipo HalfEdge (primeira e última meia aresta do p-segmento) e ainda um objecto do tipo Segment que nos permite aceder ao p-segmento seguinte. Portanto, um objecto da classe Figura 5.5: Classes Segment, EdgeVisibility e VisibilityWindow e seus atributos. Segment representa um elemento duma lista de p-segmentos. As classes EdgeVisibility e VisibilityWindow auxiliam na determinação da visibilidade. A classe EdgeVisibility (Figura 5.5) é uma subclasse da classe Segment. Além dos atributos desta classe tem dois objectos RationalPoint2D que indicam os pontos de início e fim do segmento visível. Estes pontos estão sobre os p-segmentos início e fim herdados da classe Segment. Um objecto da classe VisibilityWindow (Figura 5.5) é definido por dois objectos do tipo RationalPoint2D e um outro do tipo VisibilityWindow que nos permite aceder à janela de visibilidade seguinte, caso exista. Durante a análise duma peça, para saber a forma como a peça é visível dum guarda g, vão sendo determinados os segmentos da sua fronteira que são visíveis de g. Estes segmentos visíveis são guardados em objectos do tipo EdgeVisibility. Após a análise da peça, determinamos os pontos iniciais e finais de cada segmento visível e criamos objectos VisibilityWindow que serão associados à respectiva peça vizinha (não analisada) da peça acabada de analisar. Cada um destes pontos ficará guardado num dos objectos do tipo RationalPoint2D. Assim, em cada objecto do tipo Face poderá existir uma lista de janelas de visibilidade que é re-iniciada para cada guarda g. Apesar de os elementos da classe VisibilityWindow constituirem uma estrutura auxiliar e temporária, esta estrutura está associada à classe Face para evitar a inserção e pesquisa de janelas de visibilidade numa lista com as peças da partição.

104 Implementação 79 Cada objecto da classe HasseNode (Figura 5.6) é constituído por três objectos do tipo MPElement que representam a lista de pais, filhos e de objectos (vértices ou peças) daquele nó do diagrama. Além destes atributos, tem ainda um objecto do tipo BitSet para G t (v) Figura 5.6: Classes HasseNode e VertexHN e respectivos atributos. ou G t (p) conforme se trate dum nó dum diagrama para vértices/guardas ou para peças. No caso dos vértices, os nós têm guardados objectos da classe VertexHN (Figura 5.6). Cada objecto desta classe é definido por um objecto Vertex e por uma etiqueta que identifica a posição considerada para o foco. Classes para algoritmos Na Figura 5.7 está desenhado o correspondente diagrama das classes que implementam os algoritmos necessários ao longo de todo o processo de determinação do número mínimo de guardas necessários para vigiar um dado polígono assim como a sua localização. Figura 5.7: Classes que implementam as diferentes fases do método. A classe associada à interface gráfica é uma subclasse da classe JFrame que permite a interacção com o utilizador. É nesta classe que serão chamados os métodos correspondentes às diferentes fases do algoritmo de resolução de MVG. De notar que a execução destes métodos não está dependente da existência duma classe deste tipo. Isto é, para executar os métodos basta ter uma classe com um método main(). A classe começa por fazer a

6. O Problema da Galeria de Arte

6. O Problema da Galeria de Arte 6. O Problema da Galeria de Arte António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Introdução Hoje em dia as salas dos novos museus não têm em

Leia mais

Ponto em Polígono. António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro

Ponto em Polígono. António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Ponto em Polígono António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Preliminares Uma curva poligonal (ou cadeia poligonal) é uma sequência finita v 0, e 0, v,, e n-2, v n-, e n-

Leia mais

Universidade de Aveiro Departamento de Matemática. Cristina João Frade Pires. Algumas variantes do problema de iluminação de qualidade

Universidade de Aveiro Departamento de Matemática. Cristina João Frade Pires. Algumas variantes do problema de iluminação de qualidade Universidade de Aveiro Departamento de Matemática 2008 Cristina João Frade Pires Algumas variantes do problema de iluminação de qualidade Universidade de Aveiro Departamento de Matemática 2008 Cristina

Leia mais

Teorema da Galeria de Arte. Geometria Computacional p.1/15

Teorema da Galeria de Arte. Geometria Computacional p.1/15 Teorema da Galeria de Arte Geometria Computacional p.1/15 Curvas poligonais Curva poligonal: seqüência (v 0,e 0,v 1,...,e n 2,v n 1 ) onde v 0,...,v n 1 são pontos em R 2 e e i é um segmento de reta com

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional Cristina G. Fernandes Departamento de Ciência da Computação do IME-USP http://www.ime.usp.br/ cris/ segundo semestre de 2014 GeoComp 2014 p. 1 Teorema da Galeria de Arte GeoComp

Leia mais

Imagination is more important than knowledge A. Einstein. 4. Partição de Polígonos. Mestrado em Matemática e Aplicações

Imagination is more important than knowledge A. Einstein. 4. Partição de Polígonos. Mestrado em Matemática e Aplicações 4. Partição de Polígonos Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Imagination is more important than knowledge A. Einstein 2 Algumas motivações

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: - Polígonos 1 Roteiro Introdução Polígonos Teorema da Curva de Jordan Decomposição de polígonos Triangulações Estrutura

Leia mais

Busca em Regiões Ortogonais

Busca em Regiões Ortogonais Busca em Regiões Ortogonais Claudio Esperança Paulo Roma 1 O problema O problema O problema consiste em recuperar objetos tipicamente pontos que intersectam ou estão contidos numa região simples do espaço

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

Modelação de Sólidos. Sistemas Gráficos/ Computação Gráfica e Interfaces FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

Modelação de Sólidos. Sistemas Gráficos/ Computação Gráfica e Interfaces FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Modelação de Sólidos Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Modelação de Sólidos Em 2D um conjunto de segmentos de recta ou curvas não formam necessariamente uma área fechada. Em 3D uma colecção

Leia mais

Universidade de Aveiro Departamento de Matemática. Ana Sofia de Melo e Ramos. Métodos Heurísticos para a Geração de Polígonos Simples

Universidade de Aveiro Departamento de Matemática. Ana Sofia de Melo e Ramos. Métodos Heurísticos para a Geração de Polígonos Simples Universidade de Aveiro Departamento de Matemática 2008 Ana Sofia de Melo e Ramos Métodos Heurísticos para a Geração de Polígonos Simples Universidade de Aveiro Departamento de Matemática 2008 Ana Sofia

Leia mais

5. Invólucros Convexos no Plano (cont )

5. Invólucros Convexos no Plano (cont ) 5. Invólucros Convexos no Plano (cont ) Antonio Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Complexidade Algorítmica Notação O Sejam T(n) e f(n)

Leia mais

5. Invólucros Convexos no Plano

5. Invólucros Convexos no Plano 5. Invólucros Convexos no Plano Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Problema: uma primeira abordagem Definição do Problema: Dado: um

Leia mais

Teorema da Galeria de Arte e Triangularização de Polígonos e Pontos no Plano

Teorema da Galeria de Arte e Triangularização de Polígonos e Pontos no Plano e Triangularização de Polígonos e Pontos no Plano Rocha Corrêa Orientador: Carlos Eduardo Ferreira Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo

Leia mais

Professor: Computação Gráfica I. Anselmo Montenegro Conteúdo: - Objetos gráficos planares. Instituto de Computação - UFF

Professor: Computação Gráfica I. Anselmo Montenegro  Conteúdo: - Objetos gráficos planares. Instituto de Computação - UFF Computação Gráfica I Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: - Objetos gráficos planares 1 Objetos gráficos: conceitos O conceito de objeto gráfico é fundamental para a Computação

Leia mais

Teorema da Galeria de Arte

Teorema da Galeria de Arte Teorema da Galeria de Arte Quantos guardas são necessários? Geometria Computacional p.1/23 Teorema da Galeria de Arte Quantos guardas são necessários? Quatro? Geometria Computacional p.2/23 Teorema de

Leia mais

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved.

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved. Arranjos Claudio Esperança Paulo Roma 1 Arranjos Arranjos de retas e planos são a terceira estrutura em importância em GC. Arranjos de retas são coleções de retas infinitas distribuídas no plano. Arranjos

Leia mais

Professor: Anselmo Montenegro Conteúdo (aula 6): - Fecho Convexo 2D. Instituto de Computação - UFF

Professor: Anselmo Montenegro  Conteúdo (aula 6): - Fecho Convexo 2D. Instituto de Computação - UFF Geometria Computacional Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo (aula 6): - Fecho Convexo 2D 1 Roteiro Introdução Noções de convexidade Algoritmo Incremental Algoritmo Embrulho para

Leia mais

Geometria Computacional: Polígonos

Geometria Computacional: Polígonos Geometria Computacional: INF2604 Geometria Computacional Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC O que é um polígono? Um polígono é uma região fechada do plano limitada por uma coleção de segmentos

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema

Leia mais

2.1 Sucessões. Convergência de sucessões

2.1 Sucessões. Convergência de sucessões Capítulo 2 Sucessões reais Inicia-se o capítulo introduzindo os conceitos de sucessão limitada, sucessão monótona, sucessão convergente e relacionando estes conceitos entre si. A análise da convergência

Leia mais

Modelação de Sólidos. Sistemas Gráficos/ Computação Gráfica e Interfaces FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

Modelação de Sólidos. Sistemas Gráficos/ Computação Gráfica e Interfaces FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Modelação de Sólidos Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Modelação de Sólidos Em 2D um conjunto de segmentos de recta ou curvas não formam necessariamente uma área fechada. Em 3D uma colecção

Leia mais

Triangulação de Delauney

Triangulação de Delauney Triangulação de Delauney Um pedaço da superfície terrestre é chamado de terreno. Um terreno é uma superfície 2-dimensional em um espaço 3-dimensional com uma propriedade especial: cada linha vertical intercepta

Leia mais

Algoritmos para a Determinação da Região Coberta por um k-transmissor

Algoritmos para a Determinação da Região Coberta por um k-transmissor Universidade de Aveiro 2011 Departamento de Matemática, Alexandra Alves Algoritmos para a Determinação da Região Coberta por um k-transmissor Universidade de Aveiro 2011 Departamento de Matemática, Alexandra

Leia mais

Algoritmos geométricos

Algoritmos geométricos Algoritmos geométricos introdução a conceitos básicos de geometria computacional que serão abordados de forma mais avançada na disciplina Computação Gráfica disciplina de computação gráfica arquitetura

Leia mais

Utilização de Métodos de Cálculo Numérico em Aerodinâmica

Utilização de Métodos de Cálculo Numérico em Aerodinâmica Cálculo Numérico em Erro vs Incerteza - Um erro define-se como a diferença entre uma determinada solução e a verdade ou solução exacta. Tem um sinal e requer o conhecimento da solução exacta ou verdade

Leia mais

Capítulo Coordenadas no Espaço. Seja E o espaço da Geometria Euclidiana tri-dimensional.

Capítulo Coordenadas no Espaço. Seja E o espaço da Geometria Euclidiana tri-dimensional. Capítulo 9 1. Coordenadas no Espaço Seja E o espaço da Geometria Euclidiana tri-dimensional. Um sistema de eixos ortogonais OXY Z em E consiste de três eixos ortogonais entre si OX, OY e OZ com a mesma

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional Cristina G. Fernandes Departamento de Ciência da Computação do IME-USP http://www.ime.usp.br/ cris/ segundo semestre de 2011 GeoComp 2011 p. 1 Partição em polígonos convexos Problema:

Leia mais

OBSTRUÇÕES DE COGRAFOS-(K, L)

OBSTRUÇÕES DE COGRAFOS-(K, L) OBSTRUÇÕES DE COGRAFOS-(K, L) Raquel de Souza Francisco COPPE/Sistemas, Universidade Federal do Rio de Janeiro, RJ, 21945-970, Brasil raquelbr@cos.ufrj.br Sulamita Klein IM e COPPE/Sistemas, Universidade

Leia mais

Problemas de Fluxo em Redes

Problemas de Fluxo em Redes CAPÍTULO 7 1. Conceitos fundamentais de grafos Em muitos problemas que nos surgem, a forma mais simples de o descrever, é representá-lo em forma de grafo, uma vez que um grafo oferece uma representação

Leia mais

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES Vamos estudar alguns métodos numéricos para resolver: Equações algébricas (polinómios não lineares; Equações transcendentais equações que envolvem funções

Leia mais

Superfícies Complexas Definição e realização de operações de intersecção

Superfícies Complexas Definição e realização de operações de intersecção Superfícies Complexas Definição e realização de operações de intersecção Provas de Aptidão Pedagógica e Capacidade Científica Texto de apoio a aula teórico-prática João Pedro da Silva Poças Martins, 2004

Leia mais

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Grafos: componentes fortemente conexos, árvores geradoras mínimas Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1 Componentes fortemente conexos Um componente fortemente

Leia mais

sujeito a: 30x x (madeira) 5x x (horas de trabalho) x 1, x 2 0

sujeito a: 30x x (madeira) 5x x (horas de trabalho) x 1, x 2 0 IV. MÉTODO GRÁFICO O método gráfico só permite resolver problemas de PL de pequena dimensão (duas ou três variáveis) não tendo pois qualquer interesse prático. O método gráfico permite visualizar um conjunto

Leia mais

Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos

Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos Teobaldo L. Bulhões Júnior a a Instituto de Computação, Universidade Federal Fluminense, Niterói, RJ, Brazil

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional André Tavares da Silva andre.silva@udesc.br baseado no material de João Comba Roteiro Fundamentação Interseções de Segmentos de Linha Envoltória Convexa Particionamento de Polígonos

Leia mais

Tecnicas Essencias Greedy e Dynamic

Tecnicas Essencias Greedy e Dynamic Tecnicas Essencias Greedy e Dynamic Paul Crocker RELEASE - Reliable and Secure Computation Group Universidade da Beira Interior, Portugal October 2010 1 / 27 Outline 1 Introdução 2 Exemplo Greedy I : Interval

Leia mais

PARTIÇÃO DE GRAFOS EM CIRCUITOS FECHADOS

PARTIÇÃO DE GRAFOS EM CIRCUITOS FECHADOS PARTIÇÃO DE GRAFOS EM CIRCUITOS FECHADOS Gilcina Guimarães Machado Universidade do Estado do Rio de Janeiro Escola Naval gilcina @uerj.br RESUMO Uma partição do conjunto de vértices em um grafo não orientado

Leia mais

Utilização de Métodos de Cálculo Numérico em Aerodinâmica

Utilização de Métodos de Cálculo Numérico em Aerodinâmica Erro Numérico: - Erro de arredondamento - Erro iterativo - Erro de discretização Três componentes do erro numérico têm comportamentos diferentes com o aumento do número de graus de liberdade (refinamento

Leia mais

2º Semestre 2002/2003 Problemas Resolvidos

2º Semestre 2002/2003 Problemas Resolvidos RESOLUÇÂO DO PROBLEMA Nº 19 Determinado problema de Programação Linear depois de formulado permitiu obter as seguintes expressões: Max L = 4x 1-2x 2 + 2x 3 -x 4 s.a. R 1: x 1 - x 2 + 2x 3 +x 4 10 R 2:

Leia mais

GEOMETRIA COMPUTACIONAL

GEOMETRIA COMPUTACIONAL GEOMETRIA OMPUTAIONAL TEOREMA DA GALERIA DE ARTE. Definições e convenções Uma curva poligonal é uma sequência finita (v 0,e 0,v,...,e n,v n ) onde v 0,...,v n são pon em R e e i é um segmento de reta com

Leia mais

Diagrama de Voronoi. INF2604 Geometria Computacional. Waldemar Celes. Departamento de Informática, PUC-Rio.

Diagrama de Voronoi. INF2604 Geometria Computacional. Waldemar Celes. Departamento de Informática, PUC-Rio. Diagrama de Voronoi INF2604 Geometria Computacional Waldemar Celes celes@inf.puc-rio.br Departamento de Informática, PUC-Rio W. Celes Diagrama de Voronoi 1 Figura extraída de Discrete and Computational

Leia mais

Teoria e Algoritmos em Grafos

Teoria e Algoritmos em Grafos Teoria e Algoritmos em Grafos 2018.2 Conjunto Independente Conjuntos Independentes são subconjuntos de vértices de um grafo no qual nenhum vértice é adjacente entre si. Conjunto Independente Conjuntos

Leia mais

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os

Leia mais

Aula 2 A distância no espaço

Aula 2 A distância no espaço MÓDULO 1 - AULA 2 Objetivos Aula 2 A distância no espaço Determinar a distância entre dois pontos do espaço. Estabelecer a equação da esfera em termos de distância. Estudar a posição relativa entre duas

Leia mais

Universidade de Aveiro Departamento de Matemática. Classificação e partição de polígonos simples

Universidade de Aveiro Departamento de Matemática. Classificação e partição de polígonos simples Universidade de Aveiro Departamento de Matemática 2005 Nuno Lopes Martins Classificação e partição de polígonos simples Universidade de Aveiro Departamento de Matemática 2005 Nuno Lopes Martins Classificação

Leia mais

Matemática I. 1 Propriedades dos números reais

Matemática I. 1 Propriedades dos números reais Matemática I 1 Propriedades dos números reais O conjunto R dos números reais satisfaz algumas propriedades fundamentais: dados quaisquer x, y R, estão definidos a soma x + y e produto xy e tem-se 1 x +

Leia mais

Algoritmos de Preenchimento de Regiões

Algoritmos de Preenchimento de Regiões Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Classificação dos algoritmos: Preenchimento segundo contorno existente Por difusão [flood-fill]: a. Limitado por contorno b. Limitado por interior de

Leia mais

Professor: Anselmo Montenegro Conteúdo: Aula 2. - Primitivas Geométricas. Instituto de Computação - UFF

Professor: Anselmo Montenegro  Conteúdo: Aula 2. - Primitivas Geométricas. Instituto de Computação - UFF Geometria Computacional Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: Aula - Primitivas Geométricas 1 Roteiro Introdução Operações primitivas Distâncias Ângulos Ângulos orientados Áreas

Leia mais

Curso de Mestrado em Matemática Aplicada Tópicos de Topologia - Monopólos e Curvas Algébricas 1 a Série de Problemas - Outubro 1999

Curso de Mestrado em Matemática Aplicada Tópicos de Topologia - Monopólos e Curvas Algébricas 1 a Série de Problemas - Outubro 1999 Secção de Álgebra e Análise - Departamento de Matemática - IST Curso de Mestrado em Matemática Aplicada Tópicos de Topologia - Monopólos e Curvas Algébricas 1 a Série de Problemas - Outubro 1999 Os conceitos

Leia mais

Curvas e Superfícies. Profª Soraia Raupp Musse

Curvas e Superfícies. Profª Soraia Raupp Musse Curvas e Superfícies Profª Soraia Raupp Musse Classificação Curvas Apenas comprimento 2 Classificação Superfícies Apenas área Cascas infinitesimalmente finas, ocas Abertas ou fechadas 3 Classificação Sólidos

Leia mais

Uma forma de classificação

Uma forma de classificação Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos Outra forma de classificação Problemas Indecidíveis

Leia mais

Algoritmos de aproximação - Problema de cobertura por conjuntos

Algoritmos de aproximação - Problema de cobertura por conjuntos Algoritmos de aproximação - Problema de cobertura por conjuntos Marina Andretta ICMC-USP 22 de setembro de 205 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M.

Leia mais

J. Delgado - K. Frensel - L. Crissaff Geometria Analítica e Cálculo Vetorial

J. Delgado - K. Frensel - L. Crissaff Geometria Analítica e Cálculo Vetorial 178 Capítulo 10 Equação da reta e do plano no espaço 1. Equações paramétricas da reta no espaço Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que

Leia mais

Objectivos com o Desenho de Bases de Dados Dependências funcionais 1ª Forma Normal Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal

Objectivos com o Desenho de Bases de Dados Dependências funcionais 1ª Forma Normal Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal Capítulo 6: Desenho de Bases de Dados Objectivos com o Desenho de Bases de Dados Dependências funcionais 1ª Forma Normal Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal Dependências multivalor

Leia mais

Geometria Computacional: Fecho convexo

Geometria Computacional: Fecho convexo Geometria Computacional: INF2604 Geometria Computacional Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC O que é uma região convexa? Uma região é convexa se para qualquer par de pontos dessa região,

Leia mais

Desenho Técnico Moderno

Desenho Técnico Moderno Desenho Técnico Moderno Capítulo 3 Aspectos Gerais do Desenho Técnico OBJECTIVOS Escolher adequadamente o formato e orientação da folha de papel; Estabelecer as margens e esquadrias para a folha de desenho;

Leia mais

Alternativas de otimização da usinagem de cavidades 2 ½ D

Alternativas de otimização da usinagem de cavidades 2 ½ D Alternativas de otimização da usinagem de cavidades 2 ½ D Cleverson Marcelo da Silva (UFSM) cleverson@mail.ufsm.br Leandro Costa de Oliveira (UFSM) leandro@inf.ufsm.br Resumo Este trabalho apresenta algumas

Leia mais

Optimização do servomecanismo dum disco rígido

Optimização do servomecanismo dum disco rígido Modelação e Simulação 2012/13 Trabalho de Laboratório nº 2 Optimização do servomecanismo dum disco rígido Objectivo Após realizar este trabalho, o aluno deverá ser capaz de utilizar o SIMULINK para optimizar

Leia mais

Procura Informada. Capítulo 4

Procura Informada. Capítulo 4 Procura Informada Capítulo 4 Sumário Procura Melhor Primeiro Procura Gananciosa Procura A * Heurísticas Procura local Árvore de Procura Uma estratégia de procura determina a ordem de expansão dos nós As

Leia mais

Percursos em um grafo

Percursos em um grafo Percursos em um grafo Definição Um percurso ou cadeia é uma seqüência de arestas sucessivamente adjacentes, cada uma tendo uma extremidade adjacente à anterior e a outra a subsequente (à exceção da primeira

Leia mais

❷ Uma recta e um ponto exterior à recta definem um e um só plano.

❷ Uma recta e um ponto exterior à recta definem um e um só plano. Uma resolução da Ficha de Trabalho (10.º Ano) POSIÇÕES RELATIVAS, PERSPECTIVAS, CORTES. 1. FORMAS DE DEFINIR UM PLANO: ❶ Três pontos não colineares definem um e um só plano. ❷ Uma recta e um ponto exterior

Leia mais

Otimização Combinatória - Parte 4

Otimização Combinatória - Parte 4 Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional

Leia mais

método de solução aproximada

método de solução aproximada método de solução aproximada Definir - Representação - Objectivo - Função de avaliação 73 Representação do problema - Definição das variáveis de decisão do modelo escolhido para o problema real. Importante

Leia mais

Algoritmos de Preenchimento de Regiões

Algoritmos de Preenchimento de Regiões Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Classificação dos algoritmos: Preenchimento segundo contorno existente Por difusão [flood-fill]: a. Limitado por contorno b. Limitado por interior de

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Desenvolvimento de Aplicações Paralelas (gec.di.uminho.pt/lesi/ap10203/aula06aplicaçõespar.pdf) João Luís Ferreira Sobral Departamento

Leia mais

Avaliação 1 Solução Geometria Espacial MAT 050

Avaliação 1 Solução Geometria Espacial MAT 050 Avaliação 1 Solução Geometria Espacial MAT 050 6 de abril de 2018 As respostas das quatro questões a seguir devem ser entregue até o final da aula de hoje: 1. (3 pontos) Mostre que por dois pontos dados

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Algoritmos de Aproximação CLRS, Cap. 35 Resumo Algoritmos de aproximação Algoritmos, com complexidade polinomial, que calculam soluções aproximadas para problemas de optimização

Leia mais

Marina Andretta. 18 de outubro de 2010

Marina Andretta. 18 de outubro de 2010 Aplicações Marina Andretta ICMC-USP 18 de outubro de 2010 Marina Andretta (ICMC-USP) sme0212 - Otimização não-linear 18 de outubro de 2010 1 / 34 Problema Kissing number O kissing number é dado pelo número

Leia mais

2 Conceitos básicos de topologia

2 Conceitos básicos de topologia 2 Conceitos básicos de topologia Neste Capítulo são introduzidos alguns conceitos básicos de topologia combinatória e da Teoria das Alças que formam a base teórica do presente trabalho. 2.1 Topologia combinatória

Leia mais

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano CÁLCULO NUMÉRICO Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br Aula 8 04/2014 Zeros reais de funções Parte 2 Voltando ao exemplo da aula anterior, vemos que o ponto médio da primeira iteração

Leia mais

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist. CAMINHO DE CUSTO MÍNIMO Dados dois pontos A e B, em muitos problemas práticos fazemos 2 perguntas: 1. existe um caminho de A para B? ou 2. se existe mais de um caminho de A para B, qual deles é o mais

Leia mais

Objetos Gráficos Planares

Objetos Gráficos Planares Universidade Federal de Alagoas Instituto de Matemática Objetos Gráficos Planares Prof. Thales Vieira 2011 Objetos Gráficos Computação Gráfica é a área que estuda a síntese, o processamento e a análise

Leia mais

Capítulo Equações da reta no espaço. Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que

Capítulo Equações da reta no espaço. Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que Capítulo 11 1. Equações da reta no espaço Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que AP = t AB Fig. 1: Reta r passando por A e B. Como o ponto

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Resolução Numérica de Equações Parte I

Resolução Numérica de Equações Parte I Cálculo Numérico Resolução Numérica de Equações Parte I Prof Reinaldo Haas Cálculo Numérico Objetivos 2 Estudar métodos numéricos para a resolução de equações não lineares (determinar a(s) raiz(es) de

Leia mais

TE231 Capitulo 2 Zeros de Funções; Prof. Mateus Duarte Teixeira

TE231 Capitulo 2 Zeros de Funções; Prof. Mateus Duarte Teixeira TE231 Capitulo 2 Zeros de Funções; Prof. Mateus Duarte Teixeira Sumário 1. Como obter raízes reais de uma equação qualquer 2. Métodos iterativos para obtenção de raízes 1. Isolamento das raízes 2. Refinamento

Leia mais

4. Superfícies e sólidos geométricos

4. Superfícies e sólidos geométricos 4. Superfícies e sólidos geométricos Geometria Descritiva 2006/2007 4.1 Classificação das superfícies e sólidos geométricos Geometria Descritiva 2006/2007 1 Classificação das superfícies Linha Lugar das

Leia mais

O TEOREMA DE GAUSS-BONNET

O TEOREMA DE GAUSS-BONNET O TEOREMA DE GAUSS-BONNET JOSÉ NATÁRIO 1. Introdução Não distinguimos superfícies que têm a mesma forma, ou geometria. Assim, uma superfície esférica numa dada posição do espaço é identificada com outra

Leia mais

Particionamento de Polígonos João Comba. Problema da Galeria de Arte. The Walters Art Museum, Baltimore, EUA

Particionamento de Polígonos João Comba. Problema da Galeria de Arte. The Walters Art Museum, Baltimore, EUA Particionamento de Polígonos João Comba Problema da Galeria de Arte The Walters Art Museum, Baltimore, EUA Problema da Galeria de Arte Polígonos Simples Polígono Simples: Região do plano limitado por uma

Leia mais

Teorema da galeria de arte e triangularização de polígonos

Teorema da galeria de arte e triangularização de polígonos Teorema da galeria de arte e triangularização de polígonos Lucas Piva Rocha Corrêa 1 e Carlos Eduardo Ferreira (orientador) 2 1 Universidade de São Paulo (USP), Brazil piva@linux.ime.usp.br 2 Universidade

Leia mais

O WEB-site da disciplina de Geometria

O WEB-site da disciplina de Geometria O WEB-site da disciplina de Geometria Computacional http://www2.mat.ua.pt/pessoais/leslie/geocom/ Introdução à Geometria Computacional António Leslie Bajuelos Departamento de Matemática Universidade de

Leia mais

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de:

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Planaridade AULA META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Distinguir grafo planar e plano; Determinar o dual de um grafo; Caracterizar

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Algoritmos em Grafos Estruturas de Dados para Conjuntos Disjuntos Programação Linear Programação Dinâmica Algoritmos Greedy

Leia mais

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA UNIVERSIDADE DE JOÃO DEL-REI PRÓ-REITORIA DE PESQUISA CENTRO

Leia mais

PGF Mecânica Clássica Prof. Iberê L. Caldas

PGF Mecânica Clássica Prof. Iberê L. Caldas PGF 5005 - Mecânica Clássica Prof Iberê L Caldas Quarto Estudo Dirigido o semestre de 08 Os estudos dirigidos podem ser realizados em duplas Apenas os exercícios marcados com asteriscos precisam ser entregues

Leia mais

Marina Andretta. 9 de agosto de Baseado em problemas presentes em

Marina Andretta. 9 de agosto de Baseado em problemas presentes em Aplicações Marina Andretta ICMC-USP 9 de agosto de 2018 Baseado em problemas presentes em http://www.ime.usp.br/~egbirgin/tango/ Marina Andretta (ICMC-USP) sme5720 - Otimização não-linear 9 de agosto de

Leia mais

Representação de cortes e secções

Representação de cortes e secções Representação de cortes e secções Conceito e aplicaçã ção Tipos de corte e de secçã ção Definiçã ção o de corte e secçã ção Alcínia Zita de Almeida Sampaio Representaçã ção o de cortes e secçõ ções Conceito

Leia mais

Curvas e Superfícies. Profª Soraia Raupp Musse

Curvas e Superfícies. Profª Soraia Raupp Musse Curvas e Superfícies Profª Soraia Raupp Musse Classificação Curvas Apenas comprimento 2 Classificação Superfícies Apenas área Cascas infinitesimalmente finas, ocas Abertas ou fechadas 3 Classificação Sólidos

Leia mais

Aula Orientação do espaço. Observação 1

Aula Orientação do espaço. Observação 1 Aula 14 Nesta aula vamos definir dois novos produtos entre vetores do espaço, o produto vetorial e o produto misto. Para isso, primeiro vamos apresentar o conceito de orientação. 1. Orientação do espaço

Leia mais

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano CÁLCULO NUMÉRICO Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br Aula 7 04/2014 Zeros reais de funções Parte 1 Objetivo Determinar valores aproximados para as soluções (raízes) de equações da

Leia mais

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464 / PCC174 Departamento de Computação - UFOP Breve Revisão Programação Linear vs Programação Inteira Modelagem

Leia mais

Capítulo 1 Conceitos e Resultados Básicos

Capítulo 1 Conceitos e Resultados Básicos Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko Capítulo 1 Conceitos e Resultados Básicos Um grafo é um par ordenado (V, A), onde V e A são conjuntos disjuntos, e cada elemento

Leia mais

4.4 Secções planas de superfícies e sólidos

4.4 Secções planas de superfícies e sólidos 4.4 Secções planas de superfícies e sólidos Geometria Descritiva 2006/2007 e sólidos Quando um plano intersecta uma superfície geométrica determina sobre ela uma linha plana que pertence à superfície A

Leia mais

MATRIZ DE REFERÊNCIA-Ensino Médio Componente Curricular: Matemática

MATRIZ DE REFERÊNCIA-Ensino Médio Componente Curricular: Matemática MATRIZ DE REFERÊNCIA-Ensino Médio Componente Curricular: Matemática Conteúdos I - Conjuntos:. Representação e relação de pertinência;. Tipos de conjuntos;. Subconjuntos;. Inclusão;. Operações com conjuntos;.

Leia mais

Geometria Descritiva 28/08/2012. Elementos Primitivos da Geometria

Geometria Descritiva 28/08/2012. Elementos Primitivos da Geometria Geometria Descritiva Prof. Luiz Antonio do Nascimento ladnascimento@gmail.com www.lnascimento.com.br A Geometria, como qualquer outra ciência, fundamenta-se em observações e experiências para estabelecer

Leia mais

étodos uméricos INTERPOLAÇÃO, EXTRAPOLAÇÃO, APROXIMAÇÃO E AJUSTE DE FUNÇÕES Prof. Erivelton Geraldo Nepomuceno

étodos uméricos INTERPOLAÇÃO, EXTRAPOLAÇÃO, APROXIMAÇÃO E AJUSTE DE FUNÇÕES Prof. Erivelton Geraldo Nepomuceno étodos uméricos INTERPOLAÇÃO, EXTRAPOLAÇÃO, APROXIMAÇÃO E AJUSTE DE FUNÇÕES Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA UNIVERSIDADE DE JOÃO DEL-REI PRÓ-REITORIA

Leia mais