Tese Andre

Embed Size (px)

Citation preview

Universidade Federal de Uberlndia

Uma Proposta para a Triangulao de Delaunay 2D e Localizao Planar de Pontos em OCaml

Andr Luiz Moura

Uberlndia 2006 Tese de Doutorado Universidade Federal de Uberlndia Faculdade de Engenharia Eltrica Programa de Ps-Graduao em Engenharia Eltrica

ii

ANDR LUIZ MOURA

UMA PROPOSTA PARA A TRIANGULAO DE DELAUNAY 2D E LOCALIZAO PLANAR DE PONTOS EM OCAML

Tese apresentada ao programa de PsGraduao em Engenharia Eltrica da Universidade Federal de Uberlndia, como parte dos requisitos para obteno do ttulo de DOUTOR EM CINCIAS. rea de Concentrao: Eletricidade Rural e Fontes Alternativas de Energia Orientador: Prof. Jos Roberto Camacho (PhD)

Uberlndia MG 2006

FICHA CATALOGRFICAElaborada pelo Sistema de Bibliotecas da UFU / Setor de Catalogao e Classificao

M929p

Moura, Andr Luiz, 1967Uma Proposta para a Triangulao de Delaunay 2D e Localizao Planar de Pontos em OCaml / Andr Luiz Moura. Uberlndia, 2006. 114f. : il. Orientador: Jos Roberto Camacho. Tese (doutorado) Universidade Federal de Uberlndia, Programa de Ps-Graduao em Engenharia Eltrica. Inclui referncia bibliogrfica. 1. Engenharia eltrica - Matemtica - Teses. I. Camacho, Jos Roberto. II. Universidade Federal de Uberlndia. Programa de Ps-Graduao em Engenharia Eltrica. III. Ttulo. CDU: 62:51

iii

ANDR LUIZ MOURA

UMA PROPOSTA PARA A TRIANGULAO DE DELAUNAY 2D E LOCALIZAO PLANAR DE PONTOS EM OCAML

Tese apresentada ao programa de PsGraduao em Engenharia Eltrica da Universidade Federal de Uberlndia, como parte dos requisitos necessrios para obteno do ttulo de Doutor em Cincias. Tese APROVADA pelo Programa de Ps-graduao em Engenharia Eltrica da Universidade Federal de Uberlndia. rea de Concentrao: Eletricidade Rural e Fontes Alternativas de Energia

Banca Examinadora:

Jos Roberto Camacho, PhD (UFU) Orientador Antnio Eduardo Costa Pereira, PhD (UFU) Edgard Afonso Lamounier Jr., PhD (UFU) Mrio Mourelle Prez, PhD (UFU) Renato Cardoso Mesquita, Dr. (UFMG) Sebastio Camargo Guimares Jr., Dr. (UFU) Severino Luiz Guimares Dutra, Dr. (INPE) Prof. Darizon Alves de Andrade Coordenador do Curso de Ps-Graduao em Engenharia Eltrica

Uberlndia, 30 de Junho de 2006

iv

A Deus, memria de minha me, Adlia, ao meu filho, Arthur, e a minha esposa, Averlbia.

v

AgradecimentosAo altssimo Deus, por permitir que tudo acontecesse... minha me, Adlia Vieira da Costa (in memorian), por seu amor e dedicao... Universidade Federal de Uberlndia e Faculdade de Engenharia Eltrica pela oportunidade de realizar este Curso. Ao Professor Dr. Jos Roberto Camacho, meu orientador, entusiasta e grande incentivador, pela confiana, amizade e por todo o trabalho de orientao e reviso da tese. Ao Professor Dr. Antnio Eduardo Costa Pereira, meu primeiro contato na UFU, por toda ateno dispensada, considerao e sugestes. A minha esposa, Averlbia Gonalves Cordeiro Moura, por toda compreenso, incentivo e dedicao no preenchimento de lacunas que surgiram. Ao meu sogro, Valdave Gonalves Guimares, e a minha sogra, Gerantina Cordeiro Guimares, por todo o apoio provido a minha famlia durante minhas ausncias em casa. Aos colegas do Curso de Doutorado, Joo Manoel da Silva, Arquimedes Lopes da Silva e Lindolfo Marra de Castro Neto, pela amizade e companheirismo. Joana (anterior secretria da Ps-Graduao) e Marli (atual secretria da Ps-Graduao), pelo excelente desempenho funcional. Aos meus superiores no Tribunal Regional do Trabalho da 18 Regio, Humberto Magalhes Ayres e Paulo Gois Cordeiro dos Santos, respectivamente, Diretor da Secretaria de Tecnologia da Informao e Diretor do Servio de Gesto de Sistemas e Internet, pela deferncia em autorizar meus afastamentos ao trabalho para viagens a Uberlndia.

vi

Resumo

Nesta tese, apresentado um algoritmo dinmico de localizao planar de pontos. O algoritmo foi elaborado sobre dois fundamentos: - o mtodo das Slabs para particionar a subdiviso planar, representada por um grafo, e permitir a rpida identificao da regio em que se encontra o ponto que est sendo consultado; - a Multirvore-B Intervalar, uma estrutura de dados derivada rvore-B, aparelhada com mecanismo de pesquisa intervalar e disposta em camadas. O algoritmo dinmico porque altera dinamicamente a estrutura de pesquisa, medida que surgem eventos de insero ou remoo de segmentos na subdiviso planar que est sendo construda. O algoritmo foi implementado na linguagem OCaml, mas poderia ter sido implementado em qualquer outra linguagem de programao. Para aumentar a eficincia do algoritmo, algumas melhorias podem ser introduzidas, como por exemplo, a substituio do ncleo da Multirvore-B Intervalar por outros tipos de rvores balanceadas. Adicionalmente, foram discutidos alguns aspectos do processso de construo de malhas de elementos finitos, em que se insere, sobretudo, o problema da localizao planar de pontos.

Palavras-chaves: localizao planar de pontos dinmica, rvore balanceada, multirvore-B intervalar, triangulao de Delaunay incremental, malha bidimensional, OCaml

vii

Abstract

In this thesis, it is presented a planar point location algorithm. The algorithm was developed on top of two elements: - the method of slabs to divide the planar subdivision, is represented by a graph, allowing the fast identification of the region where the point being recalled is; the Interval Multi-B-tree, a data structure derived from the B-tree, prepared with an interval search structure and disposed in layers. The algorithm is essentially dynamic since the search structure keeps changing dynamically during the process, while the planar subdivision is being built; new events of segment insertion or removal keep appearing. The algorithm was implemented in OCaml, but could be carried out in any other programming language. To increase the algorithm efficiency, some improvements can be introduced, as an example, the substitution of the Interval Multi-B-tree core by other types of balanced trees. Moreover, it was discussed some aspects of the assembling process of the finite element meshing, where it is inserted, mainly, the planar point location problem.

Key-words: dynamic planar point location, balanced tree, interval multi-B-tree, incremental Delaunay triangulation, two dimensional meshing, OCaml

viii

UMA PROPOSTA PARA A TRIANGULAO DE DELAUNAY 2D E LOCALIZAO PLANAR DE PONTOS EM OCAML

SumrioLISTA DE FIGURAS LISTA DE TABELAS LISTA DE FRMULAS LISTA DE SMBOLOS TERMINOLOGIA BSICA 1. INTRODUO 2. ASPECTOS CRTICOS DA GERAO DA MALHA 2.1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Tipos de Domnios Geomtricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Tipos de Malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Propriedades Desejveis de uma Malha e de Geradores de Malhas . . . . . . . . . . . 2.5. Triangulao de Delaunay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6. Insero de Pontos de Steiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7. Localizao Planar de Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8. Refinamento da Malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. IMPLEMENTAO DE TRIANGULAO DE DELAUNAY POR DIVISO E CONQUISTA EM OCAML 3.1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. O Algoritmo de Diviso-e-Conquista modificado por Dwyer . . . . . . . . . . . . . . . 3.3. Melhoramentos efetuados no Algoritmo de Guibas-Stolfi . . . . . . . . . . . . . . . . . . 3.4. A Linguagem Objective Caml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Detalhes da Implementao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Resultados dos Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1. Amostra da Robustez Numrica de OCaml . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Avaliao da Possibilidade de Paralelizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. GERADOR DE MALHAS ESCRITO EM OCAML 4.1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Caractersticas do Gerador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Estrutura de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Notas sobre o Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. Detalhes da Implementao em OCaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6. Resultados da Triangulao de Domnios Geomtricos . . . . . . . . . . . . . . . . . . . . 5. LOCALIZAO PLANAR DE PONTOS USANDO MULTIRVORE-B INTERVALAR 5.1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 rvores Balanceadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x xiii xiv xv xvi 18 35 35 35 36 37 41 52 53 62

65 65 65 66 66 67 71 72 73 78 78 79 81 82 83 85

88 88 89

ix

5.2.1. A rvore-B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2.2. A rvore-B Intervalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.2.3. A Multirvore-B Intervalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.3. Localizao Planar com Multirvore-B Intervalar . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3.1 Construo Incremental da Estrutura de Pesquisa baseada em Eventos . . . . 96 5.3.2. Pr-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3.3. Consulta de Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.4. Experimentos Computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6. CONCLUSES 107 6.1. Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 REFERNCIAS BIBLIOGRFICAS 110

x

Lista de Figuras1.1 1.2 1.3 1.4 1.5 Determinao se um ponto P est dentro de um tringulo ABC. . . . . . . . . . . . . Se o ponto P estiver dentro do tringulo ABC, o somatrio da rea dos trs novos tringulos ser igual rea de ABC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Se o ponto P estiver fora do tringulo ABC, o somatrio da rea dos trs novos tringulo ser maior que a rea de ABC. . . . . . . . . . . . . . . . . . . . . . . . . . Um PSLG particionado em slabs horizontais. . . . . . . . . . . . . . . . . . . . . . . . . . . Um PSLG decomposto em um conjunto de cadeias montonas (O procedimento de regularizao adicionou novas arestas (v2, v3), (v5, v6) e (v7, v8)) ao PSLG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Um polgono com faces irregulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Polgono triangulado para construo da estrutura de dados de Kirkpatrick.. . . Triangulao envolta por um grande tringulo e conectada aos seus vrtices.. . Triangulao com conjunto independente de vrtices com grau 8. . . . . . . . . Triangulao sem o conjunto independe de vrtices com grau 8. . . . . . . . . . Triangulao refeita. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura de pesquisa gerada pelo algoritmo de Kirkpatrick. . . . . . . . . . . . . . . Um ponto de consulta sobre uma face F da subdiviso original. . . . . . . . . . . . . O caminho percorrido no DAG para localizar a regio que contm o ponto de consulta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O efeito da insero do ponto p no do tringulo T1 sobre a estrutura de dados D. Somente so mostradas as partes que sofreram alteraes. . . . . . . . . . . . . . Pior caso da localizao de pontos no DAG referente histria de uma triangulao de Delaunay incremental. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de entradas bidimensionais: (a) polgono simples, (b) polgono com buracos, (c) domnio mltiplo e (d) domnio curvo. . . . . . . . . . . . . . . . . . . . . . Tipos de Malhas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Um tringulo de formato inadequado para o mtodo dos elementos finitos. . . . Passos da triangulao baseada em circle packing. . . . . . . . . . . . . . . . . . . . . (a) Uma quadtree. (b) Uma triangulao de um conjunto de pontos baseada em quadtree em que nenhum ngulo menor que 20. . . . . . . . . . . . . . . . . . . . A superfcie de uma malha tetradrica derivada de uma octree. . . . . . . . . . . . . Parte da triangulao de uma regio com trs buracos. . . . . . . . . . . . . . . . . . . . Triangulao de um polgono. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A triangulao de Delaunay sobre uma nuvem de pontos. . . . . . . . . . . . . . . . . A triangulao de Delaunay sobre um conjunto de 400 pontos aleatrios. . . . . Cada tringulo em uma triangulao de Delaunay tem um crculo-circundante vazio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O teste InCircle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uso do predicado InCircle para decidir qual das duas arestas (AC ou BD) aresta de Delaunay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Triangulaes de Delaunay de C1 e C2, separadas por uma linha vertical imaginria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Triangulao de Delaunay de C1 C2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Amostra das deficincias da triangulao de Delaunay. . . . . . . . . . . . . . . . . . . Amostra da correo provida pela insero de pontos de Steiner. . . . . . . . . . . . 19 19 19 21

1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17

22 23 23 24 24 25 25 26 27 27 29 30 36 37 38 39 40 40 41 42 42 43 44 44 46 48 48 49 49

xi

2.18 (a) Um PLSG. (b) Uma triangulao de Delaunay do PSLG. (c) Uma triangulao de Delaunay com restries do PSLG. . . . . . . . . . . . . . . . . . . . . . 2.19 Supertringulo contendo pontos a serem triangulados. . . . . . . . . . . . . . . . . . . . 2.20 Os dois casos em que se adiciona um ponto pr. . . . . . . . . . . . . . . . . . . . . . . . . . 2.21 Triangulaes: (a) sem pontos de Steiner e (b) com pontos de Steiner. . . . . . . 2.22 Algoritmo de insero de pontos de Steiner. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.23 Subdiviso em slabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.24 Amostra do pior caso da diviso em slabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.25 Um mapa trapezoidal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.26 Atualizao (incremental) de mapa trapezoidal. . . . . . . . . . . . . . . . . . . . . . . . . 2.27 Um mapa trapezoidal de dois segmentos e a estrutura de pesquisa correspondente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.28 Um algoritmo incremental aleatrio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.29 Um algoritmo de pesquisa em mapa trapezoidal. . . . . . . . . . . . . . . . . . . . . . . . 2.30 Resultado da transformao shear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.31 Movendo um vrtice para o centro de massa de seus vizinhos. . . . . . . . . . . . . . 2.32 Refinamento de uma regio da malha com tringulo de qualidade insatisfatria. O vrtice v inserido, o tringulo t eliminado, mas a propriedade de Delaunay mantida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Exemplo de distribuio uniforme de pontos no quadrado unitrio. . . . . . . . . . 3.2 Funo de multiplicao em OCaml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Estrutura de dados da triangulao em C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Estrutura de dados da triangulao em OCaml. . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Trecho de cdigo da funo delete_edge em C. . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Trecho de cdigo da funo delete_edge em OCaml baseado em proposta de Weis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Estrutura de dados (simplificada) da triangulao em OCaml. . . . . . . . . . . . . . 3.8 Trecho de cdigo (simplificado) da funo delete_edge em OCaml. . . . . . . . . 3.9 Resultados visuais de triangulaes de PSLG. . . . . . . . . . . . . . . . . . . . . . . . . . 3.10 Uma estratgia tpica de paralelizao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Triangulao de Delaunay seqencial de um conjunto de pontos. . . . . . . . . . . 3.12 Triangulao de Delaunay de um conjunto de pontos em quatro processadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.13 Resultados parciais da Triangulao de Delaunay nos quatro processadores. . . 4.1 Sntese do processo de gerao da malha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Descrio do formato dos arquivos .node, .poly e .ele. . . . . . . . . . . . . . . . . . . . 4.3 Exemplos de contedo dos arquivos .node, .poly e .ele. . . . . . . . . . . . . . . . . . . 4.4 Estrutura de dados da aresta e do tringulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 PSLG de uma guitarra eltrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Triangulao de Delaunay dos vrtices do PSLG. Alguns segmentos originais e faces esto ausentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Triangulao de Delaunay em conformidade com os segmentos do PSLG. . . . 4.8 Triangulao com tringulos removidos de concavidades e buracos. . . . . . . . . 4.9 Malha final (gerada por OCamlMesh) composta de 484 tringulos com ngulo mnimo no inferior a 30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 Cdigos da funo FindNeighbors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 Implementao da estrutura de dados do gerador em linguagem C. . . . . . . . . . 4.12 Implementao da estrutura de dados do gerador em linguagem OCaml. . . . . . 4.13 Algumas malhas uniformes construdas pelo gerador OCamlMesh. . . . . . . . . . 4.14 Algumas malhas gradientes construdas pelo gerador OCamlMesh. . . . . . . . . .

50 51 51 52 53 54 55 56 57 59 59 60 61 63

64 66 67 68 69 70 70 70 71 72 74 76 77 77 80 80 81 81 82 82 82 83 83 84 84 85 86 87

xii

5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9. 5.10 5.11.

5.12 5.13 5.14 5.15 5.16 5.17

rvore binria totalmente degenerada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rvore binria balanceada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uma rvore-B de ordem 4 com todas as folhas no nvel 2. . . . . . . . . . . . . . . . . Modificaes no cdigo da rvore-B para obteno do limite inferior. . . . . . . Modificaes no cdigo da rvore-B para obteno do limite superior. . . . . . . Arquitetura global de uma Multirvore-B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura de dados da Multirvore-B em OCaml. . . . . . . . . . . . . . . . . . . . . . . . Subdiviso de um PSLG em slabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo global do processo de construo da estrutura de pesquisa. . . . . . . . Mapeamentos possveis de segmentos no espao binrio. . . . . . . . . . . . . . . . . . Eventos significativos entre segmento novo (linha tracejada) e segmento vizinho (linha contnua), retratando as possveis formas de interseo entre eles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relao espacial entre o novo segmento e os segmentos vizinhos. . . . . . . . . . . Orientaes dos segmentos de alguns tringulos. . . . . . . . . . . . . . . . . . . . . . . . Algoritmo Prepare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo Preprocess. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo Query. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de entradas para os experimentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90 90 91 93 94 95 95 97 97 98

99 100 101 101 102 103 104

xiii

Lista de Tabelas2.1 2.2 2.3 3.1 3.2 Trs critrios para elementos lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complexidade de algoritmos de triangulao. . . . . . . . . . . . . . . . . . . . . . . . . . . Eficincias tericas dos algoritmos de localizao de pontos. . . . . . . . . . . . . . . Ponteiros explcitos em C traduzidos para OCaml. . . . . . . . . . . . . . . . . . . . . . . Resultados da triangulao por diviso-e-conquista utilizando um PC com processador Pentium III de 1.13 GHz, 128 Mb de memria RAM e 256 Kb de memria Cache, sob o sistema operacional Windows 98. . . . . . . . . . . . . . . . . . Resultados de operaes matemticas envolvendo nmeros na representao ponto-flutuante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados de Testes de Localizao de Pontos na Malha do Crculo. . . . . . . . Resultados de Testes de Localizao de Pontos na Malha da Chave. . . . . . . . . Resultados de Testes de Localizao de Pontos na Malha da Letra A . . . . . . Resultados de Testes de Localizao de Pontos na Malha da Guitarra eltrica. Resultados de Testes de Localizao de Pontos na Malha do Lago Superior. . Distribuio de eventos identificados na fase de pr-processamento. . . . . . . . . 38 52 62 69

72 73 104 104 105 105 105 106

3.3 5.1 5.2 5.3 5.4 5.5 5.6

xiv

Lista de Frmulas2.1 A transformao shear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

xv

Lista de SmbolosANSI BST CSG DAG IDE INRIA LCF MEF ML American National Standards Institute Binary Search Tree Constructive Solid Geometry Directed Acyclic Graph Integrated Development Environment Institut National de Recherche en Informatique et Automatique Logic of Computable Functions Mtodo dos Elementos Finitos Meta-Language

OCaml Objective Categorical Abstract Machine Language PLS PSLG RAM SGBD Piecewise Linear System Planar Straight Line Graph Random Access Memory Sistema de Gerenciamento de Banco de Dados

xvi

Terminologia BsicaAqui so explicados vrios termos bsicos que so usados no texto desta tese. Algoritmo uma seqncia finita e no ambgua de instrues que so necessrias para solucionar um problema. Algoritmos podem ser implementados por programas de computador, mas no representam necessariamente um programa de computador, e sim os passos necessrios para realizar uma tarefa.

Complexidade assinttica de um algoritmo determina a velocidade do crescimento de elementos de tempo consumidos por um algoritmo em relao ao nmero N de elementos de entrada, onde N maior que uma constante N0. A funo fmax(N), que atribui um nmero mximo de elementos de tempo para cada nmero N (> 0) de elementos de entrada, chamada de a complexidade de um algoritmo no pior caso. De forma anloga, a funo fmin(N), que atribui um nmero mnimo de elementos de tempo para cada nmero N, chamada de a complexidade de um algoritmo no melhor caso; por outro lado, a funo favg(N) chamada de a complexidade de um algoritmo no caso mdio. Normalmente, empregam-se letras gregas para denotar as funes de avaliao da complexidade assinttica de algoritmos. O(N), tambm conhecida por Big-Oh, usada para avaliar o pior caso; (N) usada para avaliar o melhor caso e (N) usada para avaliar caso mdio. Na avaliao de um algoritmo, geralmente, a complexidade assinttica para o pior caso empregada.

OCaml, Objective Caml, tambm conhecido como O'Caml uma linguagem de programao funcional da famlia ML, desenvolvida por INRIA em 1996. No uma linguagem puramente funcional, permitindo a existncia de valores mutveis bem como de efeitos colaterais, tipicamente existentes apenas em linguagens imperativas. Esta caracterstica distingue-a de outras linguagens puramente funcionais, como por exemplo Haskell.

Geometria Computacional, em cincia da computao, o estudo de algoritmos para resolver problemas relacionados geometria. O objetivo da geometria computacional desenvolver algoritmos e estruturas de dados eficientes que so aplicados na soluo de problemas em termos de objetos geomtricos elementares como pontos, retas, segmentos de reta, polgonos, poliedros, superfcies, etc. Exemplos de problemas que se incluem no domnio de estudo da disciplina so: par de pontos mais prximo, fecho convexo, diagrama de

xvii

Voronoi, triangulao de Delaunay, entre vrios outros. Na geometria computacional as figuras e construes geomtricas correspondem a estruturas de dados e algoritmos. Em geral, o interesse solucionar um problema utilizando o menor numero possvel de operaes elementares de modo a trazer eficincia no clculo da soluo. A geometria computacional constitui ferramenta fundamental em diversas reas da computao que necessitam de uma abordagem geomtrica, tais como computao grfica, robtica, sistemas de informao geogrfica (SIGs), viso computacional, otimizao combinatria, processamento de imagens, teoria dos grafos, desenho de circuitos integrados, desenho e engenharia (CAD/CAM), entre outras.

Triangulao de Delaunay, em matemtica e geometria computacional, pode ser definida, para um conjunto de pontos P no plano, como a triangulao DT(P) de P tal que nenhum ponto em P est dentro do crculo-circundante de qualquer tringulo em DT(P). Em outras palavras, essa regra estabelece que o crculo-circundante de um tringulo no deve conter outros pontos alm dos pontos do tringulo. A triangulao de Delaunay maximiza o ngulo mnimo e minimiza o ngulo mximo de todos os tringulos na triangulao. Essa tcnica foi inventada por Boris Delaunay em 1934. A triangulao de Delaunay usada com freqncia para construir malhas para o mtodo dos elementos finitos, as quais, para serem precisas e com boa qualidade, devem ser refinadas por algoritmos que obedecem regra do crculo-circundante.

Grafo, em cincia da computao, um tipo abstrato de dados que consiste de um conjunto de ns e um conjunto de arestas que estabelecem relaes (conexes) entre os ns. Um grafo G definido como segue: G=(V,E), onde V um conjunto finito, no-vazio de vrtices e E um conjunto de arestas (ligaes entre pares de vrtices). Quando as arestas no grafo no tem direo, o grafo chamado no-direcionado; caso contrrio, chamado direcionado. Na prtica, associada alguma informao a cada n e a cada aresta.

Grafo Direcionado Acclico um grafo direcionado que no possui ciclos.

rvore balanceada uma rvore cuja altura da subrvore esquerda de cada n nunca difere em mais que 1 da altura de sua subrvore direita.

Captulo I

Introduo1.1 IntroduoO problema da localizao planar de pontos est presente em muitas aplicaes que operam sobre algum domnio geomtrico decomposto em regies. O problema definido como segue: dada uma subdiviso do plano modelada por um grafo planar de linhas retas (PSLG) G com n vrtices e um ponto de consulta Q, determine qual regio da subdiviso contm Q. um dos mais importantes problemas da geometria computacional e tem sido extensamente investigado nos anos recentes, tendo aplicao em muitas reas. A localizao planar de pontos desempenha funo essencial, sobretudo, em sistemas de informaes geogrficas. Nesse contexto, dados um mapa e um ponto de consulta especificado por suas coordenadas, objetiva-se encontrar a regio do mapa que contm aquele ponto. Note-se que um mapa nada mais que uma subdiviso do plano em regies, uma subdiviso planar. Considere por, exemplo, a mera exibio da localizao atual de agentes (como veculos automotores, embarcaes, aeronaves, aparelhos telefnicos celulares, pessoas, animais) ou de evento fsico (como foco de incndio, abalo ssmico) em um mapa armazenado eletronicamente. Trata-se de um procedimento relativamente simples. No entanto, em tempo real, localizar e relatar, de modo rpido e automtico, o nome da regio em que se encontra o agente ou ocorre um evento uma tarefa custosa. A modalidade mais elementar do problema de localizao planar de pontos determinar se um ponto interno a um dado polgono (PSLG). Um exemplo simples de aplicao o ato de clicar o boto do mouse dentro de uma forma geomtrica desenhada sobre uma tela de computador com o objetivo de executar alguma ao associada. Um outro exemplo, detectar se um sinal de aparelho telefnico celular provm de alguma regio especfica, por exemplo, a rea de um estabelecimento penitencirio sob vigilncia e monitoramento. Esse tipo de problema de localizao planar de pontos pode ser solucionado, tanto para polgonos

19

convexos e quanto polgonos no-convexos, com algoritmos geomtricos discutidos em (OROURKE, 1998). Exclusivamente para polgonos convexos, (WALKER, SNOEYINK; 1999) apresenta um algoritmo baseado em representao de Geometria Slida Construtiva (Constructive Solid Geometry CSG). Para determinar, por exemplo, se o tringulo ABC (Figura 1.1), que tem os vrtices A(x1, y1), B(x2, y2) e C(x3, y3), contm o ponto P(x, y), usa-se a frmula da rea do tringulo:

(1.1)

onde P1, P2 e P3 so os vrtices. Se for usado o valor absoluto do determinante, os vrtices podem ser tomados em qualquer ordem. Ento, para determinar se o tringulo ABC contm o ponto P, calcula-se a rea do tringulo ABC usando a Equao 1.1, definindo-se trs novos tringulos, cada um tendo como seus vrtices o ponto P e dois vrtices do tringulo ABC. Dessa operao, resultam trs nicos tringulos: ABP, BCP e CAP. Se o tringulo ABC contm o ponto P (Figura 1.2), ento AREA(ABP) + AREA(BCP) + AREA(CAP) = AREA(ABC). Se o tringulo ABC no contm o ponto P (Figura 1.3), ento AREA(ABP) + AREA(BCP) + AREA(CAP) > AREA(ABC).

Figura 1.1. Determinao se Figura 1.2. Se o ponto P um ponto P est dentro de um estiver dentro do tringulo tringulo ABC. ABC, o somatrio da rea dos trs novos tringulos ser igual rea de ABC.

Figura 1.3. Se o ponto P estiver fora do tringulo ABC, o somatrio da rea dos trs novos tringulo ser maior que a rea de ABC.

Para o problema de determinar em um mapa qual a regio que contm um determinado ponto uma generalizao do problema de determinar se um dado polgono contm um certo ponto existem basicamente dois tipos de algoritmos: ineficientes e timos.

20

Os algoritmos ineficientes so aqueles que empregam a fora bruta testando cada regio do mapa para verificar qual delas contm o ponto de consulta. O nmero de comparaes necessrias, no pior caso, pode ser igual ao nmero de regies do mapa. Os algoritmos timos so aqueles baseados em mtodos eficientes. A eficincia desses algoritmos aferida dos pontos de vista terico e prtico. A eficincia terica refere-se complexidade do algoritmo no pior caso. A eficincia prtica avaliada pela facilidade de implementao. O uso de estruturas de dados complicadas na busca de eficincia terica termina acarretando a concepo de um algoritmo pouco prtico. A eficincia terica dos algoritmos de localizao planar analisada sob trs atributos, relativamente ao nmero (n) de segmentos ou de vrtices que compem a malha: 1. Tempo de pr-processamento. O tempo requerido para construir a estrutura de pesquisa uma estrutura de dados contendo uma subdiviso adicional de um PSLG para agilizar as consultas de pontos. O(n log n) o requisito de tempo ideal. 2. Espao. O armazenamento usado para construir e representar a estrutura de pesquisa. O(n) o requisito de espao ideal. 3. Tempo de pesquisa. O tempo requerido para localizar um ponto na estrutura de pesquisa. O(log n) o requisito de tempo ideal para cada pesquisa realizada. Como a eficincia prtica dos algoritmos timos dependente de sua implementao, na prxima seo sero esboados algoritmos com eficincias tericas variadas, sem qualquer discusso sobre eficincia do ponto de vista prtico.

1.1.1 Algoritmos de Localizao Planar de Pontos ExistentesNesta seo, ser traado o perfil dos algoritmos de Shamos, Lee e Preparata, Preparata, Kirkpatrick (EDAHIRO; KOKUBO; ASANO, 1984) e Berg et al. (BERG, 1997).

a) Algoritmo de Shamos Este algoritmo particiona o plano em linhas horizontais, conhecidas por slabs, que atravessam os vrtices do PSLG (Figura 1.4). Dessa forma, cada aresta do PSLG dividida em segmentos por aquelas linhas horizontais. Para cada slab, construda uma rvore binria. Em cada rvore binria, so representados os segmentos da slab ordenados pela coordenada x. Dado um ponto de consulta P(x, y), primeiro encontra-se a slab que contm

21

P atravs do valor de sua coordenada y. Depois, a localizao de ponto concluda com outra pesquisa na rvore binria daquela slab pela coordenada x.Slab 9 Slab 8 Slab 7 Slab 6 Slab 5 Slab 4 Slab 3 Slab 2

Slab 1 Slab 0

Figura 1.4. Um PSLG particionado em slabs horizontais. No pior caso, o tempo de pesquisa O(log n) e, tanto o tempo de pr-processamento quanto o espao requeridos so O(n2).

b) Algoritmo de Lee e Preparata Nesse algoritmo, o PSLG decomposto em um conjunto de cadeia montona um caminho do vrtice mais inferior, com menor valor para coordenada y, at o vrtice mais superior, com maior valor para a coordenada y. Cada aresta desse caminho direcionada no sentido do topo e ordenada da esquerda para a direita. A decomposio do PSLG somente ocorre se o PSLG for regular, isto , se todo vrtice for um ponto inicial de uma aresta e um ponto terminal de outra aresta, exceto no vrtice mais inferior e vrtice mais superior. Se o PSLG no for regular, ele regularizado pelo algoritmo plane-sweep (OROURKE, 1998), como uma etapa de pr-processamento que toma tempo O(n log n). O algoritmo localiza um ponto de consulta em O((log n)2) e requer espao O(n).

22

V11 V10 V9 V8 V7 V6 V5 V4

V3 V1

V2

Figura 1.5. Um PSLG decomposto em um conjunto de cadeias montonas (O procedimento de regularizao adicionou novas arestas (v2, v3), (v5, v6) e (v7, v8)) ao PSLG. c) Algoritmo de Preparata Esse algoritmo um melhoramento do algoritmo de Shamos por meio da subdiviso de cada aresta em O(log n) segmentos. As pesquisas so feitas, simultaneamente, nas direes x e y, em uma rvore que representa a estrutura hierrquica das slabs. O algoritmo apresenta estrutura de dados complicada que representa regies do PSLG com slabs e trapzios. A estrutura de pesquisa construda em tempo O(n log n) e com espao O(n log n).Cada pesquisa requer tempo O(log n).

d) Algoritmo de Kirkpatrick O algoritmo utiliza um grafo acclico direcionado (DAG Directed Acyclic Graph) com raiz como estrutura de dados adicional e requer que as faces do PSLG sejam triangulares. Considere a tarefa de localizao de pontos em uma subdiviso planar do plano, como o polgono abaixo:

23

Figura 1.6. Um polgono com faces irregulares.

Como se pode ver, cada subdiviso identificada com uma letra que ser retornada na consulta de pontos. A soluo proposta por Kirkpatrick para responder a cada consulta de ponto em tempo O(log n), em que n o nmero de vrtices na subdiviso, segue os passos seguintes, demonstrados sobre o polgono da Figura 1.6: 1. Triangular a subdiviso se ela no contiver somente tringulos, conforme mostrado na Figura 1.7.

Figura 1.7. Polgono triangulado para construo da estrutura de dados de Kirkpatrick.

2. Construir a estrutura de dados.

2.1. Envolver a triangulao com um tringulo grande o suficiente de modo que nenhuma de suas trs arestas intercepte a triangulao. Os novos tringulos formados, representando faces externas triangulao, so rotulados com O como na Figura 1.8.

24

Figura 1.8. Triangulao envolta por um grande tringulo e conectada aos seus vrtices.

2.2. Encontrar um conjunto independente de vrtices com grau menor ou igual a oito dentro de cada casco convexo, que foram formados pelas faces internas da triangulao como na Figura 1.9.

Figura 1.9. Triangulao com conjunto independente de vrtices com grau 8.

25

2.3. Remover da triangulao o conjunto independente de vrtices com grau 8 (Figura 1.10).

Figura 1.10. Triangulao sem o conjunto independe de vrtices com grau 8.

2.4. Refazer a triangulao, seguindo a mesma regra para rotular as faces como mostrado na Figura 1.11.

Figura 1.11. Triangulao refeita.

26

2.5. Repetir os passos anteriores at que restem apenas os vrtices do grande tringulo. O grafo direcionado acclico (DAG) resultante do pr-processamento do algoritmo de Kirkpatrick mostrado na Figura 1.12. Cada n do grafo corresponde a um tringulo. Logo adiante, ser mostrado como efetuar procedimento de localizao de pontos.

Figura 1.12. Estrutura de pesquisa gerada pelo algoritmo de Kirkpatrick.

A consulta de pontos inicia-se pelo n-raiz do DAG. Se o tringulo a que se refere o n visitado no contm o ponto procurado, ento o ponto est fora da subdiviso. Caso contrrio, checa-se cada um dos ns-filhos e, recursivamente, caminha-se por sua descendncia checando at encontrar o n-folha indicando o tringulo que contm o ponto. Um exemplo de consulta de pontos est exemplificado nas Figuras 1.13 e 1.14 adiante.

27

Figura 1.13. Um ponto de consulta sobre uma face F da subdiviso original.

Figura 1.14. O caminho percorrido no DAG para localizar a regio que contm o ponto de consulta.

28

e) Algoritmo apresentado por Berg Berg et al. (BERG, 1997) apresenta um mtodo que cria uma estrutura de busca ao mesmo tempo em que se constri a triangulao de Delaunay. Seja p o ponto de consulta. Para encontrar o tringulo que contm p, usada a seguinte abordagem: enquanto se constri a triangulao de Delaunay, tambm se constri a estrutura de localizao de pontos D, que um DAG. As folhas de D correspondem aos tringulos da triangulao atual T, e so mantidos ponteiros entre as folhas de D e a triangulao. Os ns internos de D correspondem aos tringulos que estiveram na triangulao em algum estgio anterior, mas que j foram destrudos. A estrutura de localizao de pontos construda como segue. Inicializa-se D com um nico n-folha, que correspondente ao tringulo inicial p1p2p3, tambm chamado de supertringulo na triangulao de Delaunay incremental. Suponha que em algum momento, o tringulo pipjpk da triangulao atual seja dividido em trs (ou dois) tringulos. A correspondente mudana em D adicionar trs (ou dois) novas folhas ao grafo D e transformar o n-folha referente ao tringulo pipjpk em um n interno com ponteiros apontando para aquelas trs (ou duas) folhas recm-acrescidas. De modo semelhante, quando so substitudos dois tringulos pkpipj e pipjpl pelos tringulos pkpipl e pkplpj, por meio da remoo de uma aresta, so criadas folhas para os dois novos tringulos, e os ns pkpipj e pipjpl recebem ponteiros para as duas novas folhas. Como mostrado na Figura 1.15, quando um n-folha se torna um n interno, ele recebe, no mximo, trs ponteiros partido dele. Usando a estrutura de pesquisa D, pode-se localizar o prximo ponto p a ser adicionado na triangulao atual. Isso feito do seguinte modo: comea-se na raiz de D, que corresponde ao tringulo inicial p1p2p3. So checados os trs filhos da raiz para ver em qual tringulo o ponto p se encontra. Identificado o n, caminha-se para o seu primeiro filho e novamente feita a checagem para identificar o tringulo que contm o ponto p, e assim por diante, at que seja alcanado um n-folha em D. Esse n-folha corresponde a um tringulo na triangulao atual que contm o ponto p. Uma vez que o grau de sada de qualquer n no mximo trs, o procedimento para localizar um determinado ponto requer tempo O(log n) em relao ao nmero de ns no caminho de busca ou quantidade de tringulos armazenados em D.

29

Diviso do tringulo T1 aps a insero do ponto p:

Remoo da aresta pipj para atender a propriedades de Delaunay:

Remoo da aresta pipk para atender a propriedades de Delaunay:

Figura 1.15. O efeito da insero do ponto p no do tringulo T1 sobre a estrutura de dados D. Somente so mostradas as partes que sofreram alteraes. Na Figura 1.16 adiante, ilustrada, em um DAG, a histria da construo incremental de uma triangulao de Delaunay. Nela, demonstrada a complexidade assinttica, no pior caso,

30

para cada pesquisa realizada, no mtodo apresentado por Berg et al. em (BERG, 1997). Assim, considerando-se um total de 13 tringulos, incluindo todos aqueles presentes em algum estgio anterior e tambm na triangulao atual, obteve-se o seguinte resultado: N de ns (N): 13 Ns testados: 1, 2, 3, 4, 11, 12, 13 N de ns testados: 7 Complexidade: (3 * log3 N) => Constante * log3 N => O(log N)

1

2

3

4

5

6

7

8

9

10

11

12

13

Legenda:Tringulo testado e em que um dos tringulos-filhos contm o ponto de consulta Tringulo testado, mas que nem ele nem quaisquer dos tringulos-filhos contm o ponto de consulta Tringulo em que se encontra o ponto de consulta

Figura 1.16. Pior caso da localizao de pontos no DAG referente histria de uma triangulao de Delaunay incremental. Comparado ao mtodo da fora bruta, o mtodo tratado por Berg et al. utiliza estrutura de pesquisa hierrquica que reduz o espao de busca, mas outros mtodos devem ser projetados para efetuar pesquisas em tempo logartmico. Alguns algoritmos de localizao planar de pontos no foram apresentados: alguns por serem complicados e distante de serem prticos, como o caso do de Dobkin e Lipton; outros,

31

por terem semelhanas com os que foram mostrados, como por exemplo, o algoritmo de Lipton e Tarjan que se assemelha ao de Shamos.

1.2 MotivaoA localizao planar de pontos um importante problema da geometria computacional. Em triangulao de Delaunay baseada em abordagem incremental, a localizao planar de pontos deve ser dinmica, ou seja, prover respostas enquanto a malha est sendo construda e constitui, portanto, um dos aspectos crticos eficincia do processo de gerao de malhas (BERG, 1997; OROURKE, 1998; MOUNT, 2002). Os dois procedimentos mais conhecidos para construir a estrutura de pesquisa so Slabs e Mapas Trapezoidais (BERG, 1997; OROURKE, 1998; MOUNT, 2002). Este ltimo possui medidas assintticas ideais para os trs atributos de eficincia, mas apresenta srias complicaes para tornar-se dinmico, ou seja, permitir alterao na estrutura de pesquisa para retratar eventos de insero ou remoo (de pontos, de segmentos ou de tringulos) durante a construo da malha. Uma delas utilizar grafo direcionado acclico como estrutura de pesquisa e requerer insero aleatria de segmentos para obter um grafo topologicamente de altura prximo a O(log n) similar a uma rvore balanceada. J as Slabs requerem espao O(n2), mas no exigem disposio aleatria, podendo, ser implementadas dinamicamente. Mucke et al. (MUCKE; SAIAS; SHU, 1996), por exemplo, apresentaram um procedimento para encontrar o ponto de consulta, no plano 2D e 3D, sem necessidade de estrutura de pesquisa, simplesmente caminhando atravs da triangulao, por amostragem randmica. Entretanto, diante dos resultados prticos obtidos, concluram que, em triangulaes com mais de um milho de pontos, um algoritmo de maior eficincia assinttica, mesmo requerendo pr-processamento e estruturas de dados adicionais, seria a melhor soluo para o problema de localizao planar de pontos. Como visto, a formulao de algoritmo de localizao planar de pontos que altera dinamicamente a subdiviso, medida que surgem eventos de insero ou remoo nos diagramas de Delaunay ou Voronoi (OROURKE, 1998), uma rea de pesquisa que se mantm ativa. Como a eficincia da localizao planar de pontos, fundamentalmente, depende da estrutura de dados e algoritmo empregados, nosso problema consiste em construir um algoritmo dinmico de localizao planar de pontos.

32

1.3 ObjetivosO principal objetivo deste trabalho formular e implementar um algoritmo de localizao planar de pontos que altera dinamicamente a subdiviso planar, medida que surgem eventos de insero ou remoo nos diagramas de Delaunay ou Voronoi (OROURKE, 1998). O objetivo secundrio discutir os aspectos crticos da gerao da malha Triangulao de Delaunay, sobretudo a baseada em abordagem incremental, em que se insere o problema da Localizao Planar de Pontos.

1.4 ContribuiesEste trabalho traz alguns resultados positivos para a geometria computacional, sobretudo, para a gerao automtica de malhas e localizao planar de pontos. 1. Constatao da robustez da linguagem de programao OCaml para tratar problemas de gerao de malhas. Em experimentos com a triangulao de Delaunay baseada em diviso-e-conquista, foi demonstrada a estabilidade numrica de OCaml para expressar nmeros na representao ponto-flutuante com alta preciso e a instabilidade numrica da linguagem C, que falhou em testes geomtricos, devido a erros de arredondamento, e produziu resultados divergentes (MOURA et al., 2005). 2. Criao da Multirvore-B Intervalar. Trata-se de uma estrutura de dados derivada da rvore-B, incrementada com mecanismo de pesquisa intervalar e arranjada

dinamicamente em camadas (MOURA et al., 2006). 3. Construo de algoritmo dinmico para o problema da localizao planar de pontos. O algoritmo (MOURA et al., 2006) forma a estrutura de pesquisa para a localizao medida que a malha construda, admitindo que os segmentos que constituem a malha sejam inseridos em qualquer ordem. Para tanto, a incluso de cada segmento modelada como um evento. O mtodo das Slabs utilizado para subdividir o plano. A Multirvore-B Intervalar empregada como estrutura de dados. Tanto a Multirvore-B Intervalar quanto o Algoritmo Dinmico de Localizao Planar de Pontos poderiam ter sido implementados com qualquer linguagem de programao. Em cada linguagem teriam um desempenho caracterstico. Aqui, eles foram implementados em OCaml, porque foi a linguagem de programao definida desde o incio da pesquisa.

33

1.5 MetodologiaInicialmente, faz-se uma reviso bibliogrfica dos principais problemas relacionados localizao planar de pontos, sobretudo triangulao de Delaunay com a abordagem incremental. Aps esse levantamento, foi estudada a linguagem de programao OCaml (LEROY, 2003), uma linguagem funcional projetada pelo INRIA 1, que, decidiu-se, seria empregada na implementao dos algoritmos. Feito o estudo sobre OCaml, implementou-se, em OCaml, o algoritmo de Guibas-Stolfi (GUIBAS; STOLFI, 1985), melhorado por Geoff Leach (LEACH, 1992). Os resultados comparativos do cdigo implementado em OCaml com o cdigo implementado originalmente em C permitiram avaliar as vantagens e desvantagens de ambas as linguagens para tratar problemas geomtricos que dependem de preciso numrica. Na seqncia, foi implementado um gerador de malhas de elementos finitos bidimensional. As malhas produzidas pelo gerador foram utilizadas nos testes do algoritmo dinmico de localizao planar de pontos.

1.6 Estrutura da TeseNesta tese, no so discutidos aspectos tericos do mtodo dos elementos finitos, antes so tratados temas puramente relacionados qualidade da malha e otimizao do seu processo construtivo. A localizao planar de pontos constitui o tpico central da pesquisa, sendo a maior contribuio da tese o algoritmo dinmico baseado em eventos, utilizando o mtodo das Slabs como tcnica de subdiviso do plano e a Multirvore-B Intervalar como estrutura de dados. Dessa forma, os demais captulos da tese esto organizados como se segue: No Captulo 2, enfocada a gerao da malha como uma tarefa composta de mltiplas etapas. So relatados os procedimentos computacionalmente crticos, relevando sua importncia qualidade final da malha e ao seu processo de construo. Fala-se da complexidade dos domnios geomtricos, muitas vezes compostos de cavidades, fronteiras internas e formas complicadas. Tambm so discutidas as propriedades ideais de um gerador de malhas, principalmente a de construir uma malha segundo certos critrios de qualidade e a1

Institute National de Recherche en Informatique et Automatique (Instituto Nacional de Pesquisa em Automao e Tecnologia da Informao, Rocquencourt, Frana).

34

de alguma condio de parada pr-estabelecida. A triangulao de Delaunay incluindo suas propriedades fundamentais, tipos e complexidades de algoritmos e a finalidade da localizao planar de pontos para o algoritmo de triangulao incremental outro tpico discutido. Finalmente, so apresentados outros dois tpicos relevantes para a qualidade da malha: a insero de pontos de Steiner, tambm chamada de triangulao de Steiner, e duas tcnicas de refinamento da malha melhoria de regies com tringulos de qualidade insatisfatria. No Captulo 3, so apresentados os resultados da implementao da triangulao de Delaunay pelo mtodo de diviso-e-conquista baseada no algoritmo de Guibas-Stolfi, utilizando OCaml. Foi nosso primeiro ensaio do emprego da linguagem OCaml na implementao de algoritmo geomtrico. So expostas ainda as caractersticas mais relevantes de OCaml e discutidas questes concernentes traduo de cdigo escrito em C para OCaml. No Captulo 4, apresentado um gerador de malhas escrito em OCaml e exibida uma galeria de objetos geomtricos cobertos por malhas uniformes e gradientes. A implementao do gerador de malhas seguiu o mesmo estilo de programao adotado na implementao do algoritmo de triangulao de Delaunay tratado no Captulo 3. No Captulo 5, apresentado um algoritmo dinmico de localizao planar de pontos, como soluo a um dos problemas importantes da geometria computacional. O algoritmo dinmico apresentado, embora tenha sido motivado pelo mtodo de fora bruta de localizao planar de pontos empregado no algoritmo do gerador de malhas, um algoritmo genrico, que pode ser til em outros contextos, como, por exemplo, aplicaes relacionadas a sistemas de informaes geogrficas. No Captulo 6, so apresentadas as concluses e indicaes de trabalhos futuros.

Captulo II

Aspectos Crticos da Gerao da Malha

2.1 IntroduoOs objetos do mundo real cujos fenmenos fsicos se pretende simular possuem peculiaridades importantes, como formato irregular, lacunas e estrutura material heterognea. Para possibilitar a construo automtica da malha, esses objetos so modelados por polgonos ou grafos planares de linhas retas PSLG. A gerao de malhas um procedimento complexo e custoso que resolve o problema de decompor um domnio geomtrico qualquer em partes menores denominadas de elementos. tambm uma tarefa demorada, em razo da complexidade dos domnios geomtricos e da necessidade de se produzir uma malha que propicie preciso simulao de fenmenos fsicos. Assim, a dificuldade computacional inerente construo da malha se justifica, sobretudo, em virtude de ela ocorrer como que proliferando e ajustando elementos geomtricos, circunscritos s fronteiras do polgono e sob outras restries impostas pelas caractersticas do objeto real, que lhe foram, de algum modo, transferidas.

2.2 Tipos de Domnios GeomtricosEssa seo foi aqui inclusa por se entender que a complexidade geomtrica dos domnios (em duas ou trs dimenses) acarreta dificuldades algortmicas ao processo de construo da malha. Em duas dimenses, so distinguidos cinco tipos de domnios planares (BERN; PLASSMAN, 2000; BERN; EPPSTEIN, 1992). Na Figura 2.1, so mostrados quatro deles.

36

Conjunto de pontos. A entrada um conjunto de pontos no plano. Sem os pontos de Steiner, os vrtices da triangulao so exatamente os pontos de entrada, e a fronteira da triangulao o casco convexo; Polgono simples. Inclui apenas a fronteira externa e a regio interior; Polgono com buracos. um polgono simples acrescido de outros polgonos simples sem a regio interior. Sua fronteira tem mais que um componente conectado; Domnio mltiplo. um polgono com buracos contendo fronteiras internas; Domnio curvo. o que permite lados curvos. Em trs dimenses, as entradas, em sua maioria, tm tipos anlogos: Poliedro simples. topologicamente equivalente a uma esfera; Poliedro geral. Pode ser multiplamente conectado e ter cavidades, significando que sua fronteira pode ter mais que um componente conectado. Domnios polidricos mltiplos. So poliedros gerais com fronteiras internas; Domnios curvos tridimensionais. So aqueles que tm fronteiras curvas.

(a) (b) (c) (d) Figura 2.1. Tipos de entradas bidimensionais: (a) polgono simples, (b) polgono com buracos, (c) domnio mltiplo e (d) domnio curvo (BERN; PLASSMAN, 2000).

2.3 Tipos de MalhasExistem trs tipos de malhas: estruturadas, no-estruturadas e hbridas. Uma malha estruturada (Figura 2.2 (a)) em duas dimenses muitas vezes uma grade quadrada deformada por algumas transformaes de coordenadas. Cada vrtice da malha, exceto aqueles das bordas, tem uma vizinhana local isomrfica. Em trs dimenses, uma malha estruturada normalmente uma grade cbica deformada. No estritamente necessrio armazenar os valores das coordenadas dos ns, pois eles podem ser implicitamente conhecidos pelo nmero de cada elemento. Uma malha no-estruturada (Figura 2.2 (b)) , na maioria dos casos, uma triangulao

37

com vizinhana local varivel. Uma malha hbrida (Figura 2.2 (c)) aquela resultante da combinao de malhas estruturadas e no-estruturadas. As malhas estruturadas oferecem certas vantagens e desvantagens sobre as noestruturadas. Elas so mais simples e tambm mais convenientes para uso em mtodos das diferenas finitas menos complexas. Elas requerem menos memria de computador, pois suas coordenadas podem ser calculadas em vez de explicitamente armazenadas. A maior desvantagem de uma malha estruturada a falta de flexibilidade em ajustar-se a um domnio com forma complicada, apesar de inmeras tcnicas para encontrar as transformaes de coordenadas apropriadas (BERN; EPPSTEIN, 1992).

(a) Estruturada

(b) No-estruturada Figura 2.2. Tipos de Malhas.

(c) Hbrida

2.4 Propriedades Desejveis de uma Malha e de Geradores de MalhaNa prtica, quando um domnio de entrada e uma condio numrica so dados, a gerao de malha segue trs passos (TENG, 1999): 1. Converter a geometria de entrada em uma representao2 padro, como PSLG; 2. Gerar uma malha construindo seu conjunto de pontos e elementos; 3. Aplicar um algoritmo de melhoramento e refinamento da malha como uma maneira de aprimorar a qualidade da malha construda no Passo 2. O Passo 3 tem por objetivo melhorar a qualidade da malha e reduzir o erro na aproximao provida pelo mtodo dos elementos finitos. Esse erro evolui com o tamanho do elemento e est relacionado aos ngulos mnimo e mximo. Por essa razo, o tamanho do

H vrias representaes para descrever a geometria de um domnio de entrada, como PSLG, PLS (uma extenso natural do PSLG para uma dimenso elevada), CSG, d-reps, dd-reps. Veja detalhes em (TENG, 1999).

2

38

elemento e dos ngulos mnimo e mximo so uma importante medida de qualidade tanto para gerao de malha como para interpolao de superfcie. Investigaes (SHEWCHUK, 2002) acerca do espectro de curvas de contorno demonstraram que o condicionamento de matriz de rigidez e a acurcia da interpolao e da simulao dependem do tamanho e forma dos elementos finitos e que medidas de qualidade devem ser estabelecidas. Infelizmente, as medidas de qualidade para interpolao e condicionamento de matriz so conflitantes (MOORE, 1992). Por exemplo, ngulos pequenos so ruins para

condicionamento de matriz, mas no para interpolao. Na interpolao, h dois tipos de erros: a diferena entre a funo interpolada e a funo verdadeira e a diferena entre o gradiente da funo interpolada e o gradiente da funo verdadeira. Erros no gradiente podem ser surpreendentemente importantes, se a aplicao de renderizao, construo de mapas ou simulao, porque eles podem comprometer a acurcia ou criar artefatos visuais no esperados. Por exemplo, seja f uma funo. Seja g uma interpolao linear de f sobre alguma triangulao. A Tabela 2.1 apresenta as medidas de qualidade relacionadas a tamanho e forma do elemento para trs critrios diferentes: erro de interpolao, erro de interpolao gradiente e condicionamento de matriz de rigidez. Tabela 2.1. Trs critrios para elementos lineares (SHEWCHUK, 2002).CritrioErro de interpolao || f g || Erro de interpolao gradiente || f g ||

Medida de qualidade- Tamanho muito importante - Forma dos elementos irrelevante

Forma dos elementos

Qualquer:

- Tamanho importante - ngulos grandes so ruins; pequenos so bons Condicionamento do autovalor - ngulos pequenos so ruins; grandes so bons mximo da matriz de rigidez Max

Tambm foi mostrado (SHEWCHUK, 2002) que a convergncia do mtodo dos elementos finitos falha quando os ngulos se aproximam de 180, como o tringulo mostrado na Figura 2.3.

Figura 2.3. Um tringulo de formato inadequado para o mtodo dos elementos finitos.

39

Os algoritmos de Chew (CHEW, 1989) e Ruppert (RUPPERT, 1995) mostraram-se eficazes em cumprir esses requisitos qualitativos. Tcnicas adaptativas como circle packing (BERN, 1994; BERN; MITCHELL; RUPPERT, 1994; BERN; EPPSTEIN, 1997) e quadtree (BERN, 2002) tambm satisfazem essas mtricas qualitativas. Circle packing uma tcnica introduzida por Bern, Mitchell e Ruppert (BERN; MITCHELL; RUPPERT, 1994) que preenche o domnio com crculos e depois constri a malha, acrescentando arestas entre o centro dos crculos e os pontos de tangncia nas suas fronteiras.

Chew provou que os algoritmos baseados em circle packing, cujos passos so ilustrados na Figura 2.4, calculam o local dos pontos a serem inseridos, chamados pontos de Steiner, e chegam a produzir uma malha em que nenhum ngulo mais agudo que 30 ou mais obtuso que 120.

Figura 2.4. Passos da triangulao baseada em circle packing (BERN, 1994; BERN; EPPSTEIN, 1997). Quadtree uma partio recursiva de uma regio do plano em quadrados alinhados aos eixos das coordenadas (Figura 2.5). A tcnica tambm chamada malha cartesiana, porque produzida por diviso repetitiva de um quadrado em quatro quadrados de do tamanho. Um quadrado, a raiz, cobre a regio inteira. Um quadrado pode ser decomposto em quatro quadrados-filhos, formados a partir dos pontos mdios de seus segmentos verticais e horizontais. A coleo de quadrados formam ento uma rvore, com os quadrados menores posicionados nos seus nveis mais inferiores. Octrees so uma generalizao das quadtrees para trs dimenses. Na Figura 2.6, exibida uma malha tetradrica derivada de uma octree.

40

Figura 2.5. (a) Uma quadtree. (b) Uma triangulao de um conjunto de pontos baseada em quadtree em que nenhum ngulo menor que 20 (SHEWCHUK, 1997). Em uma quadtree cujos quadrados foram triangulados (BERN; EPPSTEIN, 1992) podese garantir que todos os ngulos medem entre 36 e 80, sendo que, com algum melhoramento adicional, a triangulao pode se tornar equivalente a uma malha de tringulos equilteros.

Figura 2.6. A superfcie de uma malha tetradrica derivada de uma octree (BERN; PLASSMAN, 2000). Uma outra preocupao oferecer tanto controle quanto possvel sobre o tamanho dos elementos na malha. Idealmente, esse controle inclui a habilidade de dispor, em gradao, de pequenos a grandes elementos sobre uma distncia relativamente curta. A razo para esse requisito que o tamanho do elemento tem dois efeitos sobre uma simulao de elemento finito. Elementos pequenos, densamente empacotados, oferecem mais acurcia que os maiores, esparsamente empacotados; mas o tempo de computao requerido para resolver um problema proporcional ao nmero de elementos. Ento, a seleo do tamanho do elemento tem implicaes sobre a velocidade e exatido. Por outro lado, o tamanho do elemento requerido para alcanar uma dada preciso depende do comportamento do fenmeno fsico

41

que est sendo modelado e pode variar por todo o domnio do problema. Por exemplo, uma simulao de fluxo de fluido requer elementos menores em meio turbulncia que em reas de relativa tranqilidade; em trs dimenses, o elemento ideal em uma parte da malha pode variar em volume por um fator de milho ou mais do elemento ideal em outra parte da malha. Se elementos de tamanho uniforme so usados por toda a malha, deve-se selecionar um tamanho menor de modo a garantir acurcia suficiente na maior parte da poro de demanda do domnio do problema e por isso possivelmente incorrer em demandas computacionais excessivamente grandes. Para evitar essa cilada, o gerador de malha deve oferecer rpida gradao de tamanhos menores a maiores (SHEWCHUK, 1997). Um aspecto final que a malha deve se ajustar s fronteiras do domnio geomtrico de qualquer um dos tipos descritos na Seo 2.2. Veja, por exemplo, a malha que cobre a Figura 2.7, cuja fronteira inclui trs buracos.

Figura 2.7. Parte da triangulao de uma regio com trs buracos (BERN; EPPSTEIN; GILBERT, 1994). Alm de servir como instrumento de avaliao de mtodos de gerao de malha, as mtricas de qualidade apontaram o tringulo equiltero como o polgono ideal para representar os elementos da malha triangular bidimensional.

2.5 Triangulao de DelaunayNesta seo, ser discutida a triangulao de Delaunay em malhas no-estruturadas no plano Euclidiano bidimensional. A triangulao de Delaunay, semelhante s tcnicas de integrao ao segmentar a rea sob a curva produzida por uma funo, particiona a regio interna de um polgono. Na integral, os fragmentos so retngulos ou trapzios; na triangulao, esses fragmentos so tringulos.

42

Para um polgono ser decomposto dever ter mais de trs vrtices (Figura 2.8), ou seja, ter no mnimo uma diagonal. Desse modo, o polgono ser particionado em tringulos pela adio de uma ou mais diagonais. ORourke (OROURKE, 1998) apresenta uma propriedade, que quantifica o nmero de diagonais e tringulos aps a triangulao: toda triangulao de um polgono P de n vrtices usa n-3 diagonais e consiste de n-2 tringulos.

Figura 2.8. Triangulao de um polgono. Por outro lado, se a entrada para o algoritmo de triangulao for um conjunto de pontos no plano (Figura 2.9), a quantidade de tringulos e arestas dada como segue (BERG, 1997): Seja P um conjunto de n pontos no plano, no todos colineares, e k o nmero de pontos em P que esto sobre a fronteira do casco convexo de P. Ento, em qualquer triangulao de P h 2n-2-k tringulos e 3n-3-k arestas.

Figura 2.9. A triangulao de Delaunay sobre uma nuvem de pontos. De fato, essas duas propriedades so interessantes. Mas qual a importncia da triangulao de Delaunay para a gerao de malhas? Primeiro, a maioria dos polgonos que descreve objetos do mundo real tem formato irregular e regies pertencentes a diferentes domnios de interesse. Nesse contexto, a triangulao de Delaunay, conceitualmente, pode ser vista como uma estratgia de decompor um domnio em tringulos, respeitando suas caractersticas geomtricas, como um passo inicial do processo de discretizao. Desse modo, a triangulao de Delaunay funciona como uma espcie de gabarito para delimitar o espao de ocupao, o qual, posteriormente, ser

43

decomposto at que sejam atendidos todos os critrios de qualidade referentes rea e medida angular para cada tringulo. Segundo, a triangulao de Delaunay contribui para a qualidade da malha final, visto que, dado um conjunto de vrtices, maximiza o ngulo mnimo entre todas as maneiras possveis de triangular aquele conjunto (SHEWCHUK, 1997). Formalmente, uma triangulao de um conjunto V de vrtices um conjunto T de tringulos cujos vrtices coletivamente so V, cujos interiores no interceptam um ao outro e cuja unio o fecho convexo de V e cada tringulo que intercepta V o faz somente nos vrtices do tringulo. A triangulao de Delaunay D de V, introduzida, em 1934, pelo matemtico russo Boris Nikolaevich Delone depois chamado Boris Delaunay 3 , um grafo definido como segue. Qualquer crculo no plano tido como vazio se no cerca nenhum vrtice de V. Vrtices so permitidos sobre o crculo. Sejam u e v dois vrtices de V. Um crculo-circundante da aresta vw qualquer crculo que passa atravs de u e v. A aresta uv est em D se e somente se existe um crculo-circundante de uv. Uma aresta que satisfaz essa propriedade dita ser Delaunay. Na Figura 2.10, ilustrada uma triangulao de Delaunay sobre um conjunto de quatrocentos pontos no plano.

Figura 2.10. A triangulao de Delaunay sobre um conjunto de 400 pontos aleatrios. Cada aresta que conecta um vrtice a seu vizinho mais prximo Delaunay. Se w o vrtice mais prximo a v, o menor crculo que passa por v e w no circunda quaisquer outros vrtices.

44

A definio de um tringulo de Delaunay servir para garantir que o conjunto de arestas de Delaunay de um conjunto de vrtices coletivamente formam uma triangulao. O crculocircundante de um tringulo o nico crculo que passa atravs de todos os seus trs vrtices. Um tringulo dito ser de Delaunay se somente se seu crculo-circundante tem seu interior vazio. Essa definio caracterstica dos tringulos de Delaunay, ilustrada na Figura 2.11, chamada propriedade do crculo-circundante vazio (SHEWCHUK, 1999).

Figura 2.11. Cada tringulo em uma triangulao de Delaunay tem um crculo-circundante vazio (SHEWCHUK, 1999). Na seo seguinte, ser apresentada a definio da principal primitiva geomtrica para computar triangulaes de Delaunay.

2.5.1 O teste InCircleSuponha a existncia de quatro pontos distintos no plano: A, B, C e D, conforme a Figura 2.12.

Figura 2.12. O teste InCircle.

Conforme a propriedade apresentada anteriormente e exemplificada na Figura 2.8, a triangulao do polgono exibido na Figura 2.12 originar dois tringulos por meio da3

Delaunay uma transcrio de Delone em estilo francs.

45

insero de uma nica diagonal. Todavia, para completar a triangulao, tem-se que adicionar a diagonal AC ou a diagonal BD. O predicado InCircle prov a informao essencial que determina a estrutura topolgica dos diagramas de Voronoi ou Delaunay. Definio 2.1. O predicado InCircle(A, B, C, D) definido como verdadeiro se e somente se o ponto D for interior regio do plano limitada pelo crculo orientado ABC e ficar esquerda dele.

Em particular isso implica que D deve estar dentro do crculo ABC se os pontos A, B e C definem um tringulo orientado em sentido anti-horrio e fora se os pontos definem um tringulo em sentido horrio. Se A, B e C so colineares, interpreta-se a linha como um crculo adicionando-se um ponto no infinito. Se A, B, C e D so co-circulares, ento esse predicado retorna falso. Este teste equivale a perguntar se ABC + CDA > BCD + DAB. A aplicao prtica escolher as duas combinaes que determinem dois tringulos cuja soma dos ngulos mnimos seja a mxima. Outra forma equivalente desse teste dada abaixo, baseada na coordenada dos pontos. O teste InCircle(A, B, C, D) tambm equivalente a x2A + y2A x2B + y2B x2C + y2C x2D + y2D

D(A, B, C, D) =

xA xB xC xD

yA yB yC yD

1 1 1 1

>0

Qual a utilidade do teste InCircle para a construo de diagramas de Delaunay? Considere-se, por exemplo, o caso de quatro pontos que so vrtices de um quadriltero convexo ABCD, como mostrado na Figura 2.13. Os lados AB, BC, CD e DA esto no fecho convexo e, portanto, tm que ser inclusos. Para completar a triangulao, tem-se que adicionar a diagonal AC ou a diagonal BD. Pode-se decidir qual das duas ser adicionada, calculando InCircle(A, B, C, D). Se for falso, ento o crculo ABC livre de pontos e AC aresta de Delaunay. Caso contrrio, AC no aresta de Delaunay. Na figura abaixo, ilustrado o uso de InCircle para determinar qual das duas arestas aresta de Delaunay.

46

InCircle(A, B, C, D) = F

InCircle(A, B, C, D) = T (externo) InCircle(B, C, D, A) = F (interno)

Figura 2.13. Uso do predicado InCircle para decidir qual das duas arestas (AC ou BD) aresta de Delaunay. Essencialmente, todos os algoritmos de triangulao de Delaunay consistem em selecionar iterativamente a partir de um conjunto de vrtices um subconjunto de trs vrtices que satisfaa ao predicado InCircle e forme um tringulo. Ressalte-se que, entre todas as maneiras possveis de triangular aquele conjunto de vrtices, os tringulos formados possuem os ngulos mnimos maximizados e, conseqentemente, os ngulos mximos minimizados. Mais detalhes sobre o predicado InCircle podem ser encontrados em (GUIBAS; STOLFI, 1985).

2.5.2 Algoritmos para construir a Triangulao de DelaunayQuatro tipos de algoritmos so usados para construir triangulaes de Delaunay: divisoe-conquista (GUIBAS; STOLFI, 1985), incremental (BERG, 1997), sweepline

(SHEWCHUK, 1997) e com restries (KALLMANN; BIERI; THALMANN, 2003). Os mais simples so os algoritmos de insero incremental. Em duas dimenses, existem algoritmos mais rpidos baseados em tcnicas de diviso-e-conquista e sweepline. Para se obter uma informao panormica desses e de outros algoritmos de triangulao de Delaunay bidimensionais, deve-se consultar Su (SU, 1994) e Drysdale (SU; DRYSDALE, 1995). Neste trabalho, sero discutidos apenas os algoritmos baseados em paradigmas de diviso-e-conquista, com restrio e incremental, em virtude de sua popularidade e importncia.

47

a) Diviso-e-ConquistaEm 1975, Shamos e Hoey apresentaram comunidade cientfica o primeiro algoritmo baseado em diviso-e-conquista, que requeria tempo O(n log n) para construir diagramas de Voronoi uma forma dual do diagrama de Delaunay. Mas somente em 1977, a tcnica foi pela primeira vez aplicada a problema de casco convexo por Preparata e Hong. Analogamente ao algoritmo mergesort, sua essncia dividir o problema em duas partes aproximadamente iguais, resolver cada uma delas recursivamente e criar uma soluo completa pela juno das duas meias solues. Quando a recursividade reduz o problema original em pequenos subproblemas, eles normalmente se tornam muito fceis de ser resolvidos. Esse algoritmo teoricamente importante, pois tem complexidade assintoticamente tima, mas de difcil implementao e, por essa razo, parece no ser usado com tanta freqncia quanto os outros algoritmos mais lentos. O'Rourke, por exemplo, preferiu ilustrar a implementao do algoritmo incremental em (OROURKE, 1998). O esboo do algoritmo de diviso-econquista o seguinte: 1. Os pontos so ordenados ao longo do eixo x; 2. Se houver trs ou menos pontos, a triangulao de Delaunay construda diretamente. Caso contrrio, os pontos so divididos em dois conjuntos aproximadamente iguais por uma linha perpendicular ao eixo x, o Passo 2 recursivamente aplicado para construir as triangulaes de Delaunay desses conjuntos, e os resultados so agrupados. O procedimento de combinar a triangulao dos dois subconjuntos a parte mais complicada e custosa do algoritmo. Uma exposio do algoritmo acompanhada de uma demonstrao de sua correo pode ser encontrada em (GUIBAS; STOLFI, 1985). Por brevidade, so omitidos aqui os detalhes, com a sugesto de que se consulte (GUIBAS; STOLFI, 1985). Na prtica, a tarefa compreende em tomar das duas subsolues, a da esquerda e da direita, os vrtices dos tringulos localizados prximos a uma linha imaginria perpendicular ao eixo x e refazer sobre tais vrtices a triangulao de Delaunay. Nesse processo de reconstruo, h eliminao e acrscimo de arestas (FIGUEIREDO; CARVALHO, 1991). A partir dos vrtices mais inferiores, em direo ao topo, toma-se sempre um vrtice pertencente ao conjunto da esquerda e um vrtice pertencente ao conjunto da direita. O critrio a ser atendido o que determina que existe uma triangulao de Delaunay se somente se houver trs vrtices sobre o crculo-circundante e nenhum em seu

48

interior. As arestas que satisfizerem a tal critrio so mantidas; as demais so eliminadas e substitudas por outras que atenderem ao critrio do crculo-circundante. Como exemplo, considere a triangulao de Delaunay de um conjunto de pontos, denotada por Del(C). A aplicao do algoritmo de triangulao de Delaunay por diviso-econquista resultar em duas triangulaes, denotadas por Del(C1) e Del(C2), de tamanho aproximadamente igual, localizados, respectivamente, esquerda e direita da mencionada linha vertical imaginria (Figura 2.14).C1 C2

Figura 2.14. Triangulaes de Delaunay de C1 e C2, separadas por uma linha vertical imaginria. Na Figura 2.15, mostrada a construo de Del(C1 C2), a partir de Del(C1) e Del(C2). As arestas eliminadas de Del(C1) e Del(C2) so representadas em tracejado, enquanto as arestas acrescentadas pelo algoritmo so mostradas em negrito.

Figura 2.15. Triangulao de Delaunay de C1 C2.

b) Triangulao de Delaunay Restrita ou com RestriesA triangulao de Delaunay com restries estrutura geomtrica fundamental, com aplicaes em interpolao, renderizao e em gerao de malhas, quando a triangulao requerida tiver que se ajustar forma do objeto que est sendo modelado.

49

A triangulao com restries definida como segue: Dado um conjunto C de pontos do plano e um conjunto G de segmentos com extremos em C (tais que dois elementos quaisquer de G no se interceptam a no ser em seus extremos), obter uma triangulao do fecho convexo de C, cujo conjunto de vrtices seja C e que inclua todos os segmentos em G (FIGUEIREDO; CARVALHO, 1991). A triangulao de Delaunay apresenta duas deficincias: uma que ela pode conter tringulos de qualidade pobre; a outra omitir algumas fronteiras do domnio geomtrico. A primeira deficincia motivada pelas caractersticas geomtricas do PSLG e suprida pela insero de pontos de Steiner, tambm chamada de triangulao de Steiner. A segunda deficincia provocada pela tentativa de obteno de tringulos de qualidade e reparada pela triangulao de Delaunay com restries. Na Figura 2.16 (b), mostrada uma triangulao de um PSLG (a) em que o tringulo da base de m qualidade e a linha tracejada mostra o segmento que foi omitido. Ambos os problemas podem ser solucionados pela insero de vrtices adicionais, como ilustrado na Figura 2.17. Infelizmente, isso somente aplicvel em duas dimenses.

(a) Um PSLG.

(b) Triangulao do PSLG com tringulos de qualidade pobre, ausncia de segmentos originais e presena de segmentos indevidos.

Figura 2.16. Amostra das deficincias da triangulao de Delaunay (SHEWCHUK, 1997).

Figura 2.17. Amostra da correo provida pela insero de pontos de Steiner (SHEWCHUK, 1997). Chew apresentou um algoritmo de triangulao de Delaunay com restrio, mostrando que ela tambm pode ser obtida em tempo O(n log n), usando a tcnica de diviso-econquista.

50

A triangulao com restries de um dado PSLG similar triangulao de Delaunay, exceto que nela todo segmento de entrada aparece como uma aresta da triangulao. Contudo, para preservar as caractersticas geomtricas do PSLG, mantendo todos seus segmentos, algumas arestas podem no atender propriedade da triangulao de Delaunay, violando a regra do predicado InCirle, apresentado na Seo 2.5.1. Em outras palavras, uma triangulao de Delaunay com restrio no necessariamente uma triangulao de Delaunay, como ilustrado na Figura 2.18. Notem-se as diferenas no formato dos tringulos nos dois tipos de triangulaes.

(a)

(b)

(c)

Figura 2.18. (a) Um PLSG. (b) Uma triangulao de Delaunay do PSLG. (c) Uma triangulao de Delaunay com restries do PSLG (SHEWCHUK, 1997).

c) IncrementalEm algoritmos baseados na abordagem incremental aleatria, a distribuio aleatria de pontos mais vantajosa que a no-aleatria por ser mais resistente contra distribuies precrias de pontos. O desempenho dos algoritmos incrementais sobre essas distribuies superior (SU, 1994). Comportamento similar se verifica em algoritmos de pesquisa, em que a seleo randmica oferece boa proteo contra a ocorrncia do pior caso (KNUTH, 1998). Por exemplo, uma rvore binria cujos elementos so inseridos em ordem aleatria tende a ser balanceada, ao passo que, se a insero proceder em ordem ascendente ou descendente, a rvore ter topologia assimtrica, favorecendo a ocorrncia do pior caso. No algoritmo incremental, a triangulao inicia-se com um supertringulo que envolve todos os pontos de entrada, como mostrado na Figura 2.19.

51

Figura 2.19. Supertringulo contendo pontos a serem triangulados.

Depois, o algoritmo adiciona os pontos em ordem aleatria e mantm a triangulao de Delaunay do conjunto de pontos atual. Para ilustrar, considere a adio de um ponto pr. Primeiro, encontrado o tringulo da triangulao atual que contm pr. Se acontecer de pr cair sobre uma aresta e da triangulao, tem-se de adicionar arestas de pr para os vrtices opostos nos tringulos que compartilham e. Na Figura 2.20, so ilustrados esses dois casos. Em um dado momento, tem-se uma triangulao, mas no necessariamente uma triangulao de Delaunay. Isso porque a adio de pr pode tornar algumas arestas existentes ilegais. Para reparar isso, chamado um procedimento que substitui as arestas ilegais por arestas legais atravs de movimentao de arestas. Ao final, so descartados os trs vrtices do supertringulo e todas arestas incidentes.

pr est no interior de um tringulo

pr cai sobre uma aresta

Figura 2.20. Os dois casos em que se adiciona um ponto pr (BERG, 1997).

2.5.3 Complexidade dos Algoritmos de Triangulao de DelaunayAqui, destacada a ordem de complexidade assinttica e o nvel de dificuldade de implementao dos algoritmos de triangulao de Delaunay, uma vez que explanaes detalhadas podem ser encontradas em textos de geometria computacional. Na Tabela 2.2, verifica-se que dois desses algoritmos tambm possuem complexidade O(n log n), mas em

52

experimentos

realizados

por

Shewchuk

(SHEWCHUK,

1996b),

esses

algoritmos

apresentaram desempenho bem inferior ao do algoritmo baseado em diviso-e-conquista. Tabela 2.2. Complexidade de algoritmos de triangulao. Mtodo empregado Complexidade Implementao 2 Fora bruta Trivial (n ) Incremental Trivialidade relativa (n log n) Trivialidade relativa Sweepline (n log n) Diviso-e-conquista Complexa (n log n)

2.6 Insero de Pontos de SteinerEm uma triangulao, todos os pontos de entrada so cobertos pelos vrtices dos tringulos formados pela triangulao de Delaunay; os pontos restantes ou adicionais so os pontos de Steiner. Na Figura 2.21, so contrastados os efeitos de uma triangulao com e sem pontos de Steiner.

(a)

(b)

Figura 2.21. Triangulaes: (a) sem pontos de Steiner e (b) com pontos de Steiner (BERN; EPPSTEIN, 1992). O processo de insero dos pontos de Steiner implica tanto a subdiviso de aresta, quando o ponto inserido sobre uma delas, quanto sua remoo, quando um conjunto de tringulos removido para possibilitar o surgimento de novos tringulos. Por razes tanto prticas quanto tericas, deve-se preocupar com o nmero de pontos de Steiner. O ngulo mnimo na triangulao de um conjunto de pontos pode aproximar-se de 60, mas, na prtica, o nmero de pontos de Steiner requerido para tal pode tornar o tempo de processamento proibitivo. Em malhas construdas segundo a triangulao de Delaunay, como so inseridos os pontos de Steiner? O critrio comum o estabelecimento de limite para o tamanho das arestas s, para a rea do tringulo a ou para a medida angular do tringulo. Dessa forma, enquanto

53

houver um tringulo em desconformidade com o critrio de qualidade estabelecido, seja com crculo-circundante de raio maior que s ou com rea maior que a, ou ainda com o ngulo mnimo inferior a um dado limite pr-estabelecido, o algoritmo adiciona um ponto de Steiner ao centro do crculo e recomputa a triangulao de Delaunay. Cada tringulo localizado e testado seqencialmente. O algoritmo, apresentado na Figura 2.22, escrito por Bern e Plassmann (BERN; PLASSMAN, 2000), exemplifica como so inseridos os pontos de Steiner. enquanto existir um tringulo t com ngulo menor que faa seja c o centro do crculo circunscrito de t se c est dentro do dimetro do semicrculo da aresta fronteiria e ento adicione o ponto mdio m de e seno adicione c fim_se recompute a triangulao de Delaunay fim_enquanto Figura 2.22. Algoritmo de insero de pontos de Steiner.

2.7 Localizao Planar de PontosEm algoritmos de triangulao de Delaunay incremental ou de paradigma resultante da combinao entre os paradigmas incremental e de diviso-e-conquista, a localizao planar de pontos til para determinar a que tringulo pertence cada ponto inserido na triangulao. Os requisitos mencionados obrigam a formulao de uma estrutura que suporte consultas sobre localizao de pontos.

2.7.1 Estruturas de Dados para Localizao de PontosA estrutura de dados definida deve manter a correspondente representao de algo como um PSLG, o qual deve ser pr-processado e armazenado de modo a responder s consultas sobre a regio poligonal em que se localiza um determinado ponto.

Na literatura de geometria computacional, so descritas duas estruturas: (a) subdiviso em slabs e (b) mapa trapezoidal.

54

a) Subdiviso em SlabsSeja S uma subdiviso planar com n arestas. O problema de localizao planar de pontos armazenar S de modo a que possam ser respondidas consultas do seguinte tipo: dado um ponto de consulta q, reporte a face f de S que contm q. Se q se encontra sobre uma aresta ou coincide com um ponto, o algoritmo de consulta retornar essa informao. A estrutura de dados necessria para desempenhar consultas sobre localizao de pontos muito simples. Traam-se linhas verticais atravs de todos os vrtices da subdiviso, como na Figura 2.23. Isso particiona o plano em slabs. As coordenadas x dos vrtices so armazenadas ordenadamente em um array. Isso torna possvel determinar em tempo de O(log n) a slab que contm um ponto de consulta q. No interior de uma slab, no h nenhum vrtice de S. Isso significa que a parte da subdiviso colocada sobre a slab tem uma forma especial: todas as arestas que interceptam uma slab atravessam-na completamente elas no tm nenhum ponto extremo na slab e elas no cruzam uma a outra. Isso significa que elas podem ser ordenadas de cima para baixo. Note que toda regio na slab entre duas arestas consecutivas pertencem a uma nica face de S. As regies mais inferior e mais superior da slab esto fora dos limites e so parte da face ilimitada de S. A estrutura especial das arestas interceptando uma slab implica que ela pode ser armazenada ordenadamente num array. Rotula-se cada aresta com a face de S que est imediatamente acima, dentro da slab.

Figura 2.23. Subdiviso em slabs (BERG, 1997).

55

O algoritmo de consulta completo pode ento ser descrito como se segue. Primeiro, faz-se uma busca binria com a coordenada x do ponto de consulta q no array que armazena as coordenadas x dos vrtices da subdiviso. Isso informa a slab que contm q. Ento, efetuase uma busca binria com a coordenada y de q naquela slab. A operao elementar nessa pesquisa binria : dado um segmento s e um ponto q tal que a linha vertical atravs de q intercepta s, determine se q se encontra acima de s, abaixo de s ou sobre s. Isso informa o segmento diretamente abaixo de q. O rtulo armazenado com o segmento a face de S contendo q. Se for verificado que no h nenhum segmento abaixo de q, ento q se encontra na face ilimitada. O tempo de consulta para a estrutura de dados bom: foram efetuadas somente duas pesquisas binrias, a primeira em um array de comprimento de no mximo 2n (as n arestas da subdiviso tm no mximo 2n vrtices), e a segunda em um array de comprimento mximo n (uma slab cruzada por no mximo n arestas). Portanto, o tempo de consulta O(log n). Quais so os requisitos de armazenamento? Antes de tudo, tem-se um array para conter as coordenadas x dos vrtices, que usa espao de O(n). Mas tambm se tem um array para cada slab. Esse array armazena as arestas que interceptam a slab, requerendo, assim, espao para armazenamento de O(n). Uma vez que existem O(n) slabs, a quantidade total de espao de armazenamento O(n2). O grafo da Figura 2.24 exemplifica o pior caso da diviso em slabs.

Figura 2.24. Amostra do pior caso da diviso em slabs (BERG, 1997).

b) Mapas TrapezoidaisExaminando-se novamente a Figura 2.23, pode-se perceber que os segmentos e as linhas verticais que atravessam os pontos extremos definem uma nova subdiviso, cujas faces so

56

trapezides, tringulo e faces ilimitadas semelhantes a trapezides. Essa nova subdiviso chama-se mapa trapezoidal. Para facilitar a compreenso do tema, foram feitas duas simplificaes. Primeiro, ser introduzido um grande retngulo R alinhado aos eixos das coordenadas, que contm todo o cenrio, isto , que contm todos os segmentos de S. Na verdade, a ausncia desse retngulo no um problema: um ponto de consulta localizado fora dos limites de R sempre se encontra na face ilimitada de S. O objetivo restringir a ateno ao que acontece dentro de R. A segunda simplificao mais difcil de justificar: assume-se que em cada linha vertical no h mais que um segmento com a mesma coordenada x. No Subitem b.2 seguinte, so discutidas as providncias para tratar os casos que contrariam essa assuno. A conseqncia disso que no pode haver qualquer segmento vertical. Essa assuno no realstica nem usual: arestas verticais ocorrem freqentemente em muitas aplicaes como, para exemplificar, em uma malha triangular com inmeros elementos , porque a preciso das coordenadas muitas vezes limitada. O mapa trapezoidal T(S) de S tambm conhecido como decomposio trapezoidal de S obtido por meio de duas extenses verticais partindo de cada ponto extremo p de um segmento em S, uma extenso em sentido ascendente (extenso vertical superior) e outra em sentido descendente (extenso vertical inferior). As extenses param quando encontram outro segmento de S ou a fronteira de R. O mapa trapezoidal de S simplesmente a subdiviso induzida por S, o retngulo R e as extenses verticais superior e inferior. Um exemplo de mapa trapezoidal mostrado na Figura 2.25.

Figura 2.25. Um mapa trapezoidal (BERG, 1997).

57

Uma face em T(S) limitada por um nmero de arestas de T(S). Algumas dessas arestas podem ser adjacentes ou colineares. A quantidade de lados verticais e no-verticais em cada face do trapezide estabelecida da seguinte forma: Cada face em um mapa trapezoidal de um conjunto S de segmentos de linha em posio geral tem um ou dois lados verticais e exatamente dois lados no-verticais (BERG, 1997). Observe-se ainda que f est toda limitada, o que implica que ela no tem menos que dois lados no-verticais e que deve ter ao menos um lado vertical. Finalmente, note-se que o mapa trapezoidal digno de seu nome: cada face um trapezide ou um tringulo, que pode ser visto como um trapezide com uma aresta degenerada de comprimento zero. Antes de comprovar por que a localizao de pontos em um mapa trapezoidal ser mais fcil que uma localizao de pontos em uma subdiviso em slabs, ser verificado que a complexidade do mapa trapezoidal no to maior que o nmero de segmentos no conjunto que o define. A quantidade mxima de vrtices e de trapezides medida da seguinte forma: O mapa trapezoidal T(S) de um conjunto S de n segmentos em posio geral contm no mximo 6n + 4 vrtices e no mximo 3n + 1 trapezides (BERG, 1997). O mapa trapezoidal pode ser construdo incrementalmente. Um trapezide inicial adicionado e, em seguida, todos os segmentos da subdiviso poligonal um a um em ordem randmica. medida que cada segmento adicionado, o mapa trapezoidal atualizado. Para desempenhar a atualizao, necessita-se conhecer em qual trapezide o ponto extremo esquerdo do segmento se encontra. Essa questo respondida pelo algoritmo de localizao planar de pontos. Ento, traado o segmento de linha da esquerda para a direita, determinando quais trapezides ele intercepta. Finalmente, retorna-se a esses trapezides e os fixam para cima. O processo ilustrado na Figura 2.26.

Figura 2.26. Atualizao (incremental) de mapa trapezoidal.

58

b.1) Um Algoritmo Incremental AleatrioOs algoritmos incrementais aleatrios apresentam uma alternativa atrativa para a localizao planar de pontos. Eles constroem o mapa trapezoidal T(S) de um conjunto S de n segmentos. Durante a construo do mapa trapezoidal, construda tambm a estrutura de dados D, que pode ser usada para realizar consultas de localizao de pontos em T(S). A estrutura de dados D, chamada estrutura de pesquisa ou de busca, um grafo acclico direcionado (DAG Directed Acyclic Graph) com uma nica raiz. O grafo tem dois tipos de ns: folhas e internos. Os ns do tipo folha representam cada trapezide do mapa trapezoidal de S. Seus ns internos tm grau 4 mximo igual a 2. Por esse motivo, sua estrutura semelhante estrutura de uma rvore binria. H dois tipos de ns internos: ns-x, que so rotulados com um ponto extremo de algum segmento em S, e ns-y, que so rotulados com algum segmento de S. Uma consulta com um ponto q comea na raiz e procede ao longo de um caminho direcionado rumo a uma das folhas. Essa folha corresponde ao trapezide t T(S) que contm q. Em cada n no caminho, q tem de ser t