USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da...

125
Algoritmos para uni˜ ao de c´ ırculos e pol´ ıgonos Lu´ ıs Fernando Schultz Xavier da Silveira Dissertac ¸ ˜ ao apresentada ao Instituto de Matem ´ atica e Estat ´ ıstica da Universidade de S ˜ ao Paulo para obtenc ¸ ˜ ao do t ´ ıtulo de Mestre em Ci ˆ encias Programa: Ciˆ encia da Computa¸ c˜ao Orientador: Prof a . Dr a . Cristina Gomes Fernandes Durante o desenvolvimento deste trabalho, o autor recebeu aux´ ılio financeiro do CNPq. 6 de Mar¸ co de 2016

Transcript of USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da...

Page 1: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Algoritmos para uniaode cırculos e polıgonos

Luıs Fernando Schultz Xavier da Silveira

Dissertacao apresentada aoInstituto de Matematica e Estatıstica

da Universidade de Sao Paulopara obtencao do tıtulo de

Mestre em Ciencias

Programa: Ciencia da Computacao

Orientador: Profa. Dra. Cristina Gomes Fernandes

Durante o desenvolvimento deste trabalho, o autor recebeu auxılio financeiro do CNPq.

6 de Marco de 2016

1

Page 2: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Algoritmos para uniao de cırculos epolıgonos

Esta versao da dissertacao contem as correcoes e alteracoes sugeridaspela Comissao Julgadora durante a defesa da versao original do trabalho,

realizada em 23/01/2015. Uma copia da versao original esta disponıvel noInstituto de Matematica e Estatıstica da Universidade de Sao Paulo.

Comissao Julgadora:

• Profa. Dra. Cristina Gomes Fernandes (orientadora) – IME-USP

• Prof. Dr. Jorge Stolfi – UNICAMP

• Prof. Dr. Arnaldo Mandel – IME-USP

2

Page 3: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Agradecimentos

Agradeco enormemente meus pais e minha famılia, especialmente minha avo Neuza, portodo o apoio incondicional durante toda minha vida.

Agradeco minha namorada, Helena, pelo apoio que me deu e pela paciencia que tevecomigo.

Agradeco ao professor Daniel Santana de Freitas da Universidade Federal de Santa Ca-tarina, tambem por toda a paciencia que teve em me orientar na graduacao e por nossasinteressantes discussoes.

Agradeco aos professores Jauber Cavalcante de Oliveira e Ivan Pontual Costa e Silvapor suas excelentes aulas de calculo, que eu considero as minhas primeiras reais aulas dematematica.

Agradeco aos organizadores das diversas olimpıadas de matematica e computacao, quenao so contribuıram imensamente em meu aprendizado mas tambem que, para mim,representam a ultima esperanca do ensino basico neste paıs.

Agradeco minha banca avaliadora pela leitura do trabalho e pelos comentarios que foramtecidos. Em particular, agradeco o professor Arnaldo Mandel por suas simples ideias paraas provas do lema 4 e da proposicao 25.

3

Page 4: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Resumo

Luıs Fernando Schultz Xavier da Silveira.Algoritmos para uniao de cırculos e polıgonos. 2014.Dissertacao (Mestrado) – Instituto de Matematica e Estatıstica, Universidade de SaoPaulo, 2014.

Este trabalho aborda dois problemas de geometria computacional: uniao de cırculos euniao de (varios) polıgonos. Para o problema da uniao de cırculos, os principais algoritmosda literatura sao revisados e um algoritmo simples, porem ineficiente, e introduzido. Estealgoritmo e entao adaptado para resolver o problema da uniao de polıgonos, produzindoum algoritmo que e competitivo com o estado da arte e, dependendo da aplicacao, utilizamenos armazenamento.

Palavras-chave: algoritmos, geometria computacional, cırculos, polıgonos, linha de var-redura.

4

Page 5: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Abstract

Luıs Fernando Schultz Xavier da Silveira.Algorithms for the union of circles and polygons. 2014.Dissertacao (Mestrado) – Instituto de Matematica e Estatıstica, Universidade de SaoPaulo, 2014.

This work deals with two problems from the field of computational geometry: union ofcircles and union of (many) polygons. For the union of circles problem, the main algo-rithms in the literature are revised and a simple, albeit inefficient, algorithm is introduced.This algorithm is then adapted to solve the union of polygons problem, resulting in analgorithm that is competitive with the state of the art and, depending on the application,makes use of less storage.

Keywords: algorithms, computational geometry, circles, polygons, sweep-line.

5

Page 6: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Conteudo

Introducao 7

1 Preliminares e notacao 111.1 Funcoes, conjuntos e numeros . . . . . . . . . . . . . . . . . . . . . . . . 111.2 Ordens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Analise real e geometria analıtica . . . . . . . . . . . . . . . . . . . . . . 131.4 Modelo de computacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.5 Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.6 Co-rotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 Representacoes de conjuntos 282.1 Representacoes de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 282.2 Relacoes shoelace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3 Generalizacoes das relacoes shoelace . . . . . . . . . . . . . . . . . . . . . 35

3 Uniao de cırculos 533.1 I-coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.2 Enunciado do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.3 Unioes de cırculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.4 Um algoritmo ingenuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.5 O algoritmo de Brown . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.6 O algoritmo de Imai, Iri e Murota . . . . . . . . . . . . . . . . . . . . . . 74

4 Uniao de polıgonos 804.1 Enunciado do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.2 Estado da arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.3 Unioes de polıgonos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.4 Posicao geral e cisalhamentos simbolicos . . . . . . . . . . . . . . . . . . 864.5 Ideia do algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.6 O algoritmo de Bentley e Ottmann . . . . . . . . . . . . . . . . . . . . . 1094.7 Arvores rubro-negras aumentadas . . . . . . . . . . . . . . . . . . . . . . 1104.8 O algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Bibliografia 122

Indice 124

6

Page 7: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Introducao

A area de geometria computacional e uma area unica em ciencia da computacao, pois elaliga as disciplinas aparentemente nao relacionadas de geometria (usualmente euclidiana)e combinatoria. Em geometria estudamos problemas matematicos envolvendo entidadesgeometricas, como por exemplo o problema de obter a area de um triangulo a partirdos comprimentos de seus lados, enquanto que em combinatoria estudamos problemassobre estruturas discretas (ditas estruturas combinatorias), como o problema da arvoregeradora mınima. Deste modo, nao e surpreendente que geometria computacional sejauma area cujo enfoque sao estruturas combinatorias definidas com base em propriedadesgeometricas. Por exemplo, o problema do casco convexo [4] consiste em encontrar umaestrutura combinatoria (no caso, um subconjunto de um dado conjunto de pontos) quepossui uma propriedade geometrica (“envolver” os pontos do conjunto).

Historicamente, ambas as areas trataram de algoritmos. Em geometria, os gregos enfati-zaram metodos de construcao de entidades geometricas com regua e compasso e, em com-binatoria, muitas vezes buscamos algoritmos que constroem as estruturas combinatoriasque desejamos. Em geometria computacional, no entanto, nossa nocao de algoritmo eherdada da combinatoria. Por exemplo, no problema do casco convexo, buscamos umalgoritmo que tenha como entrada um conjunto de pontos e que devolva em sua saıdanosso desejado subconjunto. Um excelente e elegante algoritmo para resolver a versaobidimensional deste problema deve-se a Andrew [4].

Os problemas que tratamos neste trabalho nao tem nenhuma relacao direta com o docasco convexo, no entanto. Estes problemas sao derivados do que chamamos de geome-tria plana construtiva, uma tecnica de composicao de figuras (conjuntos de pontos) maiscomplexas a partir de figuras mais simples. Inicialmente comecamos com figuras “primi-tivas”, como cırculos e polıgonos, e usamos operacoes booleanas sobre estas figuras paraobter novas figuras. Esta ideia e bastante presente no chamado computer aided design,onde projetistas aceleram seu trabalho com o uso do computador, usualmente munido devarios algoritmos de geometria computacional.

Claro, descrever um sistema completo de geometria plana construtiva e uma tarefa extre-mamente difıcil. Em primeiro lugar, muitos dos problemas nesta area nao tem solucoeseficientes. Porem, mais importante do que isso, devido ao fato de que computadoressao essencialmente maquinas de estados finitas ou, para os mais idealistas, maquinas deTuring, nao e possıvel representar conjuntos quaisquer de pontos do plano em computa-dores. Por isso, todo sistema de geometria plana construtiva que possui a ambicao de serimplementado precisa impor restricoes para que um problema equivalente de geometriacomputacional que admite uma solucao (idealmente eficiente) seja derivado do sistema.

No nosso caso, na verdade restringimos nosso modelo significativamente. Estamos inte-

7

Page 8: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

ressados apenas em computar unioes. Ainda, nossas figuras primitivas devem ser todascırculos ou todas polıgonos. Chegamos assim em dois problemas de geometria compu-tacional: a uniao de cırculos e a uniao de polıgonos. Curiosamente, no entanto, nao eexatamente simples definir estes problemas rigorosamente e um dos impedimentos e comorepresentamos computacionalmente uma uniao de cırculos ou uma uniao de polıgonos.Tudo isso sera tratado com o devido rigor adiante. Porem, para motivar um pouco maiso leitor, adiantamos que sera possıvel calcular a area ou o centro de massa destas unioesfacilmente.

Escolhemos estes dois problemas porque suas solucoes elucidam varias tecnicas impor-tantes em algoritmos de geometria computacional relacionados a este topico, entre elesa representacao computacional de (alguns) conjuntos de pontos, diagramas de Voronoi eoutros diagramas relacionados e tambem, e claro, linhas de varredura.

O problema da uniao de cırculos e extremamente bem estudado na literatura. Muitosdos trabalhos estao preocupados, como nos, em produzir a “borda” da uniao, enquantooutros tratam apenas da obtencao de certas propriedades da uniao, como area e centro demassa. Adiante, iremos mostrar que um algoritmo que consegue computar a “borda” dauniao em um certo formato imediatamente produz algoritmos similarmente eficientes paracomputar a area e o centro de massa. Tendo isto em mente, apresentamos um resumoem ordem cronologica dos principais trabalhos da literatura de geometria computacionalque lidam com este topico:

• Em 1978, Shamos defende sua tese de doutorado [21], trabalho considerado pormuitos o marco inicial da area de geometria computacional. Nela e enunciando oproblema de computar a area da uniao de varios cırculos;

• Em 1980, Brown defende tambem sua tese de doutorado [11]. Ele mostra comodiversos problemas de geometria computacional podem ser reduzidos a outros pro-blemas atraves de transformacoes geometricas. Em particular, ele mostra comotransformar uma instancia do problema da uniao de cırculos em um programa linearem tres dimensoes onde ha uma restricao para cada cırculo. Ele tambem mostracomo programas lineares gerais em tres dimensoes com n restricoes podem ser resol-vidos em tempo O(n log n) e espaco O(n). Ainda nesta tese, Brown demonstra quee impossıvel produzir um algoritmo para calcular a “borda” da uniao de n cırculoscomo um conjunto de curvas fechadas que seja mais rapido do que O(n log n). Atehoje nao ha um algoritmo (determinıstico) para computar a uniao (ou mesmo a areada uniao) mais rapido do que seu algoritmo e tambem foi provado que em modeloscomputacionais mais simples Ω(n log n) e de fato um limite inferior para o problema.Desta forma, em apenas 2 anos, ele essencialmente resolve o problema proposto porShamos, apresentando o primeiro algoritmo O(n log n) para o problema, que serabrevemente abordado na secao 3.5;

• Em 1983, Spirakis [25] publica um algoritmo simples que calcula a uniao de ncırculos em tempo O(n2) e espaco O(n). Porem, mais importante do que isto, seutrabalho mostra algoritmos probabilısticos que, em particular, aproximam bem aarea da uniao de n cırculos em tempo e espaco O(n), mas que nao conseguem obtera “borda” da uniao;

• Em seu artigo publicado em 1985 [23], Sharir utiliza uma complicada estruturacombinatoria para produzir um algoritmo que calcula a uniao de n cırculos em

8

Page 9: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

tempo O(n log2 n) e espaco O(n);

• No mesmo ano, Imai, Iri e Murota publicam um artigo [19] que mostra como utilizaruma estrutura combinatoria (um pouco) mais simples que a usada por Sharir eessencialmente a mesma ideia de algoritmo para produzir um algoritmo capaz deunir n cırculos em tempo O(n log n) e espaco O(n). Este algoritmo e extremamenteelegante e merece seu lugar na secao 3.6 deste trabalho; e

• Em 1988, Aurenhammer [5] publica um survey sobre algoritmos para computara uniao de cırculos e mostra seus proprios algoritmos para bolas em dimensoesmaiores. Observamos, no entanto, que este artigo diz em sua secao 5 que o algoritmode Sharir [23] era o unico algoritmo determinıstico eficiente para computar a areada uniao de cırculos, o que e minimamente curioso dado que ele cita ambos osalgoritmos de Brown [11] e de Imai, Iri e Murota [19] em sua secao 2.

Observamos ao leitor que as complexidades destes algoritmos nao necessariamente repre-sentam suas complexidades reais, mas suas complexidades algebricas, como definiremosna secao 1.5. Porem, estas complexidades sao apropriadas para comparar estes algoritmosentre si.

Ja o problema da uniao de polıgonos foi, para nos, extremamente difıcil de localizar naliteratura. Claro, a literatura esta repleta de bons algoritmos para unir dois polıgonos,como os algoritmos apresentados em [20, secao 7.8] e [14, secao 2.4]. Porem, como a uniaode dois polıgonos nao necessariamente e um polıgono, a tecnica de divisao e conquistanao se aplica imediatamente para produzir um algoritmo capaz de unir uma quantidadearbitraria de polıgonos.

Na verdade, embora a tecnica de divisao e conquista nao se aplique imediatamente, se ge-neralizarmos o problema um pouco, ela pode se aplicar. Existe o conceito de polıgonos deNef [10], que essencialmente sao o resultado de operacoes booleanas sobre semiplanos (umoutro tipo de sistema de geometria plana construtiva). Polıgonos podem ser decompostosem triangulos, ou seja, triangulados. Cada triangulo e uma interseccao de tres semiplanose logo um polıgono de Nef, e assim cada polıgono, sendo a uniao de triangulos, tambem eum polıgono de Nef. Triangulacoes de polıgonos podem ser computadas eficientemente,um algoritmo otimo devendo-se a Chazelle [12]. Ainda, a biblioteca CGAL [1] possuiimplementacoes de operacoes booleanas binarias eficientes sobre polıgonos de Nef. Agrande diferenca, como o leitor pode ja ter percebido, e que a uniao de dois polıgonos deNef e sempre um polıgono de Nef, de forma que a ideia de divisao e conquista se aplicaimediatamente. Embora nao seja imediatamente claro quais complexidades este tipo dealgoritmo pode atingir, na secao 4.2 fazemos uma estimativa para fins de comparacaocom o algoritmo apresentado neste trabalho.

Observamos tambem que ambas as bibliotecas CGAL [1] e LEDA [3] possuem imple-mentacoes de algoritmos para unir um numero arbitrario de polıgonos. Ambas resolvemeste problema generalizando o conceito de polıgono para o que a biblioteca CGAL chamade polıgonos com buracos (polygon with holes sendo o termo usado). A biblioteca CGALentra um pouco nos detalhes de implementacao em sua documentacao, mas nao esta-belece as complexidades destes algoritmos. Novamente estimamos as complexidades dosalgoritmos desta biblioteca e as comparamos com a de nosso algoritmo na secao 4.2.

Finalmente, o trabalho de Berberich et al [8] apresenta uma tecnica extremamente ge-

9

Page 10: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

ral baseada em computacao algebrica e algoritmos de linha de varredura para realizaroperacoes booleanas (regularizadas) sobre uma generalizacao de polıgonos onde as ares-tas podem ser arcos de conicas. Certamente, este trabalho trata de um problema muitomais geral do que os abordados aqui. Ele faz uso de varias tecnicas de computacaoalgebrica que estudamos durante o mestrado. Contudo, nao ficou claro se o algoritmonele apresentado, quando especializado para operar apenas em polıgonos comuns, ofereceuma performance superior ou igual a do nosso algoritmo.

O restante deste trabalho esta organizado da seguinte forma:

• O capıtulo 1 trata de todos os conceitos introdutorios que um leitor nao familiar comanalise real, geometria analıtica, geometria computacional e alguns outros topicosprecisa conhecer para entender completamente este trabalho;

• O capıtulo 2 trata de diversas propriedades de conjuntos e suas fronteiras, alemde definir representacoes computacionais para certos tipos de conjunto. Ainda,ele mostra como algumas propriedades destes conjuntos (area e centro de massa)podem ser obtidas a partir desta representacao;

• O capıtulo 3 mostra o nosso primeiro algoritmo para o problema de encontrar auniao de cırculos e tambem os algoritmos otimos de Brown e de Imai, Iri e Murotausando o framework desenvolvido nos capıtulos anteriores; e

• O capıtulo 4 mostra um algoritmo de linha de varredura (sweep-line) eficiente pararesolver o problema da uniao de (possivelmente muitos) polıgonos derivado da me-lhoria em que originalmente havıamos pensado para nosso algoritmo para o pro-blema com cırculos.

10

Page 11: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Capıtulo 1

Preliminares e notacao

Neste capıtulo convencionamos parte da notacao que usaremos neste trabalho. Tambemlembraremos o leitor de alguns resultados importantes que sao pre-requisitos para ele.

1.1 Funcoes, conjuntos e numeros

Usamos duas notacoes semelhantes para categorizar e definir funcoes. Por exemplo,para categorizar uma funcao, escrevemos uma expressao da forma “seja f : A→ B umafuncao” indicam que f e uma funcao cujo domınio, denotado por Dom(f), e o conjunto Ae cujo contradomınio e o conjunto B.

Por outro lado, para definir uma funcao escrevemos algo como “seja

s : N → N

n 7→ n+ 1

a funcao sucessor em N”. Esta notacao e similar a anterior. A parte “s : N→ N”indica que s e uma funcao de N em N. O sımbolo a esquerda de “7→” e o nome deuma variavel, que e a unica variavel livre na expressao a direita de “7→”. Para definiro comportamento da funcao s em um valor (numero natural), substitua a variavel pelovalor e avalie a expressao. Porem, em alguns casos iremos usar varias variaveis a esquerda,principalmente quando o domınio e um produto cartesiano, e assim a expressao a direitadeve ter exatamente estas variaveis como variaveis livres. Ilustramos isto definindo arotacao por 90 graus do plano como a funcao

ρπ2

: R2 → R2

(x, y) 7→ (−y, x).

Em varios momentos neste trabalho faremos uso de reticencias, principalmente para de-finir conjuntos. Por exemplo, escrevemos a, a + 1, . . . , b, onde a, b ∈ Z, para deno-tar o conjunto x ∈ Z : a ≤ x ≤ b. Porem, e importante notar que nem semprevale que a ∈ a, a+ 1, . . . , b, pois podemos ter b < a. Isto e especialmente importantequando escrevemos o conjunto 0, 1, . . . , n− 1 com n ∈ N quando n = 0.

Mostramos agora algumas notacoes que podem ser definidas mais formalmente.

11

Page 12: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 1 — Seja f : A→ B uma funcao de um conjunto A em um conjunto Be seja X ⊆ A um subconjunto de A. Denotamos entao o conjunto f(x) : x ∈ X,dito a imagem de X por f , por f(X).

Definicao 2 — Seja f : A→ B uma funcao de um conjunto A em um con-junto B. Dizemos entao que a imagem de f e o conjunto Im(f) = f(A) ⊆ B.

Definicao 3 — Seja f : A→ B uma funcao de um conjunto A em um con-junto B e seja Y ⊆ B um subconjunto de B. Denotamos entao o con-junto x ∈ A : f(x) ∈ Y , dito a imagem inversa de Y por f , por f−1(Y ).

Definicao 4 — O sinal de um numero real x ∈ R e

signx =

−1, x < 0

0, x = 0

1, x > 0.

1.2 Ordens

Neste trabalho, fazemos alguns usos do conceito de ordens parciais.

Definicao 5 — Uma ordem parcial sobre um conjunto S e uma relacaobinaria <⊆ S × S que satisfaz duas propriedades:

• Irreflexividade: para todo elemento a ∈ S, jamais vale que a < a; e

• Transitividade: para todos os elementos a, b, c ∈ S, se a < b e b < c,entao a < c.

E comum o uso do sımbolo “>” para denotar a relacao transposta da relacao <. As-sim, “a > b” significa b < a e “>” por si so significa

(b, a) : (a, b) ∈ <

.

Ha uma propriedade tao comum de ordens parciais que usualmente ela e incluıda napropria definicao.

Proposicao 1 — Seja < uma ordem parcial sobre um conjunto S. Entao, paratodos os elementos a, b ∈ S, jamais vale simultaneamente que a < b e b < a.

Prova — Se a < b e b < a, entao, pela transitividade, a < a, o que e uma contradicaodevido a irreflexividade de <.

Uma ideia muito importante quando trabalhamos com ordens parciais e a nocao de com-parabilidade e incomparabilidade.

12

Page 13: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 6 — Seja < uma ordem parcial sobre um conjunto S. Dizemos entaoque dois elementos a, b ∈ S sao comparaveis por < se a < b ou se b < a.

Definicao 7 — Seja < uma ordem parcial sobre um conjunto S. Dizemos entao

que a relacao de incomparabilidade de < e a relacao binaria<∼⊆ S × S

definida por a<∼ b se, e somente se, a e b nao sao elementos comparaveis por <.

Imaginamos que o leitor ja esteja familiarizado com a definicao a seguir.

Definicao 8 — Uma ordem total sobre um conjunto S e uma ordem parcial <sobre S tal que todos os elementos de S sao dois a dois comparaveis por <.

Apresentamos entao o conceito de uma ordem estrita fraca, que vagamente correspondeao conceito de que tipo de objeto matematico um procedimento de comparacao passadoa uma rotina de ordenacao em uma linguagem de programacao deve implementar.

Definicao 9 — Dizemos que uma ordem parcial < sobre um conjunto S e uma

ordem estrita fraca se a relacao<∼ de incomparabilidade de < e transitiva, ou

seja, se, para todos os elementos a, b, c ∈ S tais que a<∼ b e b

<∼ c, sempre vale

que a<∼ c.

Uma consequencia desta definicao e a seguinte.

Proposicao 2 — A relacao de incomparabilidade de toda ordem estrita fraca euma relacao de equivalencia.

1.3 Analise real e geometria analıtica

A seguir mostramos varias definicoes de analise real em varias e duas dimensoes que seraousados no decorrer deste trabalho. Quando a mencao de um resultado destas areas valera pena, o resultado correspondente sera tambem enunciado.

Definicao 10 — Dados uma dimensao d ∈ N, um ponto x ∈ Rd e um raio ε ∈ Rcom ε > 0, dizemos que a bola aberta de centro x e raio ε e o conjunto

Bε(x) =y ∈ Rd : ||y − x|| < ε

.

Definicao 11 — O interior de um conjunto X ⊆ Rd (onde d ∈ N e umadimensao) e o conjunto

X =x ∈ X : ∃ε ∈ R, ε > 0 : Bε(x) ⊆ X

.

13

Page 14: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 12 — A fronteira de um conjunto X ⊆ Rd (onde d ∈ N e umadimensao) e o conjunto

∂X = Rd \(X ∪

(Rd \X

)).

Proposicao 3 — Seja d ∈ N uma dimensao, seja X ⊆ Rd um conjunto aberto eseja f : X → Rd uma funcao contınua. Entao, para todo conjunto aberto Y ⊆ Rd,a imagem inversa f−1(Y ) ⊆ X e tambem um conjunto aberto.

Proposicao 4 — Seja d ∈ N uma dimensao, seja Ω ⊆ Rd um conjunto aberto,seja f : Ω→ Rd uma funcao contınua e seja X ⊆ Ω um subconjunto de Ω.Entao f(∂X ∩ Ω) ⊆ ∂f(X).

Corolario 1 — Seja d ∈ N uma dimensao, sejam Ω0,Ω1 ⊆ Rd conjuntos abertos,seja f : Ω0 → Ω1 uma funcao bijetiva contınua cuja inversa f−1 e contınua eseja X ⊆ Ω0 um subconjunto de Ω0. Entao f(∂X ∩ Ω0) = ∂f(X) ∩ Ω1.

Definicao 13 — Um conjunto X ⊆ Rd (onde d ∈ N e uma dimensao) e ditolimitado se existe algum ε ∈ R com ε > 0 tal que X ⊆ Bε(0) (0 sendo a origem).

Definicao 14 — Um conjunto X ⊆ Rd (onde d ∈ N e uma dimensao) e ditoconexo se nao existirem dois conjuntos A,B ⊆ Rd abertos, disjuntos, que inter-sectam X e tais que X ⊆ A ∪B.

Lema 1 — Se C e uma famılia de conjuntos conexos cuja interseccao e nao-vazia,entao a uniao dos conjuntos em C e conexa.

Corolario 2 — Se d ∈ N e uma dimensao, X ⊆ Rd e x ∈ X, a uniao de todos ossubconjuntos de X que sao conexos e contem x e em si um subconjunto conexode X que contem x.

Definicao 15 — Se d ∈ N e uma dimensao, X ⊆ Rd, x ∈ X, entao dizemos quea componente conexa de x em X e a uniao de todos os subconjuntos conexosde X que contem x.

Definicao 16 — O conjunto das componentes conexas de um con-junto X ⊆ Rd (onde d ∈ N e uma dimensao) e o conjunto de todas as com-ponentes conexas de cada elemento x ∈ X em X.

14

Page 15: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 17 — Seja d ∈ N uma dimensao e sejaX ⊆ Rd um conjunto. Dizemosentao que a funcao caracterıstica de X e a funcao χX : Rd → 0, 1 tal que,para todo x ∈ Rd, χX(x) 6= 0 se, e somente se, x ∈ X.

Definicao 18 — Seja X ⊆ R2 um conjunto. Se, para todo ε ∈ R com ε > 0,existirem listas x0x1 · · ·xn−1 de pontos em R2 e ε0ε1 · · · εn−1 de numeros reaispositivos tais que

X ⊆n−1⋃k=0

Bεk(xk) en−1∑k=0

ε2k < ε,

dizemos que o conjunto X possui medida de Jordan nula e que ele e J-desprezıvel .

Definicao 19 — Um conjunto X ⊆ R2 e dito Jordan mensuravel , ou sim-plesmente J-mensuravel , se X for limitado e ∂X for J-desprezıvel.

Definicao 20 — Seja X ⊆ R2 um conjunto J-mensuravel. Dizemos entao que aarea de X e o valor

areaX =

∫X

1 dp.

Definicao 21 — Seja X ⊆ R2 um conjunto J-mensuravel tal que areaX > 0.Dizemos entao que o centro de massa ou centroide de X e o ponto

centroidX =

∫X

p dp

areaX.

Agora apresentamos quais definicoes e resultados de geometria analıtica serao usadosneste trabalho.

Definicao 22 — Uma funcao γ : [0, 1]→ R2 contınua e dita uma curva .

Definicao 23 — A curva reversa de uma curva γ e a curva

rev γ : [0, 1] → R2

t 7→ γ(1− t).

15

Page 16: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 24 — Sejam γ0, γ1, . . . , γn−1 curvas tais que n 6= 0 e γi−1(1) = γi(0)para todo i ∈ N tal que 0 < i < n. Dizemos entao que a concatenacaode γ0, γ1, . . . , γn−1 e a curva γ : [0, 1]→ R2 dada por

γ(i+ t

n

)= γi(t)

para todo t ∈ [0, 1] e i ∈ N com 0 ≤ i < n. Ainda, denotamos a curva γpor γ0γ1 · · · γn−1 ou por

n−1∏i=0

γi.

Teorema 1 (do valor intermediario para curvas) — Seja A ⊆ R2 um conjuntoaberto e seja γ : [0, 1]→ R2 uma curva tal que γ(0) ∈ A e γ(1) 6∈ A. Entao existeum valor real a ∈ [0, 1] tal que γ(a) ∈ ∂A.

Definicao 25 — Sejam u, v ∈ R2 dois pontos no plano tais que u 6= v. Entao acurva

γ : [0, 1] → R2

t 7→ (1− t)u+ tv

e dita a parametrizacao canonica do segmento orientado −→uv e sera denotadapor uv.

Definicao 26 — Um cırculo C e um subconjunto de R2 da forma

p ∈ R2 : ||p− c|| ≤ r,

onde c = (cx, cy) ∈ R2 e um ponto, dito o centro de C, e r e um numero realpositivo, dito o raio de C. Ainda, a curva

C : [0, 1] → R2

t 7→ (cx + r cos 2πt, cy + r sin 2πt)

e dita a parametrizacao canonica de C.

16

Page 17: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 27 — Seja C um cırculo e sejam p, q ∈ ∂C dois pontos em suafronteira. Considere entao a extensao periodica γ : R→ R2 de C e os doisunicos argumentos t0, t1 ∈ R tais que 0 ≤ t0 < 1, t0 ≤ t1 < t0 + 1, γ(t0) = pe γ(t1) = q. Dizemos que o arco de circunferencia α entre p e q sobre C e aimagem arc(C, p, q) da curva

γ′ : [0, 1] → R2

t 7→ γ((1− t)t0 + tt1

).

Tambem dizemos que a parametrizacao canonica deste arco e a curva α = γ′.

Definicao 28 — Um arco de circunferencia orientado e um par α = (β, σ)onde β = arc(C, p, q) e um arco de circunferencia, sendo C um cırculo e p, q ∈ ∂C,e σ ∈ −1, 1 e um sinal. O arco orientado α esta em sentido anti-horariose σ > 0 e em sentido horario se σ < 0. Denotaremos α por −→arc(C, p, q) se eleestiver em sentido anti-horario e por←−arc(C, p, q) se ele estiver em sentido horario.Diremos tambem que a parametrizacao canonica de α e

α =

β, σ > 0

rev β, σ < 0.

Finalmente, denotaremos o arco de circunferencia orientado (β,−σ) por revα.

Definicao 29 — Uma curva γ : [0, 1]→ R2 tal que γ(0) = γ(1) e cuja res-tricao γ|[0,1) ao intervalo semiaberto [0, 1) e injetiva e dita uma curva de Jor-dan .

Teorema 2 (da curva de Jordan) — Se γ e uma curva de Jordan, entao oconjunto R2 \ Im(γ) possui exatamente duas componentes conexas, uma limitadae a outra nao.

Prova — Esta demonstracao e surpreendentemente nao trivial e pode ser encontradaem [9].

Definicao 30 — Seja γ uma curva de Jordan. Iremos chamar a componenteconexa limitada de R2 \ Im(γ) de o interior de γ e, com um certo abuso denotacao, denotaremos este interior por γ.

Definicao 31 — Sejam u = (ux, uy) e v = (vx, vy) dois vetores em R2. Oproduto cruzado de u e v e o numero real

u× v = uxvy − uyvx = det

[ux vxuy vy

].

17

Page 18: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 32 — Uma curva poligonal e uma concatenacao de parametrizacoescanonicas de segmentos de reta.

Definicao 33 — Seja γ : [0, 1]→ R2 uma curva de Jordan poligonal eseja δ : R→ R2 sua extensao periodica. Considere o ponto p com maior abs-cissa dentre os pontos de menor ordenada de Im(γ) e seja t o unico valor em [0, 1)tal que γ(t) = p. Se existe ε ∈ R com ε > 0 tal que para todos os valores u, v ∈ Rcom t− ε < u < t < v < t+ ε vale que

(δ(v)−p

)×(δ(u)−p

)> 0, entao dizemos

que γ esta em sentido anti-horario.

Definicao 34 — Um polıgono e um subconjunto de R2 que pode ser expressona forma Im(γ) ∪ γ para alguma curva de Jordan poligonal γ.

Definicao 35 — Seja γ uma curva de Jordan poligonal e seja P = Im(γ) ∪ γum polıgono. Entao, sendo δ : R→ R2 a extensao periodica de γ, definimoso conjunto de vertices de P , denotado por V (P ), como a imagem por δ dasabscissas em que δ nao e diferenciavel.

Definicao 36 — Seja γ uma curva de Jordan poligonal em sentido anti-horariocom extensao periodica δ : R→ R2 e seja P = Im(γ) ∪ γ um polıgono. Sejaainda L = v0v1 . . . vn−1 uma lista de todos os vertices do polıgono P e t o unicovalor em [0, 1) tal que γ(t) = v0. Dizemos entao que a lista L esta em sentidoanti-horario se, para todos os numeros naturais i, j ∈ N com i < j < n, valeque δ|−1

[t,t+1)(vi) < δ|−1[t,t+1)(vj).

Definicao 37 — Seja P um polıgono e L = v0v1 . . . vn−1 uma lista dos verticesde P em sentido anti-horario. Definindo vn = v0, dizemos que o conjunto dasarestas de P e o conjunto de segmentos orientados

E(P ) =−−−→vivi+1 : i ∈ 0, 1, . . . , n− 1

.

Definicao 38 — Seja P um polıgono e seja L = v0v1 . . . vn−1 a unica lista dosvertices de P em sentido anti-horario em que o vertice v0 e o vertice de maiorabscissa dentre todos os vertices de P com menor ordenada. Definindo vn = v0,dizemos que a parametrizacao canonica de P e a curva

P =n−1∏i=0

˜vivi+1.

18

Page 19: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

1.4 Modelo de computacao

Nesta secao tratamos de um assunto pouco relacionado ao restante deste trabalho, poremimportante: o modelo de computacao adotado.

Ao analisarmos qualquer algoritmo, devemos sempre estabelecer um modelo de com-putacao. Por exemplo, podemos assumir que o computador que ira executar um algo-ritmo e uma maquina de Turing [24, secao 3.1]. Porem, isto nao e muito realista. De fato,algoritmos comuns de ordenacao podem requerer um numero pelo menos quadratico deoperacoes em uma maquina de Turing para concluir devido a necessidade de “ir e voltar”na fita.

Ha outros modelos de computacao, como o calculo λ. Dentre estes, ha varios modelos querepresentam como a computacao e feita no mundo real com bastante precisao. Algunsdestes modelos sao extensoes do calculo λ, enquanto que outros sao (tais como a maquinade Turing) extensoes de automatos finitos.

A escolha de modelo computacional que fizemos foi o RAM (random access machine) comcustos logarıtmicos, que descrevemos a seguir. Esta escolha foi motivada pela abundancialiteraria de tratados sobre este modelo, um dos quais esta em [18, secao 5.1]. A descricaoque oferecemos aqui nao e a mesma que esta nesta referencia, mas e basicamente equiva-lente a ela.

Em primeiro lugar, um computador no modelo RAM com custos logarıtmicos nao podeser programado: ele sempre executa o mesmo “programa” em todas as entradas, de formaque a solucao de problemas diferentes em princıpio requer a construcao de computadoresdiferentes, bem como e o caso com maquinas de Turing. Existe, e claro, o conceitode maquinas de Turing universais [24, secao 4.2], mas, de certa forma, uma maquinade Turing universal tambem executa sempre o mesmo “programa” (o interpretador) emtodas as suas entradas.

Cada um destes computadores e constituıdo de algumas partes. A primeira delas e obanco de registradores, uma colecao finita R = r0, r1, . . . , rn−1 de dispositivos, ditosregistradores, capazes de armazenar um unico numero inteiro, inicialmente o numero 0.A segunda parte e a chamada unidade logica e aritmetica ou ALU (arithmetic logicunit). A funcao desta unidade e repetidamente, quando invocada, acessar registradoresno banco de registradores, realizar uma operacao logica ou aritmetica nos valores destesregistradores e depositar o resultado em outro registrador.

Seguem as operacoes que podem ser realizadas pela ALU. Cada uma delas e parametri-zada sobre uma lista de ındices de registradores, nao necessariamente distintos. Ainda,cada operacao acessa primeiro todos os registradores que tem de acessar antes de depo-sitar valores nos registradores:

• clear (i): deposita o valor 0 no registrador ri;

• inc (i): obtem o valor a do registrador ri e deposita o valor a+ 1 no registrador ri;

• add (i, j, k): obtem o valor a do registrador rj e o valor b do registrador rk e depositano registrador ri o valor a+ b;

• sub (i, j, k): obtem o valor a do registrador rj e o valor b do registrador rk e depositano registrador ri o valor a− b;

19

Page 20: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• and (i, j, k): obtem o valor absoluto

a =∞∑d=0

ad2d ∈ N

do valor do registrador rj (com ad ∈ 0, 1 para todo d ∈ N) e o valor absoluto

b =∞∑d=0

bd2d ∈ N

do valor do registrador rk (com bd ∈ 0, 1 para todo d ∈ N) e deposita no regis-trador ri o valor

∞∑d=0

adbd2d;

• or (i, j, k): obtem o valor absoluto

a =∞∑d=0

ad2d ∈ N

do valor do registrador rj (com ad ∈ 0, 1 para todo d ∈ N) e o valor absoluto

b =∞∑d=0

bd2d ∈ N

do valor do registrador rk (com bd ∈ 0, 1 para todo d ∈ N) e deposita no regis-trador ri o valor

∞∑d=0

(1− (1− ad)(1− bd)

)2d;

• lshift (i, j, k): obtem o valor a do registrador rj, o valor absoluto b do valor doregistrador rk e deposita no registrador ri o valor 2ba;

• popcount (i, j): obtem o valor absoluto

a =∞∑d=0

ad2d ∈ N

do valor do registrador rj (com ad ∈ 0, 1 para todo d ∈ N) e deposita no regis-trador ri o numero de ındices d ∈ N tais que ad 6= 0, ou seja, o valor

∞∑d=0

ad; e

• bits (i, j, k, l): obtem o valor a do registrador rj, o valor b do registrador rk e ovalor c do registrador rl e deposita no registrador ri o valor⌊

|c|2|a|

⌋mod 2|b|.

20

Page 21: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Esta ultima instrucao bits e tal que se

|c| =∞∑d=0

cd2d ∈ N

com cd ∈ 0, 1 para todo d ∈ N, entao ela coloca o valor

|b|−1∑d=0

c|a|+d2d

no registrador ri. Em outras palavras, ela deposita em ri os bits de ındices entre |a| (in-clusive) e |a|+ |b| (exclusive) do valor |c|.

Cabe ressaltar que com estas operacoes e possıvel replicar as demais operacoes em umconjunto de instrucoes usual, como a operacao de “ou exclusivo” bit a bit. As operacoesde multiplicacao de inteiros e de divisao inteira (com quociente e resto) serao abordadasmais adiante, no entanto.

Uma outra parte do computador e a memoria, que consiste em um vetor infinito decelulas m0,m1, . . . . Cada uma destas celulas e capaz de armazenar um numero inteiro,e todas elas comecam armazenando o numero 0. A memoria tem acesso ao banco deregistradores e e capaz de, quando invocada, realizar duas operacoes:

• load (i, j): obtem o valor a do registrador rj e deposita no registrador ri o valorarmazenado na celula de memoria m|a|; e

• store (i, j): obtem o valor a do registrador rj e deposita na celula de memoria m|a|o valor do registrador ri.

Finalmente, a ultima e mais interessante parte do computador e sua unidade de processa-mento central ou CPU (central processing unit). Em nosso modelo, representamos a CPUcomo um automato finito [24, secao 1.1] C = (Q,Σ, δ, q0, F ), onde Q e seu conjunto deestados, Σ = −1, 0, 1 e o alfabeto sobre o qual o automato trabalha, δ : Q× Σ→ Q esua funcao de transicao, q0 ∈ Q e seu estado inicial e F ⊆ Q e seu conjunto de estadosfinais.

E dentro deste automato que reside o “programa” que executa neste computador. Inclu-sive, um compilador para este modelo recebe como entrada o codigo fonte do programaem linguagem de alto nıvel e produz como saıda um automato finito. O que falta, noentanto, e “conectar” este automato ao resto de nossa maquina.

Para isso, para cada operacao

o ∈ clear, inc, add, sub, and, or, lshift, popcount, bits, load, store

de aridade (numero de parametros) d ∈ N e para cada d-upla de ındices de registrado-res I = (i0, i1, . . . , id−1) com ij ∈ 0, 1, . . . , n− 1 para todo j ∈ 0, 1, . . . , d− 1, associ-amos um subconjunto E(o, I) ⊆ Q dos estados do automato denominado o conjunto deemissao da operacao o com parametros i0, i1, . . . , id−1.

Todos estes conjuntos de emissao E(o, I) devem ser dois a dois disjuntos. A razao dissoe que, em nosso modelo, toda vez que a CPU C entra em um estado em um conjuntode emissao (incluindo a “entrada” em q0 antes de qualquer caractere do alfabeto ser

21

Page 22: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

processado), a operacao correspondente e executada com os parametros correspondentes.Assim, desejamos que apenas uma operacao seja executada por vez. Um bom motivopara isso e o nosso modelo de transferencia do resultado de uma operacao para a CPU:o proximo caractere que o automato ira processar e o sinal (−1, 0 ou 1) do resultado daoperacao. No caso da operacao clear, este sinal e considerado como sendo 0 e, no casoda operacao store, este sinal e o sinal do valor armazenado na memoria.

O funcionamento do automato se resume entao a emitir operacoes, processar o carac-tere (sinal) correspondente a seus resultados atraves da funcao de transicao, o que resultaem mudancas de estado. Isto e feito ate, claro, o automato atingir um estado que naocorresponde a emissao de nenhuma operacao (podendo nenhuma operacao ser emitidacaso q0 seja um destes estados). Se o estado em que o automato termina for um elementode F , a computacao aceita e, caso contrario, rejeita.

Falta ainda mostrar como podemos alimentar um tal computador com uma entrada ecomo obter dele uma saıda. Convencionamos que uma entrada neste modelo e umalista de numeros inteiros. Para passar uma entrada a0a1 · · · aM−1 para o computador,devemos escrever nas celulas de memoria m0,m1, . . . ,mM os valores M,a0, a1, . . . , aM−1

antes do programa comecar. Se o problema que estamos tentando resolver for de decisao,a aceitacao ou rejeicao da CPU e suficiente. Porem, se quisermos colocar na saıda umalista de inteiros b0b1 · · · bN−1, entao, de modo similar a entrada, devemos deixar nas celulasde memoria m0,m1, . . . ,mN os valores N, b0, b1, . . . , bN−1 ao termino da computacao.

Com isto a descricao do modelo esta quase concluıda, restando estabelecer os custos dasoperacoes. Os custos que assinalamos as operacoes tem como proposito refletir o custoda operacao em um modelo de computacao realista. Por isso, os custos sao diretamenteproporcionais ao numero de bits que a operacao em questao manipula, ao menos assin-toticamente. Mais precisamente, temos os seguintes custos em termos da notacao usadana definicao das operacoes, onde D(a) = dlog2(|a|+ 1)e e o numero de dıgitos binariosna representacao do inteiro |a|:

Operacao Custoclear 1

add D(a) +D(b)sub D(a) +D(b)and D(a) +D(b)or D(a) +D(b)

lshift D(a) + |b|popcount D(a)

bits D(a) +D(b) + |b|load D(a) +D(m|a|)store D(a) +D(ri)

Note que o custo da operacao bits nao envolve o valor c, mas apenas os ındices dos bitsque queremos extrair (a e b) e quantos bits sao extraıdos (b). Ainda, ha um (muito leve)abuso de notacao quando escrevemos D(m|a|) e D(ri).

Este modelo tem custos excepcionalmente realistas, e justamente por este motivo nao in-cluımos as instrucoes de multiplicacao e divisao inteira nele. Ao contrario das operacoesque incluımos, como soma e subtracao, nao se conhece um algoritmo linear no numerode bits para multiplicar e dividir. Por isso deixamos estas operacoes a serem implemen-

22

Page 23: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

tadas pelos usuarios do modelo (ou pelo compilador anteriormente descrito). Na ver-dade, se voce implementar os algoritmos quadraticos ingenuos, nenhum resultado nestetrabalho e comprometido. Estes, no entanto, estao longe de ser os melhores algorit-mos. Direcionamos o leitor interessado a explorar a implementacao (e a documentacao)da biblioteca GMP [2]. La, a multiplicacao de inteiros e implementada com um al-goritmo O(n log n log log n) (onde n e o maior numero de bits nos operandos) baseadona number theoretic transform, uma aplicacao extremamente interessante e profunda datransformada discreta de Fourier. Nos (os autores) nao sabemos em detalhes como efeita a divisao inteira nesta biblioteca, mas sabemos que seu custo e o da multiplicacaomultiplicado por um fator polinomial em log2 n.

Isto define o custo em termos de tempo que uma execucao no modelo possui. Restadefinir o espaco utilizado por tal execucao. Para isso seja U ∈ N o menor numero na-tural maior do que M (o tamanho da entrada) tal que todos os ındices de memoriautilizados na operacao store sejam menores do que U . Seja, ainda, para cadaındice i ∈ 0, 1, . . . , U − 1, U(mi) o menor numero natural maior do que todos os valo-res absolutos dos valores armazenados na celula mi durante a execucao e, similarmente,seja, para cada ındice i ∈ 0, 1, . . . , n− 1, U(ri) o menor numero natural maior do quetodos os valores absolutos dos valores armazenados no registrador ri durante a execucao.Definimos entao o espaco ocupado pela computacao como

1 +U−1∑i=0

D(U(mi)

)+

n−1∑i=0

D(U(ri)

),

onde D : N→ N e a funcao que computa o numero de dıgitos binarios de um numerousada anteriormente.

E importante notar um detalhe sobre os custos neste modelo, que ilustramos com umexemplo. Ao construirmos um computador em nosso modelo para ordenar uma per-mutacao usando um conhecido algoritmo como o mergesort, se calcularmos os custosassintoticos, chegaremos a um custo da ordem de O(n log2 n) de tempo e O(n log n)de espaco, sendo n o tamanho da permutacao. Isto esta em contraste com os cus-tos O(n log n) e O(n) com os quais estamos acostumados. A razao disto, no entanto, eque, ao analisarmos o mergesort como de costume, atribuımos um custoO(1) as operacoescom inteiros e ponteiros neste algoritmo. Porem, como estes inteiros e ponteiros devem terda ordem de O(log n) bits, este fator adicional aparece nas complexidades. Convenciona-mos entao que, ao usar a notacao assintotica neste modelo, descontamos implicitamenteum fator de O(logB), onde B e o total de bits na entrada de uma execucao.

Observamos que este modelo de computacao e Turing-equivalente [24, secao 3.3]. Porem,convenientemente nao dissemos que este modelo, bem como uma maquina de Turing, eextremamente difıcil de se programar. O compilador que descrevemos, embora exista,nao e trivial de se construir. Porem, em um certo sentido, isto tambem e verdade paracomputadores modernos.

Nossa ultima observacao e que este modelo nao corresponde de fato a computadoresmodernos, mas apenas a realidade da computacao atual. A razao disso e que qualquercomputador fisicamente implementavel e, aparentemente, uma maquina de estados fi-nita (automato finito). Se quisessemos aproximar mais o modelo da realidade, temos queentender que ao resolver um problema em um computador real, a memoria dele pode

23

Page 24: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

acabar. Neste caso devemos fazer um backup do estado atual da solucao e transporta-lopara um computador mais potente para continuar a operacao. Este computador maispotente tambem e uma maquina de estados finita e, se sua memoria acabar, o processodeve ser repetido, sempre buscando computadores mais potentes.

1.5 Algebra

Neste trabalho existem algumas poucas consideracoes algebricas, embora eu tenha dedi-cado uma boa parte de meu mestrado ao estudo do tratamento computacional de numerosalgebricos.

Considere primeiramente a seguinte definicao:

Definicao 39 — Identificamos um conjunto F ⊆ R como um subcorpo real seforem validas as seguintes propriedades:

• Os numeros reais 0 e 1 sao elementos de F ;

• Os numeros reais x− y e xy sao elementos de F sempre que x e y tambemo sao; e

• O numero real 1/x e um elemento de F sempre que x e um elemento nao-nulode F .

Para fins de generalidade, neste trabalho devemos fixar um subcorpo real F. Usaremoseste subcorpo para representar as coordenadas de pontos (extremos de segmentos, centrosde cırculos e vertices de polıgonos, dentre outros) e grandezas como o raio de cırculos,tudo isso na entrada, durante a execucao e na saıda de nossos algoritmos. Esta e anossa solucao para o problema decorrente do fato de que computadores sao incapazes derepresentar numeros reais arbitrarios.

Apos esta secao, iremos tratar o subcorpo F como fixado. Por isso, no restante dela,vamos especificar quais rotinas computacionais devem ser providenciadas para que umsubcorpo real possa assumir o papel de F. Mostraremos tambem como iremos avaliar acomplexidade computacional de nossos algoritmos no tocante ao uso do subcorpo F.

E perfeitamente possıvel assumir que F = Q durante o resto deste trabalho sem nenhuminconveniente caso o leitor nao precise de nenhuma generalidade maior. Neste caso efacil observar que as rotinas computacionais requisitadas estao prontamente disponıveisna maioria dos ambientes computacionais contemporaneos, principalmente atraves dabiblioteca GMP [2].

Para um subcorpo real F poder assumir o papel de F durante o resto deste trabalho, osseguintes recursos computacionais devem estar disponıveis:

• Uma rotina F-Convert que converte numeros racionais em elementos de F (ob-serve que qualquer subcorpo real deve conter Q);

• Uma rotina F-Difference para calcular a subtracao de dois elementos de F ;

• Uma rotina F-Product para calcular o produto de dois elementos de F ;

24

Page 25: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• Uma rotina F-Inverse para calcular o inverso 1/x de cada elemento nao-nulo xde F ;

• Uma rotina F-Less que determina se um elemento de F e menor do que outro; e

• Uma rotina F-Approximation que recebe um elemento x de F e um numeroracional ε maior do que 0 e devolve um numero racional a tal que |a− x| < ε.

Quanto a analise de complexidade de algoritmos que usam o subcorpo F, o metodo quetemos a oferecer e bem simples. Porem, neste nıvel de generalidade em que estamostrabalhando, ele pode ser considerado bastante pratico.

Este metodo e baseado no conceito de nıveis de complexidade algebrica . Essenci-almente, a cada valor representando um elemento de F computado por um programa,associamos um numero natural chamado de o nıvel de complexidade algebrica daquelevalor ou, por simplicidade, o nıvel daquele valor. A regra para deduzir o nıvel de umvalor e a seguinte: o nıvel dos resultados de chamadas a rotina F-Convert e 0 e o nıveldos resultados de chamadas as rotinas F-Difference, F-Product e F-Inverse e 1mais o maior nıvel dentre seus argumentos. Dessa forma o nıvel de um valor e na verdadesua profundidade na arvore de computacoes do programa.

E importante notar que e impossıvel em geral associar um nıvel a cada elemento de F.Nıveis sao associados apenas a valores computados por um programa e, assim, dois valoresrepresentando o mesmo elemento de F podem ter nıveis diferentes. Por exemplo, se umprograma faz a chamada

F-Difference(F-Convert(2),F-Convert(1)

),

ele ira obter um valor de nıvel 1, embora ele represente o elemento 1 ∈ F, o mesmoelemento representado pelo resultado de uma chamada da forma F-Convert(1), quepossui nıvel 0. Tambem e importante notar que estes nıveis sao apenas uma ferramentade analise de complexidade, nao afetando em nada a implementacao dos programas (naoexiste, em particular, uma rotina que calcula o nıvel de um valor representando umelemento de F).

Com isso em mente, dizemos que um programa e algebricamente tratavel se existeum numero natural maior do que todos os nıveis de todos os valores que o programapode produzir com todas as suas possıveis entradas (os nıveis de complexidade algebricade elementos de F presentes na entrada e considerado como sendo 0).

Ainda, dizemos que a complexidade algebrica de tempo ou espaco de um programa ea respectiva complexidade do programa obtido traduzindo o programa original da formaobvia assumindo a presenca de um oraculo que providencia as rotinas F-Difference,F-Product, F-Inverse e F-Less em tempo e espaco O(1).

Assim, se um programa e algebricamente tratavel e se tivermos implementado todas asrotinas F-Difference, F-Product, F-Inverse e F-Less em tempo e espaco polino-miais, entao as complexidades de tempo e espaco deste programa nao sao maiores doque suas respectivas complexidades algebricas multiplicadas por um fator polinomial nomaior numero de bits nas representacoes computacionais de elementos de F na entradado programa (mais 1, para tratar o caso deste numero ser 0).

Este metodo de analise pode parecer simples, mas ele e incrivelmente eficaz pelos seguintesmotivos:

25

Page 26: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• E relativamente facil mostrar que os programas desenvolvidos neste trabalho saoalgebricamente trataveis;

• Analisar as complexidades algebricas destes programas e tambem relativamentefacil;

• Para todos os subcorpos F que chamaram nossa atencao, inclusive quando F e osubcorpo dos numeros reais algebricos, e possıvel implementar as rotinas mencio-nadas em tempo e espaco polinomiais; e

• E longe de ser trivial (pelo menos para nos), desenvolver um outro metodo de analisede complexidade que produza resultados mais justos do que este para os programasneste trabalho. Mesmo quando F = Q, uma analise de complexidade mais justaparece demandar uma incrivelmente complicada atencao a detalhes.

1.6 Co-rotinas

Existe um conceito em muitas linguagens de programacao modernas que facilitara bas-tante a exposicao de varios pontos deste trabalho e, sendo assim, decidimos dedicar estasecao a explicacao deste conceito, que pode nao ser familiar a muitos programadores.

Uma co-rotina e uma forma de representar sequencias (finitas ou nao) atraves de roti-nas computacionais que podem retornar uma quantidade qualquer de resultados. Infeliz-mente, foge do escopo deste trabalho definir co-rotinas formalmente, e podemos apenasfornecer um exemplo.

O algoritmo 1 codifica uma co-rotina que recebe um numero natural n e devolve osnumeros primos menores do que n em ordem crescente.

Imediatamente percebemos onde uma co-rotina difere de uma rotina normal. Em pri-meiro lugar, ela retorna valores varias vezes. Para demarcar este fato, usamos a palavrareservada yield em vez da palavra reservada return.

Ainda, anotamos que o algoritmo “devolve os numeros primos menores do que n emordem crescente como uma co-rotina”. Para entender o que isso significa, considere queum programa executa

s← Sieve(10).

Neste caso qual valor esta guardado na variavel s? A resposta e uma instancia da co-rotina. A variavel s representa entao a sequencia (no caso finita) dos numeros primos me-nores do que 10 e tais numeros podem ser acessados repetidamente invocando a variavel scomo se ela fosse uma funcao. Assim, uma chamada subsequente da forma s() produziriao numero 2, uma proxima chamada produziria 3, seguido de 5 e, finalmente, uma novachamada da forma s() produziria o numero 7. E, apos isso, o que acontece se chamar-mos s(). Neste caso o valor especial ⊥ e devolvido, indicando que a sequencia acabou.Na verdade futuras chamadas da forma s() tambem produzirao ⊥.

Para simplificar a notacao, admitiremos em nossos programas expressoes do tipo

for x in s do ... done

para iterar sobre os elementos da sequencia.

26

Page 27: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Algorithm 1 Sieve (n)

Pre-condic~ao: n ∈ NEfeito: devolve os numeros primos menores do que n em ordem crescente como uma

co-rotina1: S ← um vetor de bits indexado por 2, 3, . . . , n− 1 inicializado com zeros2: i← 23: while i2 < n do

4: if Si = 0 then

5: j ← i2

6: while j < n do

7: Sj ← 18: j ← j + i9: done

10: endif

11: i← i+ 112: done

13: for i from 2 to n− 1 do

14: if Si = 0 then

15: yield i16: endif

17: done

A implementacao de co-rotinas em linguagens de programacao varia bastante. A minhaimplementacao favorita coloca no inıcio do codigo (de maquina) da funcao uma tabelade pulos (estilo o switch da linguagem C) indexada por em quais lugares a execucao da-quele codigo pode comecar, ou seja, o inıcio e as linhas subsequentes as chamadas yield.Na variavel que recebe a instancia da co-rotina (no nosso caso s), guardamos um pon-teiro para a funcao, o estado das variaveis locais e um ındice na tabela de pulos. Aochamar a instancia da co-rotina, criamos um stack frame, o preenchemos com os valoresdas variaveis locais e executamos a funcao com o ındice da tabela de pulos. Uma imple-mentacao de co-rotinas para a linguagem C de programacao que utiliza este esquema ediscutida em [26].

Ha varias vantagens no uso de co-rotinas. No nosso caso, a vantagem mais aparente enao precisar guardar a sequencia em uma estrutura de dados para iterar sobre ela. Isso,como mostraremos adiante, tera um impacto significativo na complexidade de espaco deum de nossos algoritmos. Vale ainda dizer que este efeito foi o que popularizou os pipesdo sistema operacional UNIX, muito embora esta tecnologia nao esteja no mesmo nıvelde abstracao.

27

Page 28: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Capıtulo 2

Representacoes de conjuntos

Este capıtulo tem dois principais objetivos. O primeiro e introduzir um metodo de des-cricao de conjuntos baseado na relacao que curvas orientadas tem com a fronteira doconjunto. Como veremos adiante, este metodo sera extremamente conveniente ao definir-mos a representacao computacional de conjuntos que iremos adotar em nossos algoritmos.

Claro, representar computacionalmente conjuntos arbitrarios de pontos e em geral im-possıvel, e assim apenas alguns tipos de conjuntos poderao ser representados com estemetodo.

Ainda, como o segundo principal objetivo deste capıtulo, mostramos como usar uma talrepresentacao de um conjunto para obter duas propriedades dele: sua area e seu centrode massa.

2.1 Representacoes de conjuntos

Considere as duas seguintes definicoes, que sao a base de nosso metodo de representarconjuntos.

Definicao 40 — Seja X ⊆ R2 um conjunto e seja −→uv um segmento dereta orientado. Dizemos entao que −→uv e compatıvel com X se, para todoponto w ∈ uv \ u, v, existir um valor ε ∈ R com ε > 0 tal que, paratodo p ∈ Bε(w), p ∈ X se (v−w)× (p−w) > 0 e p 6∈ X se (v−w)× (p−w) < 0.

Definicao 41 — Seja X ⊆ R2 um conjunto e seja α = −→arc(C, u, v) um arco decircunferencia orientado em sentido anti-horario, onde C e um cırculo e u, v ∈ ∂C.Dizemos entao que α e compatıvel com X se, para todo w ∈ arc(C, u, v)\u, v,existir um ε ∈ R com ε > 0 tal que, para todo p ∈ Bε(w), p ∈ X se p ∈ C e p 6∈ Xse p ∈ R2 \C. Ainda, dizemos que o arco ←−arc(C, u, v) e compatıvel com X se αe compatıvel com R2 \X.

Sao imediatos os dois seguintes resultados sobre nossa nocao de compatibilidade.

28

Page 29: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 5 — Seja X ⊆ R2 um conjunto e seja −→uv um segmento de retaorientado compatıvel com X. Entao uv ⊆ ∂X.

Proposicao 6 — Seja X ⊆ R2 um conjunto e seja α = arc(C, u, v) um arcode circunferencia, onde C e um cırculo e u, v ∈ ∂C. Entao, se −→arc(C, u, v)ou ←−arc(C, u, v) forem compatıveis com X, vale que α ⊆ ∂X.

Agora mostramos nosso metodo de representacao de conjuntos atraves da seguinte de-finicao.

Definicao 42 — Seja X ⊆ R2 um conjunto de pontos e seja R um conjuntofinito de segmentos orientados e arcos de circunferencia orientados. Dizemosque R e uma boa representacao de X se as seguintes condicoes forem todassatisfeitas:

• Todo segmento orientado em R e compatıvel com X;

• Todo arco de circunferencia orientado em R e compatıvel com X;

• Se−→ab e −→uv sao dois segmentos orientados distintos em R,

entao ab ∩ uv ⊆ a, b, u, v;

• Se−→ab e um segmento de reta orientado em R e um elemento de R e uma

orientacao de um arco de circunferencia α = arc(C, u, v), onde C e umcırculo e u, v ∈ ∂C, entao ab ∩ α ⊆ a, b, u, v;• Se dois elementos distintos de R sao respectivas orientacoes dos arcos

de circunferencia α = arc(C, a, b) e β = arc(D, u, v), onde C e D saocırculos, a, b ∈ ∂C e u, v ∈ ∂D, entao α ∩ β ⊆ a, b, u, v; e

• A fronteira de X e

∂X =⋃−→uv∈R

uv ∪⋃

−→arc(C,u,v)∈R

arc(C, u, v) ∪⋃

←−arc(C,u,v)∈R

arc(C, u, v).

Observe que, de acordo com esta definicao, um conjunto pode admitir varias boas repre-sentacoes, mas nao iremos entrar no merito de se uma boa representacao de um conjuntopode ser uma boa representacao de outro conjunto.

Boas representacoes admitem uma certa analogia com polıgonos, como mostramos agora.

Definicao 43 — Seja R uma boa representacao de um conjunto X ⊆ R2. Dize-mos entao que os vertices deR sao os elementos do conjunto (finito) V (R) ⊆ R2

dos extremos de segmentos orientados de R e dos extremos de arcos de circun-ferencia orientados de R.

Definicao 44 — Seja R uma boa representacao de um conjunto X ⊆ R2. Di-zemos entao que as arestas de R sao os proprios elementos de R.

29

Page 30: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Durante este trabalho, lidaremos principalmente com boas representacoes de conjuntoscompostas apenas de segmentos orientados ou de arcos de circunferencia orientados, ra-ramente misturando ambos os tipos de curva em uma unica representacao. Porem, nestecapıtulo trabalhamos com esta estrutura mais geral, pois aqui esta mistura nao traz muitacomplexidade adicional.

A seguir mostramos como obter a area e o centro de massa de conjuntos a partir de umaboa representacao.

2.2 Relacoes shoelace

A chave para entender como calcular a area ou centro de massa de um conjunto a partirde uma boa representacao para ele e generalizar os metodos de se calcular areas e centrosde massa de polıgonos, tambem conhecidos como relacoes shoelace [20, secao 1.3].

Lembramos o leitor que se P e um polıgono, entao

areaP =1

2

∑−→uv∈E(P )

u× v

e

centroidP =1

6(areaP )

∑−→uv∈P

(u× v)(u+ v).

Nosso primeiro passo entao e demonstrar estas relacoes, e a tecnica que utilizaremos paraisso e conhecida como ray casting, uma caracterizacao extremamente util de pertinenciade um ponto em um polıgono.

Intuitivamente, ao tentar decidir se um ponto p ∈ R2 pertence a um polıgono P , con-sideramos uma semi-reta orientada que comeca em p, tambem chamada de raio. Se“percorrermos” o raio, mantendo uma contagem a do numero de vezes que o raio “fura”o polıgono de fora para dentro e uma contagem b do numero de vezes que o raio “fura” opolıgono de dentro para fora, entao, ao final do processo, “quase sempre” valera que p ∈ Pse, e somente se, b > a. Mais precisamente, o conjunto dos pontos p ∈ R2 em que esteprocesso pode falhar e J-desprezıvel.

A seguir definiremos formalmente todos os elementos da tecnica de ray casting e mos-traremos ambas as relacoes shoelace. Cabe, no entanto, observar que o que entendemospor ray casting neste trabalho nao e o que usualmente encontramos na literatura. La, atecnica de ray casting normalmente visa o desenvolvimento de algoritmos para testar seum ponto pertence a um polıgono. Aqui, ela e meramente um instrumento que usaremosem nossas demonstracoes e, como isto e tecnicamente conveniente para nos, descrevemosuma versao simplificada (e incapaz de produzir um tal algoritmo correto) da tecnica.Uma descricao mais completa do ray casting pode ser encontrada em [20].

Definicao 45 — Seja p ∈ R2 \ 0 um ponto no plano diferente da origem.Definimos entao o raio associado ao ponto p, tambem denotado por ray p, comoo conjunto tp : t ∈ R ∧ t ≥ 1.

30

Page 31: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 46 — Sejam p, u, v ∈ R2 pontos no plano. Definimos entao o raycasting de p no segmento orientado −→uv, denotado por rc(p,−→uv), da seguinteforma. Se p = 0, se p 6= 0 mas (ray p) ∩ uv = ou se uv ⊆ tp : t ∈ R,entao rc(p,−→uv) = 0. Caso contrario, o valor c = p × (v − u) deve ser diferentede 0. Definimos entao

rc(p,−→uv) =

1, c > 0

−1, c < 0.

Intuitivamente, entendemos −→uv como uma aresta do polıgono. Neste caso, rc(p,−→uv) e onumero de vezes que o raio “fura” −→uv de dentro para fora menos o numero de vezes queo raio “fura” −→uv de fora para dentro. O caso em que −→uv e paralelo ao raio nao e deimportancia, e qualquer valor real poderia ter sido assinalado a rc(p,−→uv).

Definicao 47 — Seja P um polıgono e seja p ∈ R2 um ponto. Definimos entaoo ray casting de p em P como

rc(p, P ) =∑

−→uv∈E(P )

rc(p,−→uv).

Em geral, nao necessariamente e valido que rc(p, P ) = χP (p) para todo ponto p ∈ R2.Porem, isto e sempre verdade se p 6= 0, se p nao estiver na fronteira de P e se ray p naointersectar nenhum vertice de P . Formalizamos isto a seguir.

Definicao 48 — O conjunto das falhas do ray casting em um polıgono P e oconjunto

failP = ∂P ∪⋃

v∈V (P )

tv : t ∈ R, 0 ≤ t ≤ 1.

Proposicao 7 — O conjunto das falhas do ray casting em um polıgono e J-desprezıvel.

Prova — Imediato.

Proposicao 8 — Seja P um polıgono e seja p ∈ R2 \ (failP ) um ponto no planoque nao e uma falha do ray casting em P . Entao rc(p, P ) = χP (p).

Prova — Como p 6∈ failP , nao existem arestas em P paralelas a ray p que intersec-tam ray p. Assim o conjunto T = t ∈ R : t ≥ 1 ∧ tp ∈ ∂P e finito e pode serexpresso como t0, t1, . . . , tn−1 para algum n ∈ N com 1 < t0 < t1 < · · · < tn−1. Ainda,existe uma unica aresta de P que contem tip para cada i ∈ 0, 1, . . . , n − 1, que seradenotada ei.

O resultado sera agora provado por inducao em n. Caso n = 0, devemos mostrarque p 6∈ P , pois claramente rc(p, P ) = 0. Para isso, assumimos, para fins de uma provapor contradicao, que p ∈ P . Assim, como p 6∈ failP , devemos ter que p 6∈ ∂P e

31

Page 32: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

logo que p ∈ P . Desse modo, o teorema do valor intermediario (teorema 1) garantea existencia de um valor real t ∈ R com t > 1 tal que tp ∈ ∂P , o que contradiz n = 0, quedeveria implicar T = . Assim, somos forcados a concluir que p 6∈ P , como desejado.

Ja se n 6= 0, defina o ponto p′ ∈ R2 por p′ = (t0 + 1)p se n = 1 ou por

p′ =t0 + t1

2p

se n > 1. Note entao que p′ 6∈ failP e que ray p′ intersecta precisamenteas arestas e1, e2 . . . , en−1. Assim, podemos usar a hipotese indutiva em p′, ob-tendo rc(p′, P ) = χP (p′). Porem, como e0 e a unica aresta de P que intersecta ray pmas nao intersecta ray p′,

rc(p, P ) = rc(p, e0) + rc(p′, P )

= rc(p, e0) + χP (p′).

Note, no entanto, que χP (p) = 1− χP (p′), pois p ∈ P se, e somente se, p′ 6∈ P , uma vezque p, p′ 6∈ ∂P e o segmento pp′ cruza exatamente uma aresta de P : a aresta e0.

Segue que rc(p, P ) = rc(p, e0) − χP (p) + 1. Se p 6∈ P , necessariamente temosque rc(p, e0) = −1 e, se p ∈ P , necessariamente temos que rc(p, e0) = 1. Em ambosos casos, e facil verificar que rc(p, P ) = χP (p), provando o resultado.

Em conjunto, as proposicoes 7 e 8 revelam um fato interessante. Se P e um polıgono,entao ele, sendo um conjunto J-mensuravel, esta contido em algum retangulo aberto Rque contem tambem a origem. Logo

areaP =

∫R

χP (p) dp

=

∫R

rc(p, P ) dp

=

∫R

∑e∈E(P )

rc(p, e) dp

=∑

e∈E(P )

∫R

rc(p, e) dp.

Assim, se pudermos calcular estas ultimas integrais de forma eficaz, conseguiremos cal-cular tambem a area do polıgono.

Proposicao 9 — Seja R um retangulo aberto que contem a origem e seja −→uvum segmento de reta orientado com uv ⊆ R. Entao∫

R

rc(p,−→uv) dp =1

2(u× v).

Prova — Seja T ⊆ R o triangulo cujos vertices sao a origem, u e v. Sabemos dageometria analıtica que a area de T e∫

T

1 dp = areaT =1

2|u× v|.

32

Page 33: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Seja entao p ∈ R2 \ 0 \ ∂T um ponto fora da fronteira de T e diferente da origem.Se adicionalmente p 6∈ T , entao (ray p) ∩ T = , de modo que (ray p) ∩ uv = e rc(p,−→uv) = 0. Se, por outro lado, p ∈ T , entao p ∈ T , e assim o raio ray p nao sointersecta o segmento uv, mas tambem nao e paralelo a este segmento. Portanto, nestecaso, rc(p,−→uv) = sign

(p× (v−u)

). Porem, como p ∈ T , sign

(p× (v−u)

)= sign(u× v).

Assim, temos ∫R

rc(p,−→uv) dp =

∫T

rc(p,−→uv) dp

=

∫T

sign(u× v) dp

= sign(u× v)

∫T

1 dp

= sign(u× v)(areaT )

=1

2sign(u× v)|u× v|

=1

2(u× v),

pois a fronteira de T e J-desprezıvel.

Com isso, a relacao shoelace para areas segue imediatamente.

Corolario 3 (relacao shoelace para areas) — Se P e um polıgono, entao

areaP =1

2

∑−→uv∈E(P )

u× v.

Prova — Seja R um retangulo aberto contendo P e a origem. Entao, como discutimosacima e de acordo com a proposicao 9,

area (P ) =∑

−→uv∈E(P )

∫R

rc(p,−→uv) dp =1

2

∑−→uv∈E(P )

u× v.

Voltamos nossa atencao agora a relacao shoelace restante, isto e, como calcular o centrode massa de polıgonos. O metodo para isso e completamente analogo ao usado para secalcular areas. Novamente, as proposicoes 7 e 8 tem um papel importante. Se P e umpolıgono, entao ele e um conjunto J-mensuravel e esta consequentemente contido em um

33

Page 34: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

retangulo aberto R que contem tambem a origem. Assim,

centroidP =1

areaP

∫R

χP (p)p dp

=1

areaP

∫R

rc(p, P )p dp

=1

areaP

∫R

( ∑e∈E(P )

rc(p, e)

)p dp

=1

areaP

∫R

∑e∈E(P )

rc(p, e)p dp

=1

areaP

∑e∈E(P )

∫R

rc(p, e)p dp.

Mostramos entao como calcular estas ultimas integrais.

Proposicao 10 — Seja R um retangulo aberto contendo a origem e seja −→uv umsegmento de reta orientado com uv ⊆ R. Entao∫

R

rc(p,−→uv)p dp =1

6(u× v)(u+ v).

Prova — Esta demonstracao e extremamente similar a demonstracao da proposicao 9.Da mesma forma que naquela demonstracao, seja T ⊆ R o triangulo cujos vertices sao aorigem, u e v. E um fato conhecido que o centroide de T , tambem conhecido como seubaricentro, e dado por∫

T

p dp

areaT= centroidT =

1

3(0 + u+ v) =

1

3(u+ v).

Assim, como areaT =1

2|u× v|, temos que∫

T

p dp =1

6|u× v|(u+ v).

Agora, do mesmo modo que na demonstracao da proposicao 9, se p ∈ R2 \ 0 \ ∂Te um ponto fora da fronteira de T e diferente de 0, entao rc(p,−→uv) = 0 se p 6∈ Te rc(p,−→uv) = sign(u× v) se p ∈ T .

34

Page 35: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Deste modo, segue ∫R

rc(p,−→uv)p dp =

∫T

rc(p,−→uv)p dp

=

∫T

sign(u× v)p dp

= sign(u× v)

∫T

p dp

=1

6sign(u× v)|u× v|(u+ v)

=1

6(u× v)(u+ v),

tambem devido ao fato de que ∂T e Jordan desprezıvel.

Corolario 4 (relacao shoelace para centros de massa) — Se P e um polıgono,entao

centroidP =1

6(areaP )

∑−→uv∈E(P )

(u× v)(u+ v).

Prova — Seja R um retangulo aberto contendo o polıgono P e a origem. Entao, comofoi discutido anteriormente e de acordo com a proposicao 10,

centroid (P ) =1

area (P )

∑−→uv∈E(P )

∫R

rc(p,−→uv)p dp

=1

6(areaP )

∑−→uv∈E(P )

(u× v)(u+ v).

2.3 Generalizacoes das relacoes shoelace

Nesta secao iremos generalizar as relacoes shoelace vistas na secao 2.2 para conjuntos depontos com uma boa representacao. A ideia e completamente analoga ao que foi vistonaquela secao, mas existem bastante tecnicalidades, que cobrimos aqui.

O primeiro passo e generalizar a nocao de ray casting para arcos de circunferencia orien-tados.

35

Page 36: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 49 — Seja α =(arc(C, u, v), σ

)um arco de circunferencia orien-

tado com sentido σ ∈ −1, 1 e seja p ∈ R2 um ponto no plano. Defini-mos o ray casting de p em α, tambem denotado por rc(p, α), da seguinteforma. Se p = 0, se p 6= 0 mas (ray p) ∩ arc(C, u, v) = ou se p 6= 0e |(ray p) ∩ arc(C, u, v)| = 2, entao rc(p, α) = 0. Caso contrario, deve existir umponto q ∈ R2 tal que (ray p) ∩ arc(C, u, v) = q. Neste caso definimos

rc(p, α) =

1, c > 0

0, c = 0

−1, c < 0,

onde c = p× α′(α−1(q)

), α′ e a derivada da funcao α e α−1 e a funcao inversa da

funcao α.

Novamente, interpretamos o ray casting do ponto p no arco de circunferencia orientado αcomo o numero de vezes que o raio de p “sai” do arco α menos o numero de vezes queele “entra” no arco α. Assim, o caso em que p 6= 0 e |(ray p) ∩ arc(C, u, v)| = 2 deve serconsiderado como 0, pois o raio necessariamente “sai” uma vez e “entra” uma vez.

Generalizamos agora a ideia de ray casting para conjuntos de segmentos de reta orientadose arcos de circunferencia orientados.

Definicao 50 — Seja R um conjunto finito de segmentos de reta orientados earcos de circunferencia orientados e seja p ∈ R2 um ponto no plano. Definimosentao o ray casting do ponto p em R como

rc(p,R) =∑α∈R

rc(p, α).

Definicao 51 — Seja R um conjunto finito de segmentos de reta orientados earcos de circunferencia orientados. Definimos entao o conjunto das falhas doray casting em R como o conjunto

fail (R) = 0 ∪B ∪⋃v∈V

tv : 0 ≤ t ≤ 1,

onde B ⊆ R2 e o conjunto dos pontos no plano em algum elemento deR e V ⊆ R2

e o conjunto dos extremos dos elementos de R.

Proposicao 11 — Seja R um conjunto finito de segmentos de reta orientadose arcos de circunferencia orientados. Entao o conjunto das falhas do ray castingem R e J-desprezıvel.

Prova — Imediato do fato de que ha um numero finito de extremos de elementosde R.

36

Page 37: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

De forma similar ao que fizemos anteriormente, relacionamos agora a funcao caracterısticade um conjunto de pontos ao resultado do ray casting.

Proposicao 12 — Seja X ⊆ R2 um conjunto J-mensuravel de pontos e seja Ruma boa representacao de X. Entao, para todo ponto p ∈ R2 \ fail (R), temosque rc(p,R) = χX(p).

Prova — Esta prova e extremamente similar a prova da proposicao 8 e encorajamos oleitor a ler aquela prova antes de tentar ler esta caso ele ja nao tenha feito isto.

Consideramos (analogamente aquela demonstracao) o conjunto T ⊆ R dos valores re-ais t ∈ R com t > 1 tal que tp intersecta alguma aresta de R. Como p 6∈ fail (R), naoexiste um segmento em R paralelo a ray p e que intersecta ray p, de modo que T e fi-nito, podendo ser escrito na forma t0, t1, . . . , tn−1 com 1 < t0 < t1 < · · · < tn−1. Ainda,como R e uma boa representacao de X, as arestas de R nao se intersectam, exceto pos-sivelmente em seus extremos. Porem, como p 6∈ fail (R), ray p nunca intersecta um talextremo. Assim, para cada i ∈ 0, 1, . . . , n− 1, existe uma unica aresta ei em R quecontem o ponto tip. Claro, ao contrario do que ocorre com polıgonos na demonstracaoda proposicao 8, aqui podemos ter ei = ej mesmo que i 6= j, mas neste caso esta arestadeve ser um arco de circunferencia orientado.

Vamos agora mostrar que rc(p,R) = χX(p) por inducao em n. No caso base, temosque n = 0 e devemos mostrar que χX(p) = 0, ou seja, que p 6∈ X, pois rc(p,R) eclaramente 0. De fato, se p ∈ X, entao como p 6∈ fail (R), p 6∈ ∂X e assim p ∈ X. Logo,como X e J-mensuravel e portanto limitado, o teorema do valor intermediario (teorema 1)garante a existencia de um valor t ∈ R com t > 1 tal que tp ∈ ∂X. Como a fronteirade X e a uniao das arestas de R, devemos entao concluir que existe uma aresta e ∈ R quecontem o ponto tp, contradizendo n = 0. Assim, somos forcados a concluir que p 6∈ X,como desejado.

Se, no entanto, n > 0, defina o ponto p′ ∈ R2 por p′ = (t0 + 1)p se n = 1 ou por

p′ =t0 + t1

2p

se n > 1. Claramente nao ha uma aresta em R contendo p′ e ray p′ ⊆ ray p, de modoque p′ 6∈ fail (R). Tratamos agora varios casos, que dependem do tipo da aresta e0.

Primeiramente, se e0 = −→uv e um segmento orientado, note que como −→uv e a unicaaresta em R que intersecta o segmento pp′, como R e uma boa representacao de X ecomo p, p′ 6∈ ∂X, temos que χX(p) = 1−χX(p′). Caso p ∈ X, entao p′ 6∈ X e rc(p, e0) = 1.Pela hipotese indutiva, rc(p′,R) = χX(p′) = 0, de forma que

rc(p,R) = rc(p, e0) + rc(p′,R) = 1 + χX(p′) = 1 + 0 = 1,

pois ray p′ intersecta exatamente as arestas e1, e2, . . . , en−1 de R. Similarmente,caso p 6∈ X, temos que p′ ∈ X e rc(p, e0) = −1. Novamente pela hipotese indu-tiva, rc(p′,R) = χX(p′) = 1 e

rc(p,R) = rc(p, e0) + rc(p′,R) = −1 + χX(p′) = −1 + 1 = 0.

Assim, temos que rc(p,R) = χX(p), como querıamos.

37

Page 38: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Tendo tratado do caso em que e0 e um segmento orientado, suponha agora que e0 e umaorientacao de um arco de circunferencia arc(C, u, v). Tratamos em separado o caso emque C e tangente a ray p. Como C e apenas tangente a ray p, entao χX(p) = χX(p′)e rc(p, e0) = 0. Pela hipotese indutiva, rc(p′,R) = χX(p′) e assim

rc(p,R) = rc(p, e0) + rc(p′,R) = 0 + χX(p′) = χX(p),

tambem como desejado, pois novamente ray p′ intersecta exatamente as ares-tas e1, e2, . . . , en−1 de R.

Voltamos agora nossa atencao ao caso em que C nao e tangente a ray p. Dividimos estecaso em dois casos. Primeiro consideramos que rc(p, e0) 6= 0. Este caso e extremamentesimilar ao caso em que e0 e um segmento orientado. Brevemente, entao, temos quese p ∈ X, entao p′ 6∈ X e rc(p, e0) = 1. Assim, pela hipotese indutiva,

rc(p,R) = rc(p, e0) + rc(p′,R) = 1 + χX(p′) = 1 + 0 = 1.

Ainda, se p 6∈ X, entao p′ ∈ X e rc(p, e0) = −1, de forma que, pela hipotese indutiva,

rc(p,R) = rc(p, e0) + rc(p′,R) = −1 + χX(p′) = −1 + 1 = 0.

Observe que usamos fortemente o fato de que ray p′ intersecta exatamente as ares-tas e1, e2, . . . , en−1 para deduzir rc(p,R) a partir de rc(p′,R). Como e0 e um arco decircunferencia, temos de ter o cuidado de garantir que e0 apareca uma vez apenas nalista para estas deducoes serem validas. No entanto, o fato de que rc(p, e0) 6= 0 garanteque ray p tem apenas uma interseccao com e0.

Finalmente chegamos ao caso mais interessante em que e0 e a orientacao de um arco decircunferencia arc(C, u, v) no sentido σ ∈ −1, 1, C nao e tangente a ray p e rc(p, e0) = 0.Como o cırculo C nao e tangente a ray p, devemos concluir que e0 aparece exatamenteduas vezes na lista e0e1 · · · en−1, digamos nos ındices 0 e i com i ∈ 1, 2, . . . , n− 1. Claro,como a aresta e0 cruza o segmento pp′ (apenas uma vez), temos que χX(p) = 1− χX(p′).Ainda, como a aresta e0 intersecta ray p entre p e p′ e depois de p′, segue que p 6∈ Ce p′ ∈ C. Assim, temos que rc(p′, e0) = σ. Note que rc(p,R) = rc(p′,R)− σ, pois ray pe ray p′ intersectam precisamente as mesmas arestas (como i > 0 temos que ray p′ inter-secta e0 = ei), mas rc(p, e0) = 0 enquanto que rc(p′, e0) = σ. Observe tambem que p ∈ Xse, e somente se, σ = −1 e que, portanto, χX(p) =

1− σ2

, ou seja, σ = 1−2χX(p). Logo,

pela hipotese indutiva, temos que

rc(p,R) = rc(p′,R)− σ= χX(p′)− σ= 1− χX(p)− σ= 1− χX(p)−

(1− 2χX(p)

)= 1− 1− χX(p) + 2χX(p)

= χX(p),

concluindo a demonstracao.

Tambem como anteriormente, seja agora X ⊆ R2 um conjunto J-mensuravel e seja Ruma boa representacao de X. Considere ainda um retangulo aberto R contendo X e a

38

Page 39: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

origem. Temos entao que

areaX =

∫R

χX(p) dp

=

∫R

rc(p,R) dp

=

∫R

∑α∈R

rc(p, α) dp

=∑α∈R

∫R

rc(p, α) dp.

Novamente, estamos interessados em computar∫R

rc(p, α) dp

para cada elemento α de R. Se α for um segmento de reta orientado, ja sabemos comocalcular esta integral. Resta entao tratarmos do caso em que α e um arco de circunferenciaorientado.

Lema 2 — Seja γ : [0, 1]→ R2 a parametrizacao canonica de um arcode circunferencia orientado, seja γ′ : [0, 1]→ R2 a funcao derivada de γ eseja F : R2 ×R2 → R uma funcao contınua que satisfaz:• F (u, v0) + F (u, v1) = F (u, v0 + v1) para todos os vetores u, v0, v1 ∈ R2;• F (u, λv) = λF (u, v) para todos os vetores u, v ∈ R2 e todo escalar

real λ ∈ R; e• Existe um numero natural k ∈ N tal que

∣∣F (u, v)∣∣ ≤ ||u||k ||v|| para todos

os vetores u, v ∈ R2.Entao

limn→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))

=

∫ 1

0

F(γ(t), γ′(t)

)dt.

Prova — Seja ε ∈ R com ε > 0 um valor real positivo arbitrario. Vamos mostrar que∣∣∣∣∣∫ 1

0

F(γ(t), γ′(t)

)dt− lim

n→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))∣∣∣∣∣ < ε.

Comecamos observando que o metodo de integracao por retangulos nos garante que∫ 1

0

F(γ(t), γ′(t)

)dt = lim

n→∞

1

n

n−1∑i=0

F(γ(i/n), γ′(i/n)),

pois γ′ e contınua.

Note agora que

γ′(t) = limh→0

γ(t+ h)− γ(t)

h

39

Page 40: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

para todo t ∈ [0, 1] e que, como γ e a parametrizacao canonica de um arco de circun-ferencia orientado, o comprimento∣∣∣∣∣∣∣∣γ′(t)− γ(t+ h)− γ(t)

h

∣∣∣∣∣∣∣∣independe da escolha de t uma vez fixado h. Juntando estes dois fatos, temos que existeum numero natural nao-nulo n0 ∈ N \ 0 tal que, para todo n ∈ N com n ≥ n0 e paratodo i ∈ 0, 1, . . . , n− 1,∣∣∣∣∣∣∣∣γ′(i/n)− n(γ(i+1/n

)− γ(i/n))∣∣∣∣∣∣∣∣ < ε

Mk,

onde M e um numero real positivo maior ou igual a norma de todo ponto em Im(γ) (talnumero existe porque claramente Im(γ) e um conjunto limitado).

Portanto, ∣∣∣∣∣∫ 1

0

F(γ(t), γ′(t)

)dt− lim

n→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))∣∣∣∣∣ =∣∣∣∣∣ lim

n→∞

1

n

n−1∑i=0

F(γ(i/n), γ′(i/n))− lim

n→∞

1

n

n−1∑i=0

nF(γ(i/n), γ(i+1/n

)− γ(i/n))∣∣∣∣∣ =∣∣∣∣∣ lim

n→∞

1

n

n−1∑i=0

(F(γ(i/n), γ′(i/n))− F

(γ(i/n), n(γ(i+1/n

)− γ(i/n))))∣∣∣∣∣ =

limn→∞

1

n

∣∣∣∣∣n−1∑i=0

F

(γ(i/n), γ′(i/n)− n

(γ(i+1/n

)− γ(i/n)))∣∣∣∣∣ ≤

limn→∞

1

n

n−1∑i=0

∣∣∣∣∣F(γ(i/n), γ′(i/n)− n

(γ(i+1/n

)− γ(i/n)))∣∣∣∣∣ ≤

limn→∞

1

n

n−1∑i=0

∣∣∣∣∣∣γ(i/n)∣∣∣∣∣∣k ∣∣∣∣∣∣∣∣γ′(i/n)− n(γ(i+1/n)− γ(i/n))∣∣∣∣∣∣∣∣ <

limn→∞

1

n

n−1∑i=0

Mk ε

Mk=

limn→∞

1

n

n−1∑i=0

ε = ε,

como querıamos.

Proposicao 13 — Seja α um arco de circunferencia orientado, seja R ⊆ R2 umretangulo aberto contendo todos os pontos em α e a origem, seja γ : [0, 1]→ R2

a parametrizacao canonica α de α e seja γ′ : [0, 1]→ R2 a funcao derivada de γ.Entao ∫

R

rc(p, α) dp =1

2

∫ 1

0

γ(t)× γ′(t) dt.

40

Page 41: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Prova — A estrategia que usaremos para realizar esta demonstracao consiste em dis-cretizar o arco α. Mais precisamente, se α e uma orientacao de um arco de circun-ferencia arc(C, u, v), entao defina, para cada n ∈ N \ 0:

• O ponto an,i como γ(i/n)

para cada i ∈ 0, 1, . . . , n;

• O conjunto An,i como o fecho do interior da curva de Jordan

arc(C, an,i, an,i+1) · ˜an,i+1an,i

para cada i ∈ 0, 1, . . . , n− 1;

• O conjunto de segmentos de reta orientados e contidos em R (pois R e um conjuntoconvexo)

Sn =−−−−−→an,ian,i+1 : i ∈ 0, 1, . . . , n− 1

; e

• O conjunto An como a uniaon−1⋃i=0

An,i.

Assumimos (sem demonstracao) os tres seguintes fatos intuitivos:

• An e um conjunto J-mensuravel para todo n ∈ N \ 0;

• limn→∞

areaAn = 0; e

• Para todo n ∈ N \ 0, se um ponto p ∈ R2 e tal que

rc(p, α) 6= rc(p, Sn) =∑−→ab∈Sn

rc(p,−→ab),

entao p ∈ An ou p ∈ tan,i : 0 ≤ t ≤ 1 para algum i ∈ 0, 1, . . . , n, de formaque o conjunto dos pontos onde estes ray castings diferem e sempre J-mensuravele possui uma area arbitrariamente pequena com n arbitrariamente grande.

Desta forma, podemos concluir que∫R

rc(p, α) dp = limn→∞

∫R

rc(p, Sn) dp

= limn→∞

∫R

∑−→ab∈Sn

rc(p,−→ab) dp

= limn→∞

∑−→ab∈Sn

∫R

rc(p,−→ab) dp.

Logo, pela proposicao 9, temos que∫R

rc(p, α) dp = limn→∞

∑−→ab∈Sn

1

2a× b =

1

2limn→∞

n−1∑i=0

γ(i/n)× γ(i+1/n

),

41

Page 42: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

restando apenas mostrar que

limn→∞

n−1∑i=0

γ(i/n)× γ(i+1/n

)= lim

n→∞

n−1∑i=0

γ(i/n)×(γ(i+1/n

)− γ(i/n))

=

∫ 1

0

γ(t)× γ′(t) dt.

Porem, isto e consequencia direta do lema 2 (tome F (u, v) = u × v e verifique que ashipoteses do lema valem para esta escolha da funcao F ).

Na verdade podemos mostrar uma primitiva para esta integral.

Proposicao 14 — Seja α = −→arc(C, u, v) um arco de circunferencia orientado emsentido anti-horario tal que:• O centro do cırculo C e c = (x, y) ∈ R2;• O cırculo C tem raio r;• O unico valor t ∈ [0, 2π) tal que u = c+ r(cos t, sin t) e θ0; e• O unico valor t ∈ (θ0, θ0 + 2π) tal que v = c+ r(cos t, sin t) e θ1.

Seja tambem R ⊆ R2 um retangulo aberto contendo todos os pontos em α e aorigem. Entao∫

R

rc(p, α) dp =1

2

(r2(θ1 − θ0) + rx(sin θ1 − sin θ0)− ry(cos θ1 − cos θ0)

).

Ainda, ∫R

rc(p, revα) dp = −∫R

rc(p, α) dp.

Prova — Defina a funcao θ : [0, 1]→ R por θ(t) = (1− t)θ0 + tθ1, de modo que θ(0) = θ0

e θ(1) = θ1. Assim, nao ha problemas em abreviarmos θ(t) por θt para cada t ∈ [0, 1].Ainda, se θ′ : [0, 1]→ R e a funcao derivada de θ, entao θ′(t) = θ1−θ0 para todo t ∈ [0, 1].

Dessa forma, se γ : [0, 1]→ R2 e a parametrizacao canonica α de α, entao

γ(t) = c+ r(cos θt, sin θt)

para todo t ∈ [0, 1]. Logo, se γ′ : [0, 1]→ R2 e a funcao derivada de γ, entao, pela regrada cadeia, γ′(t) = r(θ1 − θ0)(− sin θt, cos θt) para cada t ∈ [0, 1].

Porem, a proposicao 13 transforma o restante desta demonstracao em um mero exercıcio

42

Page 43: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

de integracao, uma vez que ela garante que∫R

rc(p, α) dp =1

2

∫ 1

0

γ(t)× γ′(t) dt

=1

2

∫ 1

0

(c+ r(cos θt, sin θt)

)×(r(θ1 − θ0)(− sin θt, cos θt)

)dt

=1

2r(θ1 − θ0)

∫ 1

0

(c+ r(cos θt, sin θt)

)× (− sin θt, cos θt) dt

=1

2r(θ1 − θ0)

∫ 1

0

((x, y)× (− sin θt, cos θt) + r(cos θt, sin θt)× (− sin θt, cos θt)

)dt

=1

2r(θ1 − θ0)

∫ 1

0

(x cos θt + y sin θt + r(cos2 θt + sin2 θt)

)dt

=1

2r(θ1 − θ0)

∫ 1

0

(x cos θt + y sin θt + r) dt

=1

2r(θ1 − θ0)

(x sin θtθ1 − θ0

− y cos θtθ1 − θ0

+ rt

)∣∣∣∣1t=0

=1

2

(r2(θ1 − θ0)t+ rx sin θt − ry cos θt

)∣∣1t=0

=1

2

(r2(θ1 − θ0) + rx(sin θ1 − sin θ0)− ry(cos θ1 − cos θ0)

).

Para completar a demonstracao, observe que rc(p, revα) = − rc(p, α) para todoponto p ∈ R2.

Um fato interessante (e importante em uma implementacao) sobre a formula estabelecidapor esta ultima proposicao e que, se tivermos como entrada o cırculo C e os pontos u e v,os senos e cossenos dos angulos θ0 e θ1 podem ser computados de forma bastante simples.Por exemplo, temos que cos θ0 e a diferenca entre as abscissas do centro c e de u divididapelo raio r. Porem, nao vemos como computar a diferenca entre os angulos θ0 e θ1 deforma mais simples do que com uma rotina para computar arcos de cosseno.

A proposicao 13 pode ser adaptada para segmentos de reta, como mostramos a seguir.

Proposicao 15 — Seja −→uv um segmento de reta orientado, seja R ⊆ R2 umretangulo aberto contendo todos os pontos em uv e a origem, seja γ : [0, 1]→ R2

a parametrizacao canonica uv de −→uv e seja γ′ : [0, 1]→ R2 a funcao derivada de γ.Entao ∫

R

rc(p,−→uv) dp =1

2u× v =

1

2

∫ 1

0

γ(t)× γ′(t) dt.

Prova — Trata-se de um simples exercıcio de integracao.

Juntando tudo isso podemos estabelecer como obter a area de um conjunto J-mensuravela partir de uma boa representacao deste conjunto.

43

Page 44: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Teorema 3 — Seja X ⊆ R2 um conjunto J-mensuravel e seja R uma boarepresentacao de X. Para cada elemento α ∈ R, denote por α′ a derivada daparametrizacao canonica α de α. Entao

areaX =1

2

∑α∈R

∫ 1

0

α(t)× α′(t) dt.

Prova — Imediata tendo em vista o que ja discutimos.

Este raciocınio pode ser repetido a fim de calcularmos centros de massa. Devido a pro-posicao 12, se X ⊆ R2 e um conjunto J-mensuravel que admite uma boa representacao Re R e um retangulo aberto contendo X e a origem, entao

centroidX =1

areaX

∫R

χX(p)p dp

=1

areaX

∫R

rc(p,R)p dp

=1

areaX

∫R

(∑α∈R

rc(p, α)

)p dp

=1

areaX

∫R

∑α∈R

rc(p, α)p dp

=1

areaX

∑α∈R

∫R

rc(p, α)p dp.

Ja sabemos, devido a proposicao 10, como calcular estas ultimas integrais no caso de αser um segmento orientado. Vejamos entao como tratar o caso em que α e um arco decircunferencia orientado. Antes, porem, generalizamos o lema 2.

Corolario 5 — Seja γ : [0, 1]→ R2 a parametrizacao canonica de um arcode circunferencia orientado, seja γ′ : [0, 1]→ R2 a funcao derivada de γ eseja F : R2 ×R2 → R2 uma funcao contınua que satisfaz:• F (u, v0) + F (u, v1) = F (u, v0 + v1) para todos os vetores u, v0, v1 ∈ R2;• F (u, λv) = λF (u, v) para todos os vetores u, v ∈ R2 e todo escalar

real λ ∈ R; e• Existe um numero natural k ∈ N tal que

∣∣∣∣F (u, v)∣∣∣∣ ≤ ||u||k ||v|| para todos

os vetores u, v ∈ R2.Entao

limn→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))

=

∫ 1

0

F(γ(t), γ′(t)

)dt.

Prova — Tendo o lema 2, esta prova e bastante simples (e portanto o tıtulo “corolario”).

Primeiramente consideramos as funcoes componentes F0, F1 : R2 ×R2 → R de F , deforma que F (u, v) =

(F0(u, v), F1(u, v)

)para todos os vetores u, v ∈ R2. Basta entao

44

Page 45: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

percebermos que∫ 1

0

F(γ(t), γ′(t)

)dt =

(∫ 1

0

F0

(γ(t), γ′(t)

)dt,

∫ 1

0

F1

(γ(t), γ′(t)

)dt

)∈ R2

e, similarmente, que

limn→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))

=(limn→∞

n−1∑i=0

F0

(γ(i/n), γ(i+1/n

)− γ(i/n)), limn→∞

n−1∑i=0

F1

(γ(i/n), γ(i+1/n

)− γ(i/n)))

∈ R2.

Desta forma, temos que

limn→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))

=

∫ 1

0

F(γ(t), γ′(t)

)dt

se, e somente se,

limn→∞

n−1∑i=0

F0

(γ(i/n), γ(i+1/n

)− γ(i/n))

=

∫ 1

0

F0

(γ(t), γ′(t)

)dt

e

limn→∞

n−1∑i=0

F1

(γ(i/n), γ(i+1/n

)− γ(i/n))

=

∫ 1

0

F1

(γ(t), γ′(t)

)dt.

Assim, resta mostrar que as funcoes F0 e F1 satisfazem as hipoteses do lema 2.Porem, isto e simples ao percebermos que, para todos os vetores u, v ∈ R2, ambos osnumeros

∣∣F0(u, v)∣∣ e∣∣F1(u, v)

∣∣ sao menores ou iguais que∣∣∣∣F (u, v)

∣∣∣∣.Proposicao 16 — Seja α um arco de circunferencia orientado, seja R ⊆ R2 umretangulo aberto contendo todos os pontos em α e a origem, seja γ : [0, 1]→ R2

a parametrizacao canonica α de α e seja γ′ : [0, 1]→ R2 a funcao derivada de γ.Entao ∫

R

rc(p, α)p dp =1

3

∫ 1

0

(γ(t)× γ′(t)

)γ(t) dt.

Prova — Esta demonstracao e bastante similar a demonstracao da proposicao 13. Lem-bramos entao que, naquela demonstracao, discretizamos o arco α. Isto e, supondo que αe uma orientacao de um arco de circunferencia arc(C, u, v), definimos, para cada n ∈ N:

• O ponto an,i como γ(i/n)

para cada i ∈ 0, 1, . . . , n;

• O conjunto An,i como o fecho do interior da curva de Jordan

arc(C, an,i, an,i+1) · ˜an,i+1an,i

para cada i ∈ 0, 1, . . . , n− 1;

45

Page 46: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• O conjunto de segmentos de reta orientados e contidos em R (pois R e convexo)

Sn =−−−−−→an,ian,i+1 : i ∈ 0, 1, . . . , n− 1

; e

• O conjunto An como a uniaon−1⋃i=0

An,i.

Tambem havıamos estabelecido tres fatos:

• An e um conjunto J-mensuravel para todo n ∈ N \ 0;

• limn→∞

areaAn = 0; e

• Para todo n ∈ N \ 0, se um ponto p ∈ R2 e tal que

rc(p, α) 6= rc(p, Sn) =∑−→ab∈Sn

rc(p,−→ab),

entao p ∈ An ou p ∈ tan,i : 0 ≤ t ≤ 1 para algum i ∈ 0, 1, . . . , n, de formaque o conjunto dos pontos onde estes ray castings diferem e sempre J-mensuravele possui uma area arbitrariamente pequena com n arbitrariamente grande.

Assim, podemos concluir que∫R

rc(p, α)p dp = limn→∞

∫R

rc(p, Sn)p dp

= limn→∞

∫R

(∑−→ab∈Sn

rc(p,−→ab)

)p dp

= limn→∞

∫R

∑−→ab∈Sn

rc(p,−→ab)p dp

= limn→∞

∑−→ab∈Sn

∫R

rc(p,−→ab)p dp.

Porem, a proposicao 10 prontamente nos mostra que∫R

rc(p,−→uv)p dp =1

6(u× v)(u+ v)

para todo segmento de reta orientado −→uv com uv ⊆ R, de forma que∫R

rc(p, α)p dp = limn→∞

∑−→ab∈Sn

1

6(a× b)(a+ b)

=1

6limn→∞

n−1∑i=0

(γ(i/n)× γ(i+1/n

))(γ(i/n)

+ γ(i+1/n

)).

46

Page 47: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Claramente podemos reescrever este limite como

limn→∞

(1

6

n−1∑i=0

(γ(i/n)× γ(i+1/n

))γ(i/n)

+1

6

n−1∑i=0

(γ(i/n)× γ(i+1/n

))γ(i+1/n

))=

limn→∞

(2

1

6

n−1∑i=0

(γ(i/n)× γ(i+1/n

))γ(i/n)

+1

6

n−1∑i=0

(γ(i/n)× γ(i+1/n

))(γ(i+1/n

)− γ(i/n)))

.

Mostraremos em breve que

limn→∞

n−1∑i=0

(γ(i/n)× γ(i+1/n

))(γ(i+1/n

)− γ(i/n))

= 0,

de forma que ∫R

rc(p, α)p dp =1

3limn→∞

n−1∑i=0

(γ(i/n)× γ(i+1/n

))γ(i/n).

Assim, uma vez que percebemos que a funcao

F : R2 ×R2 → R2

(u, v) 7→ (u× v)u

satisfaz todas as hipoteses do corolario 5, concluımos que∫R

rc(p, α)p dp =1

3limn→∞

n−1∑i=0

(γ(i/n)×(γ(i+1/n

)− γ(i/n)))

γ(i/n)

=1

3limn→∞

n−1∑i=0

F(γ(i/n), γ(i+1/n

)− γ(i/n))

=1

3

∫ 1

0

F(γ(t), γ′(t)

)dt

=1

3

∫ 1

0

(γ(t)× γ′(t)

)γ(t) dt,

como desejado.

Seja entao, para cada n ∈ N e cada i ∈ 0, 1, . . . , n−1, Tn,i ⊆ R2 o triangulo que possuicomo vertices a origem e os pontos an,i e an,i+1, de forma que∣∣∣γ(i/n)× γ(i+1/n

)∣∣∣ = 2(areaTi).

Note agora que, dado n ∈ N, cada ponto p ∈ R no retangulo R pode estar no maximono interior de dois triangulos Tn,i com i ∈ 0, 1, . . . , n − 1. De fato, se p ∈ T n,ipara algum i ∈ 0, 1, . . . , n − 1, entao a reta `p = tp : t ∈ R separa os pon-tos an,i e an,i+1, de modo que o teorema do valor intermediario (teorema 1) nos ga-rante que `p intersecta arc(C, an,i, an,i+1) ⊆ ∂C em um ponto diferente de an,i e an,i+1.Assim, se um ponto p e tal que p ∈ T n,i ∩ T n,j ∩ T n,k com i, j, k ∈ 0, 1, . . . , n − 1

47

Page 48: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

e∣∣i, j, k∣∣ = 3, temos que a reta `p intersecta ∂C em tres pontos distintos (pois os ar-

cos arc(C, an,i, an,i+1), arc(C, an,j, an,j+1) e arc(C, an,k, an,k+1) nunca se intersectam excetopossivelmente em seus extremos), o que e uma clara contradicao. Logo, segue que, paratodo n ∈ N,

n−1∑i=0

areaTn,i ≤ 2(areaR).

Ainda, note que, para cada n ∈ N e cada i ∈ 0, 1, . . . , n − 1, a distancia en-tre γ

(i/n)

e γ(i+1/n

), ou seja, a distancia ||an,i+1 − an,i||, e menor do que o compri-

mento do arco arc(C, an,i, an,i+1), que por sua vez e menor do que uma n-esima parte doperımetro 2πr do cırculo C (sendo r o raio de C).

Assim, podemos concluir que∣∣∣∣∣∣∣∣∣∣n−1∑i=0

(γ(i/n)× γ(i+1/n

))(γ(i+1/n

)− γ(i/n))∣∣∣∣∣∣∣∣∣∣ ≤

n−1∑i=0

∣∣∣∣∣∣∣∣(γ(i/n)× γ(i+1/n))(

γ(i+1/n

)− γ(i/n))∣∣∣∣∣∣∣∣ =

n−1∑i=0

∣∣∣∣(γ(i/n)× γ(i+1/n))∣∣∣∣ ∣∣∣∣∣∣∣∣(γ(i+1/n

)− γ(i/n))∣∣∣∣∣∣∣∣ <

n−1∑i=0

2(areaTn,i)2πr

n=

4πr

n

n−1∑i=0

areaTn,i ≤

4πr

n2(areaR) =

8πr(areaR)

n.

Assim, segue que

limn→∞

n−1∑i=0

(γ(i/n)× γ(i+1/n

))(γ(i+1/n

)− γ(i/n))

= 0,

concluindo a prova.

Novamente mostramos uma primitiva para a integral acima.

48

Page 49: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 17 — Seja α = −→arc(C, u, v) um arco de circunferencia orientado emsentido anti-horario tal que:• O centro do cırculo C e c = (x, y) ∈ R2;• O cırculo C tem raio r;• O unico valor t ∈ [0, 2π) tal que u = c+ r(cos t, sin t) e θ0; e• O unico valor t ∈ (θ0, θ0 + 2π) tal que v = c+ r(cos t, sin t) e θ1.

Entao ∫R

rc(p, α)p dp ∈ R2

e um vetor cuja abscissa e

1

2xr2(θ1 − θ0) +

1

3(x2r + r3)(sin θ1 − sin θ0)− 1

3xyr(cos θ1 − cos θ0)

+1

6yr2(sin2 θ1 − sin2 θ0) +

1

12xr2(sin 2θ1 − sin 2θ0)

e cuja ordenada e

1

2yr2(θ1 − θ0)− 1

3(y2r + r3)(cos θ1 − cos θ0) +

1

3xyr(sin θ1 − sin θ0)

+1

6xr2(sin2 θ1 − sin2 θ0)− 1

12yr2(sin 2θ1 − sin 2θ0).

Ainda, ∫R

rc(p, revα)p dp = −∫R

rc(p, α)p dp.

Prova — Esta prova partilha varios elementos presentes na prova da proposicao 14.Primeiramente definimos a funcao θ : [0, 1]→ R por θ(t) = (1 − t)θ0 + tθ1, de modoque θ(0) = θ0 e θ(1) = θ1. Observamos entao que nao ha ambiguidade ao denotarmos θ(t)por θt para cada t ∈ [0, 1]. Tambem temos que se θ′ : [0, 1]→ R e a funcao derivada de θ,entao θ′(t) = θ1 − θ0 para todo t ∈ [0, 1].

Tambem como naquela demonstracao, definimos γ : [0, 1]→ R2 como a parametrizacaocanonica α de α, de modo que

γ(t) = c+ r(cos θt, sin θt)

para todo t ∈ [0, 1]. Assim, se γ′ : [0, 1]→ R2 e a funcao derivada de γ, entao, novamentepela regra da cadeia, γ′(t) = r(θ1 − θ0)(− sin θt, cos θt) para cada t ∈ [0, 1].

A proposicao 16 tem nesta prova o papel que a proposicao 13 tinha na prova da pro-posicao 14: ela transforma o restante desta demonstracao em um exercıcio de integracao,uma vez que ela estabelece que

∫R

rc(p, α)p dp =1

3

∫ 1

0

(γ(t)× γ′(t)

)γ(t) dt =

1

3

∫ 1

0

((c+ r(cos θt, sin θt)

)×(r(θ1 − θ0)(− sin θt, cos θt)

))(c+ r(cos θt, sin θt)

)dt.

49

Page 50: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Na prova da proposicao 13, havıamos calculado que, para todo t ∈ [0, 1],(c+ r(cos θt, sin θt)

)×(r(θ1 − θ0)(− sin θt, cos θt)

)=

(x+ r cos θt, y + r sin θt)×(−r(θ1 − θ0) sin θt, r(θ1 − θ0) cos θt

)=

(θ1 − θ0)(xr cos θt + r2 cos2 θt + yr sin θt + r2 sin2 θt) =

(θ1 − θ0)(xr cos θt + yr sin θt + r2(cos2 θt + sin2 θt)

)=

(θ1 − θ0)(xr cos θt + yr sin θt + r2).

Voltando entao ao que fazıamos, temos que∫R

rc(p, α)p dp =1

3

∫ 1

0

(θ1 − θ0)(xr cos θt + yr sin θt + r2)(c+ r(cos θt, sin θt)

)dt

=1

3(θ1 − θ0)

∫ 1

0

(xr cos θt + yr sin θt + r2)(x+ r cos θt, y + r sin θt) dt.

Temos entao que a abscissa e a ordenada de∫R

rc(p, α)p dp

sao, respectivamente,

1

3(θ1 − θ0)

∫ 1

0

(xr cos θt + yr sin θt + r2)(x+ r cos θt) dt

e1

3(θ1 − θ0)

∫ 1

0

(xr cos θt + yr sin θt + r2)(y + r sin θt) dt.

Antes de propriamente calcularmos estas integrais, lembramos o leitor das seguintes iden-tidades em integracao trigonometrica:∫

cos2 t dt =1

2t+

1

4sin 2t;

∫sin2 t dt =

1

2t− 1

4sin 2t; e∫

cos t sin t dt =1

2sin2 t.

Assim, ao aplicarmos o metodo de integracao por substituicao para a funcao θ, temos∫cos2 θt dt =

12θt + 1

4sin 2θt

θ1 − θ0

;

∫sin2 θt dt =

12θt − 1

4sin 2θt

θ1 − θ0

; e∫cos θt sin θt dt =

sin2 θt2(θ1 − θ0)

.

50

Page 51: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Agora sim, temos que a abscissa de ∫R

rc(p, α)p dp

e

1

3(θ1 − θ0)

∫ 1

0

(xr cos θt + yr sin θt + r2)(x+ r cos θt) dt =

1

3(θ1 − θ0)

∫ 1

0

(x2r cos θt + xyr sin θt + xr2 + xr2 cos2 θt + yr2 cos θt sin θt + r3 cos θt) dt =

1

3(θ1 − θ0)

∫ 1

0

(xr2 + (x2r + r3) cos θt + xyr sin θt + yr2 cos θt sin θt + xr2 cos2 θt

)dt =

1

3(θ1 − θ0)

(xr2t+

(x2r + r3) sin θt(θ1 − θ0)

− xyr cos θt(θ1 − θ0)

+yr2 sin2 θt2(θ1 − θ0)

+xr2(1

2θt + 1

4sin 2θt)

(θ1 − θ0)

)∣∣∣∣1t=0

=

1

3

(xr2(θ1 − θ0)t+ (x2r + r3) sin θt − xyr cos θt +

yr2

2sin2 θt +

xr2

2θt +

xr2

4sin 2θt

)∣∣∣∣1t=0

=

1

3xr2(θ1 − θ0) +

1

3(x2r + r3)(sin θ1 − sin θ0)− 1

3xyr(cos θ1 − cos θ0)+

1

6yr2(sin2 θ1 − sin2 θ0) +

1

6xr2(θ1 − θ0) +

1

12xr2(sin 2θ1 − sin 2θ0) =

1

2xr2(θ1 − θ0) +

1

3(x2r + r3)(sin θ1 − sin θ0)− 1

3xyr(cos θ1 − cos θ0)+

1

6yr2(sin2 θ1 − sin2 θ0) +

1

12xr2(sin 2θ1 − sin 2θ0),

como desejado.

Os calculos para se obter a ordenada de∫R

rc(p, α)p dp

sao analogos e deixados como exercıcio. Ainda, para completar a demonstracao, observeque rc(p, revα) = − rc(p, α) para todo ponto p ∈ R2.

Observamos que a relacao estabelecida pela proposicao 16 tambem e valida para segmen-tos orientados.

Proposicao 18 — Seja −→uv um segmento de reta orientado, seja R ⊆ R2 umretangulo aberto contendo todos os pontos em uv e a origem, seja γ : [0, 1]→ R2

a parametrizacao canonica uv de −→uv e seja γ′ : [0, 1]→ R2 a funcao derivada de γ.Entao ∫

R

rc(p,−→uv)p dp =1

6(u× v)(u+ v) =

1

3

∫ 1

0

(γ(t)× γ′(t)

)γ(t) dt.

Prova — Trata-se tambem de uma simples integracao.

Finalmente, apresentamos o ultimo resultado restante.

51

Page 52: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Teorema 4 — Seja X ⊆ R2 um conjunto J-mensuravel e seja R uma boarepresentacao de X. Para cada elemento α ∈ R, denote por α′ a derivada daparametrizacao canonica α de α. Entao

centroidX =1

3(areaX)

∑α∈R

∫ 1

0

(α(t)× α′(t)

)α(t) dt.

Prova — Tambem segue imediatamente de tudo o que ja discutimos.

52

Page 53: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Capıtulo 3

Uniao de cırculos

3.1 I-coordenadas

Na secao 1.5, convencionamos escolher um subcorpo real F a fim de escrevermos nos-sos algoritmos da forma mais geral possıvel. Porem, nossos algoritmos para resolver oproblema da uniao de cırculos irao precisar manipular outros numeros reais alem dosnumeros em F, mesmo quando F = Q. Alem disso, nao podemos nem sequer enunciaro problema da uniao de cırculos sem antes tratar deles. Por causa disso, esta secao ededicada a completar a parte numerica deste trabalho atraves da introducao e do estudodestes numeros.

A origem deste problema vem do fato de que em nossos algoritmos sera possivelmentenecessario representar pontos na interseccao das fronteiras de dois cırculos distintos naentrada. Por exemplo, se F = Q e a entrada possuir dois cırculos C e D de raio 1cujos centros sao, respectivamente, (0, 0) e (1, 0), entao o ponto (1/2,

√3/2) estara na in-

terseccao ∂C ∩ ∂D e podera ter que ser representado computacionalmente. No entanto,o numero

√3/2 nao e um numero racional.

A tecnica que usaremos para resolver este problema esteve presente em nosso trabalhodesde a primeira implementacao que fizemos de um algoritmo para computar a fronteirada uniao de cırculos. Naquela implementacao, chamamos de I-coordenadas os numerosreais que podem ser coordenadas da interseccao de duas circunferencias distintas comcentros de coordenadas racionais e raios racionais. Aqui iremos generalizar este conceitolevando em conta o subcorpo real F, comecando com a definicao precisa do conjunto dasI-coordenadas.

Definicao 52 — O conjunto das I-coordenadas e o conjunto

I =a+ b

√c : a, b, c ∈ F ∧ c ≥ 0

.

Este conjunto de numeros ja foi considerado anteriormente na literatura por Berberichet al [8], que denominaram seus elementos no caso em que F = Q por one-root numbers.

Outros trabalhos descrevem conjuntos mais gerais, como por exemplo [15]. A tecnica derepresentar numeros algebricos computacionalmente, tal como implementada na biblio-

53

Page 54: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

teca LEDA [3], e mais geral do que todas estas tecnicas. Porem, o preco de generalidadee, em geral, uma perda de performance (mesmo que por um fator constante). Portanto,ficamos com a tecnica mais especıfica que atende nossas demandas.

Na secao 1.5, mostramos como elementos em F sao representados computacionalmenteatraves de rotinas que os manipulam. Similarmente, mostramos agora como representa-mos e manipulamos I-coordenadas computacionalmente.

Definicao 53 — Uma I-coordenada a + b√c com a, b, c ∈ F e c ≥ 0 podera ser

computacionalmente representada pela tripla (a, b, c) ∈ F3.

Note, no entanto, que pode haver varias representacoes computacionais para uma mesmaI-coordenada.

Talvez a primeira observacao relevante que devemos fazer sobre este conjunto e que elenao possui nenhuma estrutura algebrica imediatamente aparente. Em particular a somaou subtracao de duas I-coordenadas pode nao ser uma I-coordenada e o produto deduas I-coordenadas pode nao ser uma I-coordenada. Porem, e possıvel realizar algumasoperacoes com I-coordenadas e, na verdade, essas operacoes sao suficientes para nos-sos propositos. Inclusive, chega a ser impressionante como nossos algoritmos parecemrequisitar precisamente o que as I-coordenadas podem nos oferecer.

A seguir mostramos quais operacoes uteis a nos podem ser feitas sobre I-coordenadas.

Proposicao 19 — Se i ∈ I e uma I-coordenada e α ∈ F e um escalar real, entaoo numero real αi e tambem uma I-coordenada, ou seja, αi ∈ I.Ainda, existe um algoritmo que recebe como entrada uma I-coordenada i e umelemento α de F e devolve a I-coordenada αi realizando no maximo um numeroconstante de operacoes do corpo F.

Prova — Elementar.

Observe que as I-coordenadas na entrada e na saıda sao representadas como descritoanteriormente e, como podem existir varias representacoes computacionais possıveis parauma mesma I-coordenada, o algoritmo mencionado na proposicao 19 esta autorizado aproduzir saıdas diferentes para as mesmas entradas. Pedimos ao leitor que note que estaobservacao sera valida para a maioria de nossos algoritmos que produzem I-coordenadasem suas saıdas.

Proposicao 20 — Se i ∈ I e uma I-coordenada e n ∈ N e um numero natural,entao in ∈ I.Ainda, existe um algoritmo que recebe como entrada uma I-coordenada i ∈ I eum numero natural n ∈ N e devolve a I-coordenada in usando, para cada valorfixo de n, no maximo um numero constante de operacoes do corpo F.

54

Page 55: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Prova — Se i = a+ b√c, onde a, b, c ∈ F e c ≥ 0, entao

in =(a+ b

√c)n

=n∑i=0

(n

i

)an−i

(b√c)i

=

bn/2c∑i=0

(n

2i

)an−2i

(b√c)2i

+

b(n−1)/2c∑i=0

(n

2i+ 1

)an−2i−1

(b√c)2i+1

=

bn/2c∑i=0

(n

2i

)an−2ib2ici +

(b(n−1)/2c∑i=0

(n

2i+ 1

)an−2i−1b2i+1ci

)√c,

o que nao so demonstra que in ∈ I mas tambem da um algoritmo para computar estapotencia.

Proposicao 21 — Existe um algoritmo que recebe como entrada uma I-coordenada i ∈ I e um numero real x ∈ F e decide se i < x fazendo uso deno maximo um numero constante de operacoes do corpo F.

Prova — Seja i = a + b√c com a, b, c ∈ F e c ≥ 0. Se b = 0, entao clara-

mente i < x ⇐⇒ a < x e a demonstracao esta concluıda. Se b > 0, entao

i < x ⇐⇒ a+ b√c < x

⇐⇒ b√c < x− a

⇐⇒√c <

x− ab

⇐⇒ 0 <x− ab

∧ c <(x− a

b

)2

⇐⇒ a < x ∧ b2c < (x− a)2.

Ja se b < 0, temos que

i < x ⇐⇒ a+ b√c < x

⇐⇒ b√c < x− a

⇐⇒√c >

x− ab

⇐⇒ x− ab

< 0 ∨ c >(x− a

b

)2

⇐⇒ a < x ∨ b2c > (x− a)2,

o que resulta no desejado algoritmo.

Proposicao 22 — Existe um algoritmo que recebe como entrada duas I-coordenadas i, j ∈ I e decide se i < j fazendo uso de no maximo um numeroconstante de operacoes do corpo F.

Prova — Sejam i = a0 + b0√c0 e j = a1 + b1

√c1 com a0, a1, b0, b1, c0, c1 ∈ F, c0 ≥ 0

55

Page 56: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

e c1 ≥ 0. Se b0 = 0, entao i < j ⇐⇒ a0 < j ⇐⇒ −j < −a0. Ja se b0 > 0, entao

i < j ⇐⇒ a0 + b0

√c0 < a1 + b1

√c1

⇐⇒ b0

√c0 < a1 − a0 + b1

√c1

⇐⇒√c0 <

a1 − a0

b0

+b1

b0

√c1

⇐⇒ a1 − a0

b0

+b1

b0

√c1 > 0 ∧ c0 <

(a1 − a0

b0

+b1

b0

√c1

)2

⇐⇒ −(a1 − a0)− b1

√c1 < 0 ∧ b2

0c0 <(a1 − a0 + b1

√c1

)2.

Finalmente, se b0 < 0, entao

i < j ⇐⇒ a0 + b0

√c0 < a1 + b1

√c1

⇐⇒ b0

√c0 < a1 − a0 + b1

√c1

⇐⇒√c0 >

a1 − a0

b0

+b1

b0

√c1

⇐⇒ a1 − a0

b0

+b1

b0

√c1 < 0 ∨ c0 >

(a1 − a0

b0

+b1

b0

√c1

)2

⇐⇒ −(a1 − a0)− b1

√c1 < 0 ∨ b2

0c0 >(a1 − a0 + b1

√c1

)2.

Em todos estes casos, a proposicao 21 e a proposicao 20 sao suficientes para o projeto doalgoritmo desejado.

Proposicao 23 — Sejam

p =(a00 + b00

√c, a01 + b01

√c)∈ I2

eq =

(a10 + b10

√c, a11 + b11

√c)∈ I2

dois pontos no plano cujas coordenadas sao I-coordenadas que podem ser expres-sas com um mesmo radical c. Entao p× q, o produto cruzado de p com q, e umelemento de I que pode ser expresso na forma a+ b

√c com o mesmo radical c.

Ainda, existe um algoritmo que recebe como entrada repre-sentacoes

((a00, b00, c), (a01, b01, c)

)e((a10, b10, c), (a11, b11, c)

)de dois pon-

tos p, q ∈ I e devolve uma representacao (a, b, c) para a I-coordenada p × qfazendo uso de no maximo um numero constante de operacoes do corpo F.

Prova — Uma simples manipulacao algebrica.

56

Page 57: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 24 — Seja C um cırculo cujas coordenadas do centro e cujo raiosao elementos de F e seja ` = u+ tv : t ∈ R uma reta definida por dois ve-tores u ∈ F2 e v ∈ F2 \ 0 cujas coordenadas sao tambem elementos de F.

Entao ∂C ∩ ` ⊆a+ b

√c : a, b ∈ F

2 ⊆ I2 para algum c ∈ F, c ≥ 0.Ainda, existe um algoritmo que recebe como entrada tres elementos de F repre-sentando as coordenadas do centro e o raio de um cırculo C e dois vetores u, v ∈ F2

com v 6= 0 e devolve o conjunto (finito) ∂C ∩ ` atraves de uma representacao emque todas as coordenadas dos pontos no conjunto sao I-coordenadas representa-das com um mesmo radical fazendo uso de no maximo um numero constante deoperacoes do corpo F, sendo ` = u+ tv : t ∈ R uma reta.

Prova — Sejam c e r o centro e o raio, respectivamente, do cırculo C. Considere entaoa funcao γ dada por

γ : R → R2

t 7→ u+ tv

e observe que ` = Im(γ). Temos entao que

γ(t) ∈ ∂C ⇐⇒(γ(t)− c

)2= r2

⇐⇒ (u+ tv − c)2 = r2

⇐⇒(tv + (u− c)

)2= r2

⇐⇒ ||v||2t2 + 2(v · (u− c)

)t+(||u− c||2 − r2

)= 0,

que e uma equacao de segundo grau em t. Assim, se o numero

∆ = 4(v · (u− c)

)2 − 4||v||2(||u− c||2 − r2

)∈ F

for negativo, nao ha interseccoes entre ` e C. Ja se ∆ ≥ 0, ha uma ou duas raızes destaequacao correspondendo a um ou dois pontos na interseccao de ` com C. Estas raızessao dadas por

−2(v · (u− c)

)+√

2||v||2e−2(v · (u− c)

)−√

2||v||2,

de forma que ha duas raızes distintas se, e somente se, ∆ 6= 0. Logo, as interseccoes sao

u+

(−2(v · (u− c)

)+√

2||v||2

)v e u+

(−2(v · (u− c)

)−√

2||v||2

)v,

que podem ser escritas como(u−

(v · (u− c)

)||v||2

v

)+

( √∆

2||v||2

)v e

(u−

(v · (u− c)

)||v||2

v

)−( √

2||v||2

)v,

que claramente sao vetores com coordenadas em I, todas representaveis com um mesmoradical

√∆.

57

Page 58: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 25 — Sejam C0 e C1 dois cırculos distintos cujas co-ordenadas dos centros e cujos raios sao todos elementos de F.

Entao ∂C0 ∩ ∂C1 ⊆a+ b

√c : a, b ∈ F

2 ⊆ I2 para algum c ∈ F, c ≥ 0.Ainda, existe um algoritmo que recebe como entrada seis elementos de F repre-sentando as coordenadas do centro e os raios de dois cırculos C0 e C1 distintos edevolve o conjunto (finito) ∂C0∩∂C1 atraves de uma representacao em que todasas coordenadas dos pontos no conjunto sao I-coordenadas representadas com ummesmo radical fazendo uso de no maximo um numero constante de operacoes docorpo F.

Prova — Como os cırculos C0 e C1 sao distintos, podemos assumir, sem perda de gene-ralidade, que seus centros sao distintos, pois do contrario seus raios nao podem ser iguaise logo a interseccao de suas fronteiras deve ser vazia.

Sejam entao c0, c1 ∈ R2 com c0 6= c1 os centros dos cırculos C0 e C1, respectivamente.Sejam tambem r0, r1 ∈ R os respectivos raios de C0 e C1. Considere entao a reta ` ⊆ R2

definida por

` =p ∈ R2 : 2(c1 − c0) · p = ||c1||2 − ||c0||2 + r2

0 − r21

.

Se um ponto p ∈ R2 esta na interseccao ∂C0 ∩ ∂C1 das fronteiras dos cırculos C0 e C1,entao vale que

||p− c0||2 = r20 ⇐⇒ ||p||2 − 2p · c0 + ||c0||2 = r2

0

⇐⇒ 2c0 · p = ||p||2 + ||c0||2 − r20

e

||p− c1||2 = r21 ⇐⇒ ||p||2 − 2p · c1 + ||c1||2 = r2

1

⇐⇒ 2c1 · p = ||p||2 + ||c1||2 − r21.

Subtraindo estas duas ultimas equacoes, temos que

2(c1 − c0) · p = ||c1||2 − ||c0||2 + r20 − r2

1,

ou seja, que p ∈ `. Portanto, ∂C0 ∩ ∂C1 ⊆ `.

Similarmente, pode-se mostrar que ∂C0 ∩ ` ⊆ ∂C1 e que ∂C1 ∩ ` ⊆ ∂C0. Assim, paraobter os pontos na interseccao (finita) ∂C0 ∩ ∂C1, basta intersectar a reta ` e a fronteirado cırculo C0 (ou C1).

Sejam entao u ∈ R2 um vetor dado por

u =||c1||2 − ||c0||2 + r2

0 − r21

2||c1 − c0||2(c1 − c0)

e v ∈ R2 \ 0 um vetor nao-nulo qualquer paralelo ao vetor c1 − c0. E simples entaoperceber que u ∈ ` e que u+tv ∈ ` para todo t ∈ R. Logo, podemos concluir, como v 6= 0,que ` = u+ tv : t ∈ R.

Se as coordenadas do centro e os raios de C0 e C1 sao todos elementos de F, segueclaramente que u, v ∈ F2. Assim, podemos usar o algoritmo obtido pela proposicao 24

58

Page 59: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

para computar estas interseccoes. Mais ainda, por causa desta proposicao, sabemosque todas as coordenadas dos pontos devolvidos sao representadas como I-coordenadaspartilhando um mesmo radical.

Proposicao 26 — Existe um algoritmo que recebe como entrada tres elemen-tos de F representando as coordenadas do centro e o raio de um cırculo C eum ponto p ∈ I2 cujas coordenadas sao I-coordenadas representadas com ummesmo radical e, fazendo uso de no maximo um numero constante de operacoesdo corpo F, decide se p e um elemento do interior de C, da fronteira de C ou se pnao pertence a C.

Prova — Trata-se de um simples exercıcio de geometria plana.

Proposicao 27 — Existe um algoritmo que recebe como entrada:• Seis elementos de F representando as coordenadas do centro e os raios de

dois cırculos C e D;• Um ponto u ∈ I2 com coordenadas representadas usando o mesmo radical;

e• Um ponto v ∈ I2 com coordenadas representadas usando o mesmo radical,

possivelmente distinto do radical das coordenadas de u,satisfazendo u, v ∈ ∂D e

(α \ u, v

)∩ ∂C = , onde α = arc(D, u, v), e decide

se (α \ u, v) ⊆ C ou se (α \ u, v) ⊆ R2 \ C fazendo uso de um numero nomaximo constante de operacoes do subcorpo real F.

Prova — Primeiramente, observe que como C e um conjunto fechado e α e umconjunto conexo, de fato exatamente uma das alternativas (α \ u, v) ⊆ C

ou (α \ u, v) ⊆ R2 \ C ocorre.

Note agora que, se u ∈ C ou v ∈ C, entao, pelo teorema do valor intermediario (te-orema 1) e como

(α \ u, v

)∩ ∂C = , devemos ter (α \ u, v) ⊆ C. Similarmente,

se u 6∈ C ou se v 6∈ C, devemos ter (α \ u, v) ⊆ R2 \ C. Portanto, podemos assumir,sem perda de generalidade, que u, v ∈ ∂C.

Seja agora γ : [0, 1]→ R2 a parametrizacao canonica de α, de modo que γ(0) = ue γ(1) = v, e seja tambem δ : R→ R2 a extensao periodica da parametrizacao canonicade C, de forma que existem valores reais t0, t1 ∈ R com 0 ≤ t0 < 1 e t0 < t1 < t0 + 1 taisque δ(t0) = u e δ(t1) = v. Denote tambem as derivadas de γ e δ, respectivamente, por γ′

e δ′.

Seja entao c = γ′(0)×δ′(t0). Se c = 0, temos que α e C sao tangentes em u. Mas entao De C tem apenas uma interseccao em comum, contradizendo u, v ∈ ∂C. Ja se c > 0 entao,em uma vizinhanca de u, o arco α deve estar fora de C. Mais precisamente, existeum ε ∈ R com ε > 0 tal que, para todo t ∈ R com 0 < t < ε, γ(t) 6∈ C. Deste modo somosforcados a concluir que (α \ u, v) ⊆ R2 \ C. Similarmente, se c < 0, em uma vizinhancade u, o arco α deve estar em C, ou, mais precisamente, existe um ε ∈ R com ε > 0 talque, para todo t ∈ R com 0 < t < ε, γ(t) ∈ C, de modo que (α \ u, v) ⊆ C.

Resta entao mostrar como computar c = γ′(0)× δ′(t0). Para isso, seja

ρπ2

: R2 → R2

(x, y) 7→ (−y, x)

59

Page 60: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

a transformacao de rotacao do plano por 90 graus em sentido anti-horario. Como aderivada de uma curva em um ponto e o sentido de uma reta tangente a curva naqueleponto e como retas tangentes a cırculos formam angulos retos entre o ponto de tangenciae o centro do cırculo, entao, sendo A ∈ R2 o centro de C e B ∈ R2 o centro de D,temos que δ′(t0) = ρπ

2(u − A) e γ′(0) = ρπ

2(u − B), pois as parametrizacoes γ e δ sao

em sentido anti-horario. Na verdade, tecnicamente, com o que dissemos, so podemosdeduzir que γ′(0) e δ′(t0) sao proporcionais a estes vetores. Porem, o calculo efetivodestas derivadas, o qual deixamos como exercıcio ao leitor, ira confirmar estes valores.

Note agora que δ′(t0) e γ′(0) sao ambos elementos de I2 (pois u ∈ I2) e todas as quatrocoordenadas de δ′(t0) e γ′(0) tem o mesmo radical (o radical comum as coordenadas de u).Logo, pela proposicao 23, podemos de fato computar c = γ′(0)× δ′(t0) fazendo o uso deum numero no maximo constante de operacoes do corpo F.

3.2 Enunciado do problema

Com o estudo da uniao de cırculos realizado na secao 3.3, podemos finalmente enunciaro problema da uniao de cırculos.

Problema 1 (uniao de cırculos) —• Entrada: Uma lista C0C1 · · ·Cn−1 de cırculos cujas coordenadas do centro

e cujos raios sao todos elementos de F. Para todo i ∈ 0, 1, . . . , n − 1,se (xi, yi) ∈ F2 e o centro de Ci e ri ∈ F e o raio de Ci, entao o cırculo Cisera representado pela tripla (xi, yi, ri) ∈ F3.• Saıda: Uma sequencia finita de arcos de circunferencia distintos cu-

jas orientacoes em sentido anti-horario formam uma boa representacaopara C0 ∪ C1 ∪ · · · ∪ Cn−1. Todos os arcos desta sequencia devem ser daforma arc(Ci, p, q) onde p, q ∈ ∂Ci ∩ I2 e i ∈ 0, 1, . . . , n − 1. Ainda, umtal arco sera representado pela tripla (i, p, q).

Resta ainda mostrar que o problema 1 sempre tem uma solucao. Porem, nossa provadepende de conceitos que serao vistos apenas na secao 3.3, de forma que adiamos estaprova ate o final desta secao.

3.3 Unioes de cırculos

O objetivo desta secao e realizar um estudo de algumas propriedades da uniao de cırculos.Uma vez estabelecidos estes resultados, a derivacao de um algoritmo para unir cırculos ebastante simples, bem como e a prova de que o problema 1 sempre admite uma solucao,que sera apresentada ao final desta secao.

Comecamos introduzindo o conceito de pontos chave de um conjunto de cırculos.

60

Page 61: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 54 — Seja C = C0, C1, . . . , Cn−1 um conjunto finito de cırculos (doisa dois distintos). Dizemos entao que os pontos chave de C sao os pontos noconjunto

K(C) =

(n−1⋃i=0

(xi − r, yi), (xi + r, yi)

)∪

(n−2⋃i=0

n−1⋃j=i+1

∂Ci ∩ ∂Cj

),

onde (xi, yi) e o centro de Ci e ri e o raio de Ci para todo i ∈ 0, 1, . . . , n− 1.

Se C e um conjunto finito de cırculos, entao os pontos chave de C particionam a fronteirade cada cırculo C em C em arcos de circunferencia, que chamaremos de arcos candidatos.Veremos, embora seja relativamente claro, que arcos candidatos distintos nao podem seintersectar exceto possivelmente em seus extremos.

A razao de nomearmos estes arcos desta forma e que, sendo U a uniao dos cırculosem C, iremos mostrar que cada arco candidato esta ou inteiramente contido na fronteirade U ou nao intersecta a fronteira de U exceto possivelmente em seus extremos. Ainda,demonstraremos nao so que a fronteira de U pode ser expressa como a uniao de algunsarcos candidatos, mas tambem que estes arcos com sua orientacao original formam umaboa representacao para o conjunto U .

Formalizamos agora nossa discussao.

Definicao 55 — Seja C um conjunto finito de cırculos. Para cada cırculo C ∈ C,seja p0, p1, . . . , pk−1 = K(C) ∩ ∂C, com C−1(pi) < C−1(pj) para todos i, j ∈ Ncom i < j < k. Pela definicao de K(C), temos claramente que k ≥ 2. De-notando p0 por pk, definimos os arcos candidatos de C em C como os arcosde circunferencia orientados −→arc(C, pi, pi+1) com i ∈ 0, 1, . . . , k − 1. Ainda,definimos os arcos candidatos de C como os arcos candidatos dos cırculos Cem C.

Proposicao 28 — Cada arco candidato de um conjunto finito de cırculos C eum arco candidato de apenas um cırculo em C.

Prova — Um arco candidato de um cırculo deve estar contido em sua fronteira. Assim,se dois cırculos possuem um mesmo arco candidato, eles devem ter um numero infinitode pontos comuns em suas fronteiras, o que mostra que eles devem ser, na verdade, omesmo cırculo.

Proposicao 29 — Seja C um conjunto finito de cırculos e se-jam α0 = −→arc(C0, p0, q0) e α1 = −→arc(C1, p1, q1) dois arcos candidatos distintosde C. Entao

arc(C0, p0, q0) ∩ arc(C1, p1, q1) ⊆ p0, q0, p1, q1.

Prova — Qualquer outro ponto em arc(C0, p0, q0)∩ arc(C1, p1, q1) seria um ponto chavede C e logo um dos arcos α0 ou α1 nao seria um arco candidato de C.

61

Page 62: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 56 — Um ponto chave p ∈ K(C) de um conjunto finito de cırculos Ce dito interno se existe algum cırculo em C que possui p em seu interior.

Mostramos agora nossos principais resultados sobre arcos candidatos.

Lema 3 — Seja α = −→arc(C, p, q) um arco candidato de um conjunto finitode cırculos C (com C ∈ C e p, q ∈ K(C)) e seja D ∈ C um cırculo em Ctal que existe ponto em arc(C, p, q) \ p, q que tambem esta no interior de D.Entao arc(C, p, q) \ p, q ⊆ D.

Prova — Note que o arco candidato α nao e um arco candidato do cırculo D,pois caso contrario ele deveria estar contido em ∂D. Logo, se existisse algum pontoem arc(C, p, q) \ p, q e ao mesmo tempo na fronteira de D, este ponto seria umponto chave, contradizendo α ser um arco candidato. Assim, o teorema do valor in-termediario (teorema 1) nos garante que arc(C, p, q) \ p, q ⊆ D.

Lema 4 — Seja C um conjunto finito de cırculos cuja uniao e U ⊆ R2 eseja p ∈ U. Entao existe um cırculo C ∈ C com p ∈ C ou existem tres cırculosdistintos em C contendo p em suas fronteiras.

Prova — Suponha que p 6∈ C para todo cırculo C em C. Seja entao ε ∈ R com ε > 0um valor real positivo tal que Bε(p) nao contenha pontos chave em K(C) diferentes de p enao intersecte nenhum cırculo em C que nao contenha p. Assim, como p ∈ U, a uniao doscırculos em C que contem p deve conter Bε(p). Porem, um tal cırculo C ∈ C contendo pdeve conter p em sua fronteira, pois p nao reside no interior de nenhum cırculo em C.Logo, devemos ter que

area(C ∩Bε(p)

)<

1

2

(areaBε(p)

).

Portanto, e necessario que existam em C ao menos tres cırculos distintos contendo p emsuas fronteiras.

Proposicao 30 — Seja α = −→arc(C, p, q) um arco candidato de um conjuntofinito de cırculos C (com p, q ∈ K(C)) e seja U a uniao dos cırculos em C.Entao se

(arc(C, p, q) \ p, q

)∩ U 6= , existe um cırculo D ∈ C tal

que arc(C, p, q) \ p, q ⊆ D.

Prova — De fato, tome um ponto x ∈(arc(C, p, q) \ p, q

)∩ U. Se existe al-

gum cırculo D ∈ C tal que x ∈ D, entao, pelo lema 3, arc(C, p, q) \ p, q ⊆ D,como querıamos. Ja se tal cırculo D nao existe, o lema 4 nos garante que existemcırculos D0, D1 ∈ C distintos tal que x ∈ ∂D0 ∩ ∂D1, de forma que x ∈ K(C), contradi-zendo α ser um arco candidato.

Corolario 6 — Seja α = −→arc(C, p, q) um arco candidato de um conjunto fi-nito de cırculos C (com p, q ∈ K(C)) e seja U a uniao dos cırculos em C. Entaoou arc(C, p, q) \ p, q ⊆ U ou arc(C, p, q) ⊆ ∂U . Ainda, arc(C, p, q)\p, q ⊆ U

se, e somente se, arc(C, p, q) \ p, q ⊆ D para algum cırculo D ∈ C.

62

Page 63: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Prova — Se(arc(C, p, q) \ p, q

)∩ U 6= , entao, pela proposicao 30,

existe um cırculo D ∈ C tal que arc(C, p, q) \ p, q ⊆ D ⊆ U. Do contrario,como arc(C, p, q) ⊆ U , devemos ter arc(C, p, q) ⊆ ∂U .

Para mostrar o resto do resultado, observe que se arc(C, p, q) \ p, q ⊆ D para algumcırculo D ∈ C, entao, como D ⊆ U, claramente arc(C, p, q) \ p, q ⊆ U. Ainda,se arc(C, p, q) \ p, q ⊆ U, entao certamente(

arc(C, p, q) \ p, q)∩ U 6= ,

de forma que, novamente pela proposicao 30, existe um cırculo D ∈ C talque arc(C, p, q) \ p, q ⊆ D.

Proposicao 31 — Seja C um conjunto finito de cırculos cuja uniao e U ⊆ R2.Entao o conjunto dos arcos candidatos de C que estao contidos em ∂U (comsuas respectivas orientacoes em sentido anti-horario) e uma boa representacao doconjunto U .

Prova — Mostraremos os tres fatos a seguir, que juntos formam uma demonstracao doresultado:

• Todo arco candidato α = −→arc(C, p, q) tal que arc(C, p, q) ⊆ ∂U e compatıvel com U ;

• Dois arcos candidatos α0 = −→arc(C0, p0, q0) e α1 = −→arc(C1, p1, q1) distintos taisque arc(C0, p0, q0) ⊆ ∂U e arc(C1, p1, q1) ⊆ ∂U devem sempre satisfazer

arc(C0, p0, q0) ∩ arc(C0, p0, q0) ⊆ p0, q0, p1, q1; e

• Todo ponto na fronteira de U esta em algum arco candidato contido na fronteirade U .

Para mostrar o primeiro fato, note que α e trivialmente compatıvel com C. Tome entaoum x ∈ arc(C, p, q) \ p, q. Como α e um arco candidato, x nao e um ponto chave.Ainda, nenhum outro cırculo em C pode conter C, de modo que existe um ε ∈ R

com ε > 0 tal que Bε(x) intersecta apenas o cırculo C dentre os cırculos em C. As-sim, Bε(x) ∩ U = Bε(x) ∩ C, de forma que este valor de ε e a escolha de x fazem αsatisfazer a definicao de compatibilidade com U .

O segundo fato e uma consequencia direta da proposicao 29.

Ja o terceiro fato pode ser demonstrado da seguinte forma. Seja x ∈ ∂U \ K(C) umponto na fronteira de U que nao e um ponto chave. Como a fronteira da uniao deconjuntos deve sempre estar contida na uniao das fronteiras dos conjuntos, existe al-gum cırculo C tal que x ∈ ∂C. Como x 6∈ K(C), existe um arco candidato daforma −→arc(C, p, q) com p, q ∈ ∂C ∩ K(C) tal que x ∈ arc(C, p, q). Pelo corolario 6, te-mos entao que arc(C, p, q) ⊆ ∂U , pois x 6∈ U.

Por outro lado, se x ∈ K(C), seja ε ∈ R com ε > 0 um valor real talque Bε(x) ∩ K(C) = x e tal que se um arco candidato intersecta Bε(x), entao eletem x como um de seus extremos (podemos escolher tal ε porque claramente x, sendoum ponto chave, so pode pertencer a arcos candidatos dos quais ele e um extremo).Usamos entao o fato de que a fronteira ∂U da uniao de cırculos em C nao possui pon-tos isolados. Logo, deve existir um ponto y ∈ Bε(x) com y 6= x e y ∈ ∂U . Como

63

Page 64: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

a fronteira de uma uniao deve estar contida na uniao das fronteiras, deve existir umcırculo C ∈ C com y ∈ ∂C. Sendo assim y deve estar em algum arco candidato arc(C, p, q)com p, q ∈ K(C) ∩ ∂C. Porem, como y ∈ Bε(x), pela nossa escolha de ε, x = p ou x = q.Mais ainda, como y 6∈ K(C), y 6= p e y 6= q, de forma que, como y 6∈ U, o corolario 6mostra que arc(C, p, q) ⊆ ∂U , como desejado.

Provamos agora que o problema 1 sempre admite uma solucao.

Proposicao 32 — O problema 1 sempre admite uma solucao.

Prova — Seja C o conjunto dos cırculos em uma entrada para o problema 1. A pro-posicao 31 mostra que um subconjunto dos arcos candidatos de C constitui uma boarepresentacao da uniao dos cırculos em C quando orientados em sentido anti-horario.Ainda, cada arco candidato e da forma arc(C, p, q) com C ∈ C e p, q ∈ ∂C ∩ I2 peladefinicao 55 e pela proposicao 25.

3.4 Um algoritmo ingenuo

O corolario 6 e a proposicao 31 tornam imediato o desenvolvimento do algoritmo 2,que computa uma boa representacao para a fronteira da uniao de cırculos. Nesta secaoiremos explicar varios detalhes da implementacao deste algoritmo, mostrar sua correcaoe analisar sua complexidade.

As seguintes consideracoes sao importantes ao implementar o algoritmo 2:

• Na linha 1 do algoritmo, devemos remover cırculos repetidos da lista L obtendo umconjunto de cırculos. Como os cırculos na entrada sao representados como triplasde elementos de F, como triplas diferentes dao origem a cırculos diferentes e comotemos uma rotina para comparar elementos de F, podemos fazer isso com umasimples ordenacao lexicografica;

• Ainda na linha 1, por motivos que ficarao claros adiante, e necessario manter,para cada cırculo Ci no conjunto C (com i ∈ 0, 1, . . . , n − 1), um ındice φide uma posicao em que Ci estava na lista L. Mais precisamente, se, no inıciodo algoritmo, L = C ′0C

′1 · · ·C ′m−1, entao, para todo i ∈ 0, 1, . . . , n − 1, devemos

ter Ci = C ′φi . Como obter estes ındices e um exercıcio padrao de ordenacao;

• Na linha 5 inicializamos conjuntos Ki para cada i ∈ 0, 1, . . . , n − 1. Devemosrepresentar estes conjuntos com estruturas de dados que permitam insercao emtempo constante (amortizado) e que consumam espaco linear, como por exemplolistas ligadas ou vetores dinamicos;

• Na linha 15 pedimos que o algoritmo realize uma ordenacao relativamente com-plicada do conjunto Ki para algum i ∈ 0, 1, . . . , n − 1. Para fazer isso, separa-mos nossa lista representando Ki nas listas A e B da seguinte forma: para cadaponto (x, y) em nossa lista representando Ki, se y > yi ou se y = yi e x > xi,entao inserimos (x, y) em A e, do contrario, em B. A razao disso e que podemosordenar os pontos em A (removendo eventuais duplicatas) de acordo com a ordem

induzida pela funcao Ci|−1[0,1) simplesmente ordenando-os em ordem (estritamente)

64

Page 65: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Algorithm 2 Naıve-Union-of-Circles (L)

Pre-condic~ao: L e uma entrada para o problema 1Efeito: devolve a saıda para o problema 1 correspondente a instancia L como uma

co-rotina1: Remova as duplicatas da lista L obtendo um conjunto de cırculos

C = C0, C1, . . . , Cn−1.

2: for i from 0 to n− 1 do

3: Seja (xi, yi) o centro de Ci.4: Seja ri o raio de Ci.5: Ki ←

(xi − r, yi), (xi + r, yi)

6: done

7: for i from 1 to n− 1 do

8: for j from 0 to i− 1 do

9: K ← ∂Ci ∩ ∂Cj10: Ki ← Ki ∪K11: Kj ← Kj ∪K12: done

13: done

14: for i from 0 to n− 1 do

15: Ordene Ki em p0p1 · · · pk−1 com Ci|−1[0,1)(p0) < Ci|−1

[0,1)(p1) < · · · < Ci|−1[0,1)(pk−1).

16: pk ← p0

17: for a from 0 to k − 1 do

18: internal ← false

19: for j from 0 to n− 1 do

20: if(arc(Ci, pa, pa+1) \ pa, pa+1

)⊆ Cj then

21: internal ← true

22: break

23: endif

24: done

25: if not internal then26: yield arc(Ci, pa, pa+1)27: endif

28: done

29: done

65

Page 66: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

decrescente de abscissa. Similarmente os pontos em B podem ser ordenados em or-dem (estritamente) crescente de abscissa. Ao final podemos concatenar a ordenacaode A com a ordenacao de B e produzir a ordenacao desejada para Ki;

• O teste feito na linha 20 pode ser implementado atraves do algoritmo descrito naproposicao 27; e

• Na linha 26, devemos produzir um arco de circunferencia, mais precisamenteo arco arc(Ci, pa, pa+1). A representacao computacional deste arco envolve umındice do cırculo Ci na lista da entrada, e por isso previamente computamos φipara i ∈ 0, 1, . . . , n− 1. Assim podemos produzir a representacao computacio-nal (φi, pa, pa+1).

Com estes detalhes esclarecidos, passamos entao a demonstrar este algoritmo correto.

Teorema 5 — O algoritmo 2 corretamente resolve o problema 1.

Prova — E simples mostrar que ao termino do laco da linha 7, paracada i ∈ 0, 1, . . . , n− 1, o conjunto Ki sera exatamente o conjunto K(C) ∩ ∂Ci.

Portanto, por construcao, a linha 18 sera executada exatamente uma vez para cada arcocandidato e, em cada uma destas vezes, −→arc(Ci, pa, pa+1) sera um arco candidato distinto.

No laco da linha 19, procuramos um cırculo Cj (com j ∈ 0, 1, . . . , n − 1) talque

(arc(Ci, pa, pa+1) \ pa, pa+1

)⊆ Cj . Ao final deste laco, a variavel internal sera ver-

dadeira se, e somente se, um tal cırculo existir. Na verdade, pelo corolario 6, a variavelinternal sera falsa se, e somente se, arc(Ci, pa, pa+1) ⊆ ∂U , onde U e a uniao dos cırculosem C.

Assim, a linha 26 ira produzir como saıda exatamente os arcos candidatos contidos nafronteira da uniao, cada um exatamente uma vez.

Portanto, pela proposicao 31, o algoritmo produz como saıda uma boa representacao doconjunto U .

Resta analisar a complexidade do algoritmo 2. Como foi discutido na secao 1.5, sepudermos calcular a complexidade algebrica de nosso algoritmo e mostrar que ele e alge-bricamente tratavel, imediatamente teremos um limite superior para a real complexidadedele.

Lema 5 — O algoritmo 2, quando executado em uma lista de m cırculos comexatamente n cırculos distintos, possui complexidades algebricas O(m logm+n3)de tempo e O(m+ n2) de espaco.

Prova — A ordenacao feita na primeira linha do algoritmo possui complexidadesalgebricas O(m logm) de tempo e O(m) de espaco. Portanto, basta mostrar que o res-tante do algoritmo possui complexidades algebricas O(n3) de tempo e O(n2) de espaco.

De fato, as linhas 10 e 11 sao executadas O(n2) vezes, de modo que

n−1∑i=0

|Ki| ∈ O(n2).

66

Page 67: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Como Ki (com i ∈ 0, 1, . . . , n − 1) sao as unicas estruturas de dados adicionais norestante deste algoritmo, sua complexidade algebrica de espaco e (a menos da primeiralinha) O(n2), como querıamos mostrar.

Ainda, pelo que acabamos de ver, existem O(n2) arcos candidatos a serem testados nolaco da linha 19. Este laco possui no maximo n iteracoes, de forma que a complexidadealgebrica de tempo do algoritmo (com excecao da primeira linha) e O(n3), tambem comoquerıamos mostrar.

Lema 6 — O algoritmo 2 e algebricamente tratavel.

Prova — Antes de comecarmos propriamente esta demonstracao, recomendamos ao lei-tor a leitura da secao 1.5, onde esta definido o conceito de nıvel de complexidade algebrica.A razao disso e que esta demonstracao consiste essencialmente em se inspecionar o “codigofonte” do algoritmo, linha a linha, e mostrar que existe um limite superior para os nıveisde complexidade algebrica gerados naquela linha.

Mais precisamente, dizemos que uma expressao do algoritmo e algebricamente tratavel,ou simplesmente tratavel, se existir um numero natural maior do que todos os nıveisde complexidade algebrica de valores correspondentes a elementos de F computados oupresentes naquela expressao em qualquer que seja a entrada do algoritmo. Tambemdizemos que uma linha do algoritmo e tratavel se todas as expressoes daquela linha saotrataveis. Observe que expressoes envolvendo apenas elementos da entrada (e as operacoesbasicas) sao sempre trataveis, pois o nıvel de complexidade algebrica de elementos daentrada e 0.

Como anunciamos anteriormente, inspecionamos agora cada linha do codigo do algo-ritmo 2:

• Linha 1: durante a ordenacao feita nesta linha, nenhum novo valor em F e compu-tado, pois os elementos da entrada sao apenas comparados;

• Linha 2: nao envolve elementos de F;

• Linhas 3 e 4: apenas copiam elementos de F;

• Linha 5: como xi, yi e r sao trataveis (pois estao na entrada), temosque xi − r, xi + r e, obviamente, yi sao todos trataveis;

• Linha 6: possui apenas sintaxe;

• Linhas 7 e 8: nao envolvem elementos de F;

• Linha 9: como Ci e Cj sao trataveis (pois estao na entrada), a proposicao 25 nosgarante que o conjunto (finito) K = ∂Ci ∩ ∂Cj sera tratavel;

• Linhas 10 e 11: apenas inserem elementos de F em estruturas de dados. Porem,observe que como K e tratavel, por inducao podemos provar que, ao final do lacodas linhas 7 a 13, os conjuntos Ki serao trataveis para todo i ∈ 0, 1, . . . , n− 1;

• Linhas 12 e 13: possuem apenas sintaxe;

• Linha 14: nao envolve elementos de F;

67

Page 68: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• Linha 15: note que como descrevemos nos detalhes de implementacao do algoritmo,nesta linha nao e necessario utilizar operacoes de elementos de F alem das com-paracoes. Observe tambem que como cada Ki e tratavel para i ∈ 0, 1, . . . , n− 1,entao pa e tratavel para cada a ∈ 0, 1, . . . , k, pois p0, p1, . . . , pk−1 e uma per-mutacao dos elementos de Ki;

• Linha 16: apenas copia (define) um elemento de F;

• Linhas 17, 18 e 19: nao envolvem elementos de F;

• Linha 20: como Ci e Cj sao trataveis por estarem na entrada e, como visto anteri-ormente, pa e tratavel para todo a ∈ 0, 1, . . . , k, a proposicao 27 nos garante quetodos os valores de F calculados nesta linha sao trataveis;

• Linha 21: nao envolve elementos de F;

• Linhas 22, 23 e 24: possuem apenas sintaxe;

• Linha 25: nao envolve elementos de F;

• Linha 26: apenas copia (para a saıda) elementos de F; e

• Linhas 27, 28 e 29: possuem apenas sintaxe.

Assim, devemos concluir que todas as expressoes no algoritmo sao trataveis e, logo,que existe um numero natural maior do que todos os nıveis de complexidade algebricade valores computados no algoritmo em qualquer entrada. Portanto, o algoritmo 2 ealgebricamente tratavel.

Teorema 6 — Existem constantes k0, k1 ∈ N tais que o algoritmo 2, quandoexecutado com uma lista de m ≥ 2 cırculos contendo exatamente n cırculosdistintos e tal que o numero maximo de bits em uma representacao computacionalde um elemento de F e B, possui complexidades O

((m logm+n3)Bk0

)de tempo

e O((m+ n2)Bk1

)de espaco.

Prova — Consequencia direta dos lemas 5 e 6 e do que foi discutido na secao 1.5.

3.5 O algoritmo de Brown

Em 1980, Brown apresentou em sua tese de doutorado [11] o primeiro algoritmo essen-cialmente otimo da literatura para computar a uniao de cırculos. Esta, no entanto, eapenas uma das muitas contribuicoes desta tese para a area de geometria computacional.

O tema central da tese de Brown e o uso de transformacoes geometricas para reduzirproblemas de geometria computacional a outros problemas conhecidos. Portanto, nao esurpreendente que o algoritmo la desenvolvido use uma transformacao geometrica parareduzir o problema de computar a uniao de cırculos a outros problemas que ja possuemsolucao eficiente.

Nesta secao fazemos um estudo breve do algoritmo de Brown, mas antes estudamos atransformacao usada por ele para reduzir o problema.

68

Page 69: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 57 — Seja d ∈ N uma dimensao e seja p ∈ Rd um ponto no espacoreal d-dimensional. Definimos entao a transformacao de inversao de centro pem Rd como a funcao

φp : Rd \ p → Rd

q 7→ p+q − p||q − p||2

.

Estudamos agora algumas propriedades essenciais das transformacoes de inversao para oalgoritmo de Brown.

Proposicao 33 — Seja d ∈ N uma dimensao e seja p ∈ Rd um ponto noespaco real d-dimensional. Entao, para todo ponto q ∈ Rd \ p, φp(q) 6= pe φp

(φp(q)

)= q.

Prova — Como q 6= p, temos que q − p 6= 0, de forma que

φp(q) = p+q − p||q − p||2

6= p.

Ainda, temos que

φp(φp(q)

)= p+

φp(q)− p||φp(q)− p||2

= p+

p+q − p||q − p||2

− p∣∣∣∣∣∣∣∣p+q − p||q − p||2

− p∣∣∣∣∣∣∣∣2

= p+

q − p||q − p||2∣∣∣∣∣∣∣∣ q − p||q − p||2

∣∣∣∣∣∣∣∣2

= p+

q − p||q − p||21/||q−p||2

= p+ q − p= q,

como querıamos.

Corolario 7 — Seja d ∈ N uma dimensao e seja p ∈ Rd um ponto no espacoreal d-dimensional. Entao φp e uma bijecao de Rd \ p em Rd \ p.

Prova — Sejam x, y ∈ Rd \ p tais que φp(x) = φp(y). Entao, pela proposicao 33,

x = φp(φp(x)

)= φp

(φp(y)

)= y,

o que mostra que φp e injetiva.

69

Page 70: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Escolha entao um y ∈ Rd \ p. Temos, ainda pela proposicao 33, que

φp(φp(y)

)= y,

o que mostra que φp e sobrejetiva e, portanto, bijetiva.

Proposicao 34 — Seja d ∈ N uma dimensao, seja p ∈ Rd um ponto no espacoreal d-dimensional e seja X ⊆ Rd \ p. Entao

φp(∂X \ p

)=(∂φp(X)

)\ p.

Prova — Imediato do corolario 1 quando consideramos Ω0 = Ω1 = R2 \ p.

Proposicao 35 — Seja d ∈ N uma dimensao, seja p ∈ Rd um ponto no espacoreal d-dimensional e seja ∆ ∈ Rd um vetor de deslocamento. Entao, para todoponto q ∈ Rd \ p,

φp+∆(q + ∆) = φp(q) + ∆.

Prova — Temos que

φp+∆(q + ∆) = p+ ∆ +(q + ∆)− (p+ ∆)

||(q + ∆)− (p+ ∆)||2= p+

q − p||q − p||2

+ ∆ = φp(q) + ∆,

como desejado.

Proposicao 36 — Seja d ∈ N uma dimensao, seja p ∈ Rd um ponto no espacoreal d-dimensional e seja T : Rd → Rd uma transformacao linear tal que, paratodo ponto x ∈ Rd, ||T (x)|| = ||x||. Entao, para todo ponto q ∈ Rd \ p,

φp(p+ T (q − p)

)= p+ T

(φp(q)− p

).

Prova — Temos que,

φp(p+ T (q − p)

)= p+

p+ T (q − p)− p||p+ T (q − p)− p||2

= p+T (q − p)||T (q − p)||2

= p+T (q − p)||q − p||2

= p+ T

(q − p||q − p||2

)= p+ T

(p+

q − p||q − p||2

− p)

= p+ T(φp(q)− p

),

como querıamos.

A transformacao de inversao e bastante conhecida entre os cartografos, pois a imagem dafronteira de uma esfera (em tres dimensoes) menos um ponto por uma transformacao de

70

Page 71: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

inversao centrada neste ponto e um plano que nao contem o ponto. Este metodo podeser usado para produzir mapas, isto e, mapear a superfıcie de uma esfera em um plano.A seguir mostramos uma variante deste resultado.

Proposicao 37 — Seja d ∈ N uma dimensao e seja p ∈ Rd um ponto no espacoreal d-dimensional. Entao, para toda bola aberta B tal que p ∈ ∂B, existe umsemi-espaco aberto H ⊆ Rd tal que φp(B) = H e φp

(∂B \ p

)= ∂H.

Prova — Sejam c ∈ Rd e r ∈ R o centro e o raio, respectivamente, da bola B, deforma que B = Br(c). Note que 2c − p 6= p, pois do contrario 2c = 2p e c = p,contradizendo p ∈ ∂B. Logo, podemos definir o semi-espaco aberto

H =q ∈ Rd :

(q − φp(2c− p)

)· (c− p) > 0

,

onde “·” denota o produto interno de vetores. Observe que a restricao sobre q ∈ Rd

que define H e uma restricao linear e estrita, de forma que H e de fato um semi-espacoaberto.

Comecamos entao calculando

φp(2c− p) = p+2c− p− p||2c− p− p||2

= p+2(c− p)||2(c− p)||2

= p+2(c− p)

4||c− p||2

= p+c− p2r2

,

pois claramente a distancia entre p e c e o raio r. Assim,

H =

q ∈ Rd :

((q − p)− c− p

2r2

)· (c− p) > 0

,

=

q ∈ Rd : (q − p) · (c− p)− (c− p)(c− p)

2r2> 0

,

=

q ∈ Rd : (q − p) · (c− p) > 1

2

,

pois (c− p) · (c− p) e igual a ||c− p||2 = r2.

Note agora que p 6∈ H, pois (p− p) · (c− p) = 0. Assim,

φp(H) = φp

(q ∈ Rd \ p : (q − p) · (c− p) > 1

2

)

=

φp(q) : q ∈ Rd \ p ∧ (q − p) · (c− p) > 1

2

=

q ∈ Rd \ p :

(φp(q)− p

)· (c− p) > 1

2

,

71

Page 72: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

pois a funcao φp e a inversa de si propria. Logo,

φp(H) =

q ∈ Rd \ p :

(p+

q − p||q − p||2

− p)· (c− p) > 1

2

=

q ∈ Rd \ p :

q − p||q − p||2

· (c− p) > 1

2

=

q ∈ Rd \ p :

(q − c) + (c− p)∣∣∣∣(q − c) + (c− p)∣∣∣∣2 · (c− p) > 1

2

=

q ∈ Rd \ p : 2

((q − c) + (c− p)

)· (c− p) >

∣∣∣∣(q − c) + (c− p)∣∣∣∣2

=q ∈ Rd \ p : 2(q − c) · (c− p) + 2(c− p) · (c− p) >

∣∣∣∣(q − c) + (c− p)∣∣∣∣2

=q ∈ Rd \ p : 2(q − c) · (c− p) + 2r2 > ||q − c||2 + 2(q − c) · (c− p) + ||c− p||2

=

q ∈ Rd \ p : 2r2 > ||q − c||2 + ||c− p||2

=

q ∈ Rd \ p : 2r2 > ||q − c||2 + r2

=

q ∈ Rd \ p : ||q − c||2 < r2

=

q ∈ Rd \ p : ||q − c|| < r

= Br(c) \ p= B,

pois p ∈ ∂B de forma que p 6∈ B. Em suma, φp(H) = B e, como φp e sua propriainversa, H = φp(B).

Para completar a demonstracao, tome Ω0 = Ω1 = Rd\p e aplique o corolario 1, obtendo

φp(∂B \ p) = ∂φp(B) \ p = ∂H \ p = ∂H,

pois p 6∈ ∂H ja que (p− p) · (c− p) = 0.

Com isto ja estamos aptos a descrever o algoritmo de Brown. Este algoritmo recebe comoentrada uma lista de cırculos e remove dela cırculos repetidos obtendo um conjunto C decırculos. Antes de descrever o resto do algoritmo, no entanto, vamos nos concentrar nocaso particular em que existe um ponto p ∈ R2 tal que p ∈ ∂C para todo cırculo C ∈ C.

Primeiramente consideramos o conjunto B das bolas abertas correspondentes aos cırculosem C. Em vez de nos focarmos em obter a uniao dos cırculos em C, vamos nos focarem obter a uniao das bolas abertas em B. Para isso, consideramos o conjunto H dossemiplanos abertos que sao a imagem de bolas abertas em B atraves da transformacaode inversao φp.

Note que ⋃H∈H

H =⋃B∈B

φp(B) = φp

(⋃B∈B

B

).

Portanto, se pudermos computar a uniao dos semiplanos em H ou, mais precisamente,quais subconjuntos (conexos) das fronteiras dos semiplanos emH fazem parte da fronteiradesta uniao, podemos, pela proposicao 34, saber quais partes das fronteiras das bolas em B

72

Page 73: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

fazem parte da fronteira da uniao destas bolas, obtendo uma boa representacao para estauniao, que e tambem uma boa representacao para a uniao dos cırculos.

Note agora que

( ⋃H∈H

H

)= ∂

(R2 \

( ⋂H∈H

R2 \H

))= ∂

( ⋂H∈H

R2 \H

).

Como R2 \H e um semiplano (fechado), resta computarmos a interseccao de semiplanosfechados. O proprio Brown, em sua tese de doutorado [11], trata este problema e mostraque ele pode ser resolvido com complexidades algebricas O(n log n) de tempo e O(n) deespaco, onde n e o numero de semiplanos e, logo, o numero de cırculos.

Mas e se nao existir um ponto no plano comum a todas as fronteiras de cırculos naentrada? Neste caso usa-se um truque interessante: considerar os cırculos do conjuntocomo cırculos em um plano no espaco. Mais precisamente, definimos o conjunto

C ′ =(x, y, 0) : (x, y) ∈ C : C ∈ C

das versoes espaciais dos cırculos na entrada do algoritmo e escolhemos um ponto qual-quer p ∈ R3 cuja terceira coordenada seja diferente de 0, ou seja, um ponto fora do planoem que os “cırculos” em C ′ residem.

Vamos mostrar agora que, para cada “cırculo” C ′ em C ′, existe uma bola aberta quecontem o ponto p em sua fronteira e cuja interseccao com o plano onde os elementos de C ′residem e C ′.

Proposicao 38 — Seja C ⊆ R2 um cırculo, seja p = (x1, y1, z1) ∈ R3 com z1 6= 0um ponto no espaco e seja C ′ =

(x, y, 0) : (x, y) ∈ C

a versao espacial

do cırculo C. Entao existe uma bola aberta B ⊆ R3 tal que p ∈ ∂B e talque

(x, y, 0) : (x, y, 0) ∈ B

= C ′.

Prova — Seja (x0, y0) ∈ R2 o centro do cırculo C e seja r ∈ R com r > 0 o raio docırculo C. Defina entao z ∈ R por

z =(x1 − x0)2 + (y1 − y0)2 + z2

1 − r2

2z1

(note que z1 6= 0) e seja B ⊆ R3 a bola aberta

B = B√r2+z2

((x0, y0, z)

).

Note entao que∣∣∣∣p− (x0, y0, z)∣∣∣∣2 =

∣∣∣∣(x1, y1, z1)− (x0, y0, z)∣∣∣∣2

=∣∣∣∣(x1 − x0, y1 − y0, z1 − z)

∣∣∣∣2= (x1 − x0)2 + (y1 − y0)2 + (z1 − z)2

= (x1 − x0)2 + (y1 − y0)2 + z21 − 2z1z + z2

= (x1 − x0)2 + (y1 − y0)2 + z21 − 2z1

(x1 − x0)2 + (y1 − y0)2 + z21 − r2

2z1

+ z2

= (x1 − x0)2 + (y1 − y0)2 + z21 − (x1 − x0)2 − (y1 − y0)2 − z2

1 + r2 + z2

= r2 + z2

73

Page 74: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

(pois z1 6= 0), de forma que p ∈ ∂B.

Seja entao (x, y) ∈ R2 um ponto qualquer do plano. Para concluir a demonstracao,devemos mostrar que (x, y) ∈ C se, e somente se, (x, y, 0) ∈ B. Porem,

(x, y, 0) ∈ B ⇐⇒∣∣∣∣(x, y, 0)− (x0, y0, z)∣∣∣∣2 < r2 + z2 ⇐⇒∣∣∣∣(x− x0, y − y0,−z)∣∣∣∣2 < r2 + z2 ⇐⇒

(x− x0)2 + (y − y0)2 + z2 < r2 + z2 ⇐⇒(x− x0)2 + (y − y0)2 < r2 ⇐⇒

(x, y) ∈ C,

como querıamos.

A ideia e entao definir B como o conjunto das bolas obtidas tal como na proposicao 38em relacao aos “cırculos” em C ′. Se pudermos, de alguma forma, computar a uniao dasbolas em B, podemos intersecta-la com o plano dos pontos de terceira coordenada 0 paraobter a uniao dos interiores dos cırculos em C.

Sabemos que a descricao destas ultimas etapas e um pouco confusa, pois nao tratamosneste trabalho de unioes de bolas tridimensionais (ou mesmo esferas). Por isso, vamosdeixar os detalhes de como representar esta tal uniao de lado e nos concentrar no fato deque, teoricamente, com esta uniao podemos obter a resposta do problema intersectando-acom o plano onde residem os elementos de C ′.

Similarmente ao caso anterior, definimos o conjunto H =φp(B) : B ∈ B

dos semi-

espacos associados pela transformacao de inversao a cada uma das bolas em B. Novamentetemos ⋃

H∈H

H =⋃B∈B

φp(B) = φp

(⋃B∈B

B

).

Logo, considerando a nossa proposital desatencao aos detalhes, basta computar a uniaodos semiplanos em H.

Tambem similarmente ao que fizemos antes, notamos que⋃H∈H

H = R3 \

( ⋂H∈H

R3 \H

).

Assim, este problema recai, tambem de forma similar, no problema de computar inter-seccoes de semi-espacos tridimensionais fechados. Brown, ainda em sua tese de douto-rado, demonstra que e possıvel resolver este problema novamente com complexidadesalgebricas O(n log n) de tempo e O(n) de espaco, onde n e o numero de semi-espacos, ouseja, o numero de cırculos na entrada.

3.6 O algoritmo de Imai, Iri e Murota

Nesta secao descrevemos o algoritmo mais elegante deste trabalho, desenvolvido por Imai,Iri e Murota em [19] como uma melhoria do algoritmo descrito em [23]. Contudo, em

74

Page 75: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

contraste com a maior parte deste trabalho, nao faremos uma descricao formal destealgoritmo, pois ela envolveria varios conceitos sofisticados e complicados de formalizar.Em vez disso apresentamos as principais ideias por tras deste algoritmo intuitivamente edirecionamos os leitores mais interessados aos trabalhos previamente citados.

Suponha entao que nos e dado um conjunto C = C0, C1, . . . , Cn−1 de cırculos no planoonde, para todo i ∈ 0, 1, . . . , n− 1, ci = (xi, yi) e o centro e ri e o raio do cırculo Ci. Oalgoritmo de Imai, Iri e Murota entao computa a uniao

U =n−1⋃i=0

Ci

dos cırculos em C com complexidades algebricas O(n log n) de tempo e O(n) de espaco.

Didaticamente falando, e melhor iniciar explicando este algoritmo no caso particular emque todos os raios sao iguais, ou seja, no caso em que r0 = r1 = · · · = rn−1. Ob-serve que, neste caso, todos os centros c0, c1, . . . , cn−1 dos cırculos em C sao distintos.Assim, a chave do algoritmo e considerar o diagrama de Voronoi [6] do conjunto depontos c0, c1, . . . , cn−1.

Lembramos que este diagrama de Voronoi e, essencialmente, uma particao do plano emconjuntos V0,V1, . . . ,Vn−1, onde, para cada i ∈ 0, 1, . . . , n−1, Vi, tambem denominadoa i-esima celula de Voronoi, e o conjunto dos pontos no plano que possuem o ponto cicomo um dos pontos mais proximos dentre os pontos c0, c1, . . . , cn−1. Mais formalmente,

Vi =p ∈ R2 : ||p− ci|| ≤ ||p− cj||,∀j ∈ 0, 1, . . . , n− 1

.

Se olharmos a definicao de Vi com mais cuidado, perceberemos que este e o con-junto dos pontos do plano que satisfazem n − 1 restricoes. Nominalmente, paracada j ∈ 0, 1, . . . , n− 1 \ i, um ponto p ∈ Vi deve satisfazer ||p− ci|| ≤ ||p− cj||.Esta restricao, no entanto, e uma restricao linear. A mediatriz do segmento cicj (noteque ci 6= cj) e precisamente o conjunto de pontos no plano que distam o mesmo de ci e cj,de forma que os pontos p do plano que satisfazem a restricao sao exatamente os pontosem cima desta mediatriz ou no semiplano determinado por ela que contem ci.

O conjunto Vi e, portanto, uma interseccao finita de semiplanos fechados. Tecnicamentedizemos que Vi e um politopo emR2. Porem, como todos estes semiplanos devem conter ciem seu interior (pois os centros dos cırculos sao todos distintos), o politopo Vi nunca eseveramente degenerado. Existem, na verdade, tres casos para a “forma” de Vi:

• Vi e o proprio plano R2 quando existe apenas um cırculo na entrada;

• Vi e um polıgono convexo; ou

• Vi e um conjunto ilimitado relativamente difıcil de se descrever.

E por causa deste ultimo caso que muitas vezes um retangulo (fechado) R contendo todosos cırculos em C em seu interior e considerado. Neste caso a interseccao Vi∩R e sempre umpolıgono convexo (podendo ser o proprio retangulo R), o que e um fato muito mais simplesque admite uma elementar demonstracao por inducao. Inclusive, quando consideramos,nesta secao, um algoritmo para computar este diagrama de Voronoi, usamos este truquepara representar computacionalmente sua saıda. Porem, em geral, esta nao e a formamais elegante de tratar este conjunto computacionalmente.

75

Page 76: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

A principal ideia por tras do algoritmo de Imai, Iri e Murota e, traduzida para estecaso particular que estamos tratando, observar que, na celula Vi, a uniao dos cırculoscoincide com o cırculo Ci ou, mais precisamente, U ∩ Vi = Ci ∩ Vi. Para demons-trar este fato, primeiro observe que Ci ⊆ U e que, logo, Ci ∩ Vi ⊆ U ∩ Vi. Restaentao mostrar que U ∩ Vi ⊆ Ci ∩ Vi. De fato, seja p ∈ U ∩ Vi. Como p ∈ U ,existe algum j ∈ 0, 1, . . . , n− 1 tal que p ∈ Cj, ou seja, ||p− cj|| ≤ rj. Porem,como p ∈ Vi, ||p− ci|| ≤ ||p− cj|| ≤ rj = ri, de modo que p ∈ Ci. Ainda, como p ∈ Vi,segue que p ∈ Ci ∩ Vi. Vale a pena notar que aqui usamos fortemente o fato de todos osraios dos cırculos serem iguais.

Observe tambem que, se R e um retangulo (fechado) contendo todos os cırculos de C emseu interior, entao, como U ∩ Vi = Ci ∩ Vi,

U ∩ (Vi ∩R) = (U ∩R) ∩ (Vi ∩R)

= (U ∩ Vi) ∩R= (Ci ∩ Vi) ∩R= (Ci ∩R) ∩ (Vi ∩R)

= Ci ∩ (Vi ∩R).

Com isso, segue que ∂U ∩ (Vi∩R) = ∂Ci∩ (Vi∩R). A proposicao 31 nos mostra que Upode ser bem representado por um numero finito de arcos de circunferencia orientados.Juntamente com o fato de que ∂(Vi ∩R) e a uniao de um numero finito de segmentosde reta, segue que ∂U ∩ ∂(Vi ∩R) e um conjunto finito. Assim, para obter uma boarepresentacao para U , basta determinar os arcos de circunferencia em ∂Ci ∩ (Vi ∩ R)

para cada i ∈ 0, 1, . . . , n− 1. Porem, isto pode ser feito em tempo linear no numero dearestas do polıgono convexo Vi∩R. Essencialmente basta achar a interseccao da fronteirade um cırculo com a de um polıgono convexo contendo seu centro, o que e relativamentesimples.

Resta apenas uma questao: sendo a complexidade (algebrica de tempo) deste algoritmoproporcional as somas dos numeros de arestas (ou vertices) nos polıgonos Vi ∩ R, comomostramos que esta soma e O(n log n)?

Na verdade, e um resultado padrao de diagramas de Voronoi que esta soma e inclu-sive O(n). Uma forma de demonstrar isso consiste em notar uma estrutura com-binatoria interessante que ainda nao exploramos. Trata-se do grafo G = (V,E)onde V = 0, 1, . . . , n− 1 e E e o conjunto das arestas i, j tais que Vi ∩ Vj e umconjunto infinito. Alternativamente, podemos definir o conjunto E como o conjunto dasarestas i, j tais que existe uma aresta de Vi ∩ R contida em uma aresta de Vj ∩ R ouvice-versa. De qualquer forma, o ponto importante e que o grafo G e planar, e esta inclu-sive fortemente relacionado com o que chamamos de uma triangulacao de Delaunay [14,capıtulo 9].

Para mostrar que G e planar, precisamos apresentar um mapeamento (“embedding”)de G no plano. A cada vertice i de G, associamos entao o ponto ci e a cada aresta i, jde G, associamos o segmento de reta cicj. Resta entao mostrar que dois tais segmentosnunca se cruzam ou estao sobrepostos. Esta demonstracao e extremamente tecnica, noentanto, e orientamos o leitor interessado a consultar [5].

O fato de G ser planar e extremamente relevante, pois, em todo grafo planar com pelo me-

76

Page 77: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

nos tres vertices, o numero de arestas nunca e superior a tres vezes o numero de verticesmenos seis. Em nosso caso particular, |V | = n e, portanto, |E| ∈ O(n). Porem, a menosde possıveis degeneracoes, |E| e justamente metade do total de arestas nos polıgonos con-vexos Vi∩R com i ∈ 0, 1, . . . , n−1 que nao estao contidas em arestas do retangulo R. Seuma verificacao mais detalhada for conduzida, mesmo com as mencionadas degeneracoese incluindo as arestas contidas em arestas de R, conclui-se que este total de arestas e defato O(n).

Assim, toda a parte que discutimos ate entao e na verdade linear. O fator O(n log n) vemdo algoritmo para computar o diagrama de Voronoi em si. Um algoritmo extremamenteelegante para fazer isso e o algoritmo de Fortune [17].

Passamos agora a tratar do caso geral em que os raios dos cırculos em C nao sao ne-cessariamente identicos. Neste caso nao necessariamente e verdade que os centros doscırculos sao todos distintos. Contudo, podemos, sem perda de generalidade, descartar daentrada cırculos contidos em outros cırculos na entrada, uma vez que a uniao e preser-vada. Assim, de forma similar ao que o algoritmo 2 faz para remover cırculos repetidosda entrada, podemos ordenar os cırculos em C lexicograficamente pelas coordenadas deseus centros e agrupar cırculos com o mesmo centro, descartando todos exceto o de maiorraio de cada agrupamento. Desta forma, os cırculos restantes terao centros distintos e amesma uniao que os cırculos originais. Ainda, este procedimento possui complexidadesalgebricas O(n log n) de tempo e O(n) de espaco, nao atrapalhando os limites assintoticosque desejamos obter para este algoritmo. Sendo assim assumimos daqui em diante queos cırculos no conjunto C possuem centros distintos.

Mesmo assim, no entanto, diagramas de Voronoi nao sao mais suficientes para este caso.Aqui precisamos de uma estrutura combinatoria que leve em conta os raios dos cırculos,chamada de diagrama de Laguerre [19]. O diagrama de Laguerre do conjunto de cırculos Csao os conjuntos L0,L1, . . . ,Ln−1, tambem chamados de celulas de Laguerre, definidospor

Li =p ∈ R2 : ||p− ci||2 − r2

i ≤ ||p− cj||2 − r2j ,∀j ∈ 0, 1, . . . , n− 1

.

A primeira coisa que percebemos sobre o diagrama de Laguerre e que ele generalizao diagrama de Voronoi. De fato, se os raios dos cırculos forem iguais, Li = Vi paratodo i ∈ 0, 1, . . . , n− 1. Porem, estes diagramas possuem diversas outras propriedades,que estudamos agora.

Uma propriedade que e chave para o algoritmo de Imai, Iri e Murota e o fato de que cadarestricao da forma

||p− ci||2 − r2i ≤ ||p− cj||2 − r2

j

com i, j ∈ 0, 1, . . . , n−1 e i 6= j e uma restricao linear no sentido de que o conjunto dospontos p ∈ R2 que a satisfazem e um semiplano fechado. Inclusive, antes da descobertadeste algoritmo, o melhor algoritmo no estado da arte para este problema era o descritoem [23]. Este algoritmo usava ideias extremamente similares as do algoritmo de Imai,Iri e Murota, mas, em vez de usar diagramas de Laguerre, ele usava um outro tipo dediagrama com propriedades similares, cujas restricoes nao eram lineares. Isso fez comque este algoritmo consumisse tempo O(n log2 n).

Vejamos entao como demonstrar que estas restricoes sao de fato lineares, mas primeiroclarifiquemos a notacao. Sejam i, j ∈ 0, 1, . . . , n− 1 com i 6= j, seja d ∈ R com d > 0

77

Page 78: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

a distancia euclidiana ||cj − ci|| entre ci e cj, seja

µ : R2 → R

p 7→(||p− cj||2 − r2

j

)−(||p− ci||2 − r2

i

)uma funcao objetivo e seja

L =p ∈ R2 : µ(p) ≥ 0

o conjunto dos pontos que satisfazem a restricao. Considere entao a reta ` que passapelos centros ci e cj dos cırculos Ci e Cj e a parametrize atraves da funcao

γ : R → R2

t 7→ (1− t)ci + tcj.

Nosso primeiro passo e estudar quais valores t ∈ R sao tais que γ(t) ∈ L, ouseja, µ

(γ(t)

)≥ 0. Temos que

µ(γ(t)

)≥ 0 ⇐⇒(

||γ(t)− cj||2 − r2j

)−(||γ(t)− ci||2 − r2

i

)≥ 0 ⇐⇒((

d(1− t))2 − r2

j

)−((dt)2 − r2

i

)≥ 0 ⇐⇒(

d2(1− t)2 − d2t2)− (r2

j − r2i ) ≥ 0 ⇐⇒

(d2 − 2d2t+ d2t2 − d2t2)− (r2j − r2

i ) ≥ 0 ⇐⇒(d2 − 2d2t)− (r2

j − r2i ) ≥ 0 ⇐⇒

2d2t ≤ d2 − (r2j − r2

i ) ⇐⇒

t ≤d2 − (r2

j − r2i )

2d2.

Em outras palavras, L ∩ ` e um “prefixo” fechado da reta `, o que mostra que, sobre areta `, o conjunto L e uma restricao linear.

Para mostrar isto para o plano, seja A ∈ R2 um ponto qualquer do plano e considere asseguintes definicoes:

• O ponto B ∈ ` e a projecao ortogonal de A sobre a reta `;

• O numero real nao-negativo h e a altura do triangulo (possivelmente degene-rado) ciAcj;

• O numero real nao-negativo d0 e o comprimento ||B − ci|| do segmento (possivel-mente degenerado) ciB;

• O numero real nao-negativo d1 e o comprimento ||cj − B|| do segmento (possivel-mente degenerado) Bcj;

• O numero real nao-negativo d′0 e o comprimento ||A − ci|| do segmento (possivel-mente degenerado) ciA; e

• O numero real nao-negativo d′1 e o comprimento ||cj − A|| do segmento (possivel-mente degenerado) Acj.

78

Page 79: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Assim,

µ(A)− µ(B) =((||A− cj||2 − r2

j

)−(||A− ci||2 − r2

i

))−

((||B − cj||2 − r2

j

)−(||B − ci||2 − r2

i

))=

((d′1

2 − r2j )− (d′0

2 − r2i ))−((d1

2 − r2j )− (d0

2 − r2i ))

= (d′12 − d2

1)− (d′02 − d2

0)

= h2 − h2

= 0,

devido as aplicacoes do teorema de Pitagoras aos triangulos retangulos ciBA e cjBA.Portanto, µ(A) = µ(B) e, consequentemente, A ∈ L ⇐⇒ B ∈ L, o que mostra que L ede fato uma restricao linear.

Contudo, as celulas de Laguerre, quando intersectadas com um retangulo (fechado) Rcontendo todos os cırculos de C em seu interior, nao necessariamente sao polıgonos con-vexos. Nos diagramas de Voronoi, vimos que cada celula Vi continha um ponto quesatisfazia estritamente todas as restricoes definindo a celula, nominalmente o ponto ci.No diagrama de Laguerre isto nao necessariamente e verdade, e assim o conjunto Li ∩Rpode ser degenerado (ter area nula). Porem, do contrario, este conjunto sera sim umpolıgono convexo.

O que resta mostrar para basicamente concluir nossa apresentacao deste topico eque a uniao dos cırculos iguala cada cırculo Ci dentro da celula Li, ou seja,que U ∩ Li = Ci ∩ Li. Similarmente ao que vimos antes, Ci ∩ Li ⊆ U ∩ Li, pois Ci ⊆ U .Agora, para mostrar que U ∩ Li ⊆ Ci ∩ Li, tome um ponto p ∈ U ∩ Li qualquer.Como p ∈ U , existe algum j ∈ 0, 1, . . . , n−1 tal que p ∈ Cj. Assim, ||p−cj|| ≤ rj ou, emoutros termos, ||p−cj||2−r2

j ≤ 0. Porem, como p ∈ Li, ||p−ci||2−r2i ≤ ||p−cj||2−r2

j ≤ 0,de modo que ||p−ci|| ≤ ri, o que mostra que p ∈ Ci. Logo, concluımos que U∩Li ⊆ Ci∩Li,como querıamos.

O algoritmo de Imai, Iri e Murota consiste entao em computar o diagrama de Laguerree calcular a interseccao entre a fronteira de cada cırculo com sua celula de Laguerre, deforma extremamente similar ao que descrevemos com os diagramas de Voronoi. Por umargumento praticamente identico envolvendo a planaridade de um grafo analogo, se R eum retangulo (fechado) contendo todos os cırculos de C em seu interior, entao o total dearestas em polıgonos convexos da forma Li ∩ R com i ∈ 0, 1, . . . , n − 1 e O(n). Logo,a complexidade do algoritmo e dominada pela complexidade de computar o diagrama deLaguerre.

Ainda em [19], ha a descricao de um algoritmo com complexidades algebricas O(n log n)de tempo e O(n) de espaco para computar diagramas de Laguerre. Este algoritmo diferesubstancialmente do algoritmo de Fortune [17] para diagramas de Voronoi, pois os autoresnotam que e difıcil generalizar o algoritmo de Fortune. A solucao encontrada por elesfoi generalizar o primeiro algoritmo na literatura para computar diagramas de Voronoi,o algoritmo de Shamos [22], que funciona por divisao e conquista em vez de usar umalinha de varredura.

79

Page 80: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Capıtulo 4

Uniao de polıgonos

4.1 Enunciado do problema

Enunciamos agora o problema da uniao de polıgonos, que e o problema no qual iremosnos focar no resto deste trabalho.

Problema 2 (uniao de polıgonos) —• Entrada: Uma lista de polıgonos cujos vertices sao todos elementos de F2.

Cada polıgono na entrada sera representado por uma lista de seus verticesem sentido anti-horario. Cada um destes vertices sera representado por umpar com suas coordenadas.• Saıda: Uma sequencia finita de segmentos de reta orientados que formam

uma boa representacao da uniao dos polıgonos na entrada. As coordenadasdos extremos destes segmentos orientados devem ser todas elementos de F.Ainda, cada um destes segmentos orientados devera ser representado pelasquatro coordenadas de seus extremos.

Precisamos ainda mostrar que este problema sempre admite uma solucao. Porem, estaprova fica bastante mais simples quando adiada ao final da secao 4.3, onde estudamosunioes de polıgonos.

4.2 Estado da arte

Correndo o risco de repetir muito do que dissemos na introducao, observamos que aliteratura em operacoes booleanas em polıgonos e bastante extensa e compreende variosalgoritmos eficientes para computar a uniao, interseccao, diferenca, diferenca simetricae varias outras composicoes de dois polıgonos. Dois destes algoritmos sao apresentadosem [20, secao 7.8] e [14, secao 2.4]. Ambos podem ser implementados de forma a possuıremcomplexidades algebricas O(M logN) de tempo e O(N) de espaco, onde N e o numerototal de vertices nos polıgonos e M e o numero de pares de arestas dos polıgonos que seintersectam.

80

Page 81: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Porem, conforme descritos, estes algoritmos funcionam apenas com dois polıgonos. Ge-neralizar estes algoritmos para mais polıgonos nao e exatamente simples, uma vez que auniao de dois polıgonos nao necessariamente e um polıgono, e assim uma aplicacao dometodo de divisao e conquista nao e imediata.

Tambem como mencionamos na introducao, existem tecnicas para mesmo assim aplicara divisao e conquista a este problema. As mais notaveis sao as tecnicas baseadas empolıgonos de Nef [10] e as tecnicas baseadas em estender o conceito de polıgonos paraaceitar os denominados “buracos”. Ambas as tecnicas definem estruturas mais gerais quesao fechadas pela operacao de uniao. Ha implementacoes eficientes de ambas as tecnicasna biblioteca CGAL [1] e uma implementacao da uniao de polıgonos com “buracos” nabiblioteca LEDA [3].

Porem, todas estas implementacoes oferecem apenas uma analise de complexidade daoperacao de unir dois “polıgonos”, que custa, em todas elas, O(M logN) de tempo eO(N)de espaco. Portanto, o que podemos fazer aqui e oferecer uma analise simples sobre ometodo de divisao e conquista implementado da forma usual.

Para isso, considere quatro polıgonos P0, P1, P2, P3 ⊆ R2 com N vertices cada um taisque, para cada par de ındices i, j ∈ 0, 1, 2, 3 com i 6= j, existam Ω(M) pares dearestas nestes polıgonos que se intersectam. Assim, o algoritmo consiste em obter os“polıgonos” P0,1 = P0 ∪ P1, P2,3 = P2 ∪ P3 e finalmente P0,1,2,3 = P0,1 ∪ P2,3. As duasprimeiras etapas custam cada uma Ω(M logN) de tempo e Ω(N) de espaco. Porem, aultima etapa, na verdade, requer tempo Ω(M logN) mas precisa de espaco Ω(M), pois os“polıgonos” P0,1 e P2,3 podem ter Ω(M) vertices. Assim, assintoticamente falando, estesalgoritmos precisam de Ω(M logN) de tempo e Ω(M) de espaco.

O algoritmo que projetamos possui a mesma complexidade de tempo, porem requer ape-nas O(N) de espaco. Embora este nao seja um resultado extremamente significativo, estae o que consideramos a real contribuicao deste trabalho.

Vale dizer que o artigo [8] descreve um algoritmo muito mais geral. Porem, eles naofizeram mencao as complexidades de seus algoritmos e estimamos que estes algoritmostenham o mesmo consumo adicional de espaco.

Vale a pena perguntar qual a importancia de economizar o espaco, e na verdade o que sig-nifica isso, uma vez que o proprio tamanho da saıda e Ω(M). Acontece que ha aplicacoesde uniao de polıgonos em que nao e necessario gravar a saıda completa, mas sim processa-la conforme ela e gerada. Estas aplicacoes incluem nao so computar a area, o perımetroe o centro de massa da uniao, mas tambem ate renderizar a uniao em um framebuffer.

4.3 Unioes de polıgonos

Esta secao tem um papel analogo ao da secao 3.3, introduzindo os conceitos de pontoschave e segmentos candidatos de uma lista de polıgonos. Mais adiante, veremos tambemque o estudo destes conceitos resulta em um metodo para se obter uma boa representacaoda uniao de polıgonos.

81

Page 82: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 58 — Dizemos que o conjunto dos pontos chave de uma lista L depolıgonos e o conjunto K(L) dos pontos em R2 que pertencem a uma interseccaofinita de duas arestas de polıgonos (nao necessariamente distintos) na lista L.

Note que os pontos chave de uma lista de polıgonos incluem todos os vertices de polıgonosna lista.

Definicao 59 — Os segmentos candidatos de uma lista de polıgonos L saoos segmentos de reta da forma uv com u, v ∈ K(L) tais que uv ∩ K(L) = u, ve que existe uma aresta em um polıgono de L que contem uv.

Note que devido a possibilidade de arestas de polıgonos diferentes na lista se sobreporem,nao e em geral possıvel assinalar uma direcao a um segmento candidato.

Proposicao 39 — Dois segmentos candidatos distintos de uma lista de polıgonospodem se intersectar apenas em seus extremos.

Prova — Sejam u0v0 e u1v1 dois segmentos candidatos distintos de uma lista L depolıgonos. Entao, se a interseccao de u0v0 e u1v1 for infinita, como u0v0 6= u1v1, de-vemos ter u0, v0 ∩

(u1v1 \ u1, v1

)6= ou u1, v1 ∩

(u0v0 \ u0, v0

)6= . Porem,

como u0, v0, u1, v1 ∈ K(L) e ambos u0v0 e u1v1 sao segmentos candidatos, isto contradiz,respectivamente,

(u1v1 \ u1, v1

)∩ K(L) = ou

(u0v0 \ u0, v0

)∩ K(L) = .

Ja se esta interseccao for finita, ela pode ter zero pontos (caso no qual o resultado valetrivialmente) ou exatamente um ponto p ∈ R2. Se p for um extremo de u0v0 ou de u1v1, oresultado tambem segue trivialmente. Porem, se p ∈

(u0v0 \ u0, v0

)∩(u1v1 \ u1, v1

),

observamos que, sendo a interseccao finita de dois segmentos candidatos, p deve ser ainterseccao finita de duas arestas em polıgonos de L e assim um ponto chave de L, o queclaramente contradiz u0v0 e u1v1 serem segmentos candidatos.

As propriedades dos arcos candidatos vistos na secao 3.3 sao muito mais numerosas do quea de segmentos candidatos, de forma que os resultados correspondentes aos que seguemtambem o sao.

Lema 7 — Seja L uma lista de polıgonos cuja uniao e U , seja p ∈ ∂U um pontona fronteira de U , seja −→uv uma aresta de um polıgono em L que contem p eseja ε ∈ R com ε > 0 um valor real tal que Bε(p) nao contenha pontos chavede L e nao intersecte nenhuma aresta de polıgonos em L que nao contenha p.Entao, para todo ponto q ∈ Bε(p), q ∈ U se, e somente se, (v − u)× (q − p) ≥ 0.

Prova — Primeiramente, note que como Bε(p) ∩ K(L) = , entao p 6∈ K(L) e, emparticular, p 6= u e p 6= v. Assim, sendo E o conjunto das arestas dos polıgonos em L quecontem p, toda aresta e ∈ E deve ter uma interseccao infinita com uv, pois do contrario,como p esta em e e em uv, terıamos p ∈ K(L). Deste modo, toda aresta em E e paralelaa −→uv.

Agora, se P e um polıgono em L que possui −→uv como aresta, note que −→uv e a unicaaresta de P que intersecta Bε(p), e assim, podemos usar um teste local para decidir se

82

Page 83: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

um ponto q ∈ Bε(p) esta em P : q ∈ P se, e somente se, (v − u)× (q − p) ≥ 0, ou seja, qesta “a esquerda” do segmento −→uv.

Vamos entao estudar a interseccao de outros polıgonos em L com Bε(p). Se Q e umpolıgono em L que nao possui nenhuma aresta em E, entao nenhuma aresta de Q in-tersecta Bε(p), e assim ou Bε(p) ⊆ Q ou Bε(p) ∩Q = . Porem, no primeiro caso,terıamos p ∈ Bε(p) ⊆ Q ⊆ U, contradizendo p ∈ ∂U . Logo devemos ter Bε(p)∩Q = .

Ja se Q e um polıgono em L que contem uma aresta−→u′v′ em E, ja vimos que

−→u′v′ deve ser

paralela a −→uv, ou seja, deve existir um α ∈ R com v′ − u′ = α(v − u). Mostramos agoraque, alem de paralelas, estas arestas devem ter o mesmo sentido, isto e, α > 0. De fato,por um argumento similar ao feito anteriormente para o polıgono P , um ponto q ∈ Bε(p)esta em Q se, e somente se, (v′−u′)× (q− p) ≥ 0. Porem, se α < 0, (v−u)× (q− p) < 0implica em (v′−u′)× (q−p) = α(v−u)× (q−p) > 0, de modo que todo ponto q ∈ Bε(p)esta em P ou em Q. Mas assim Bε(p) ⊆ (P ∪Q) ⊆ U , contradizendo p ∈ ∂U .

Assim, devemos ter que todo q ∈ Bε(p) esta em Q se, e somente se, q esta em P .No entanto, a interseccao de Bε(p) com U e a uniao da interseccao de Bε(p) comos polıgonos em L. Vimos que para alguns destes polıgonos esta interseccao e va-zia e para outros (pelo menos o polıgono P ), ela e igual a Bε(p) ∩ P , de modoque Bε(p) ∩ U = Bε(p) ∩ P , e assim, como vimos antes, um ponto q ∈ Bε(p) esta em Use, e somente se, (v − u)× (q − p) ≥ 0.

Proposicao 40 — Seja L uma lista de polıgonos cuja uniao e U e seja uv umsegmento candidato de L. Entao ou uv ⊆ ∂U ou uv \ u, v ⊆ U.

Prova — A demonstracao sera por contradicao. Suponha entao que uv 6⊆ ∂U eque uv \ u, v 6⊆ U. Logo, deve haver pontos p0, p1 ∈ uv \ u, v tais que p0 ∈ ∂Ue p1 ∈ U (pois claramente uv ⊆ U). Seja agora γ : [0, 1]→ R2 a parametrizacao canonicade uv e sejam t0, t1 ∈ [0, 1] os unicos valores tais que γ(t0) = p0 e γ(t1) = p1. Assumimos,sem perda de generalidade, que t0 < t1, pois do contrario observamos que vu e o mesmosegmento candidato, mas cuja parametrizacao canonica satisfaz este requisito.

Seja entao T = t ∈ [t0, t1] : γ(t) ∈ ∂U. Como t0 ∈ T (pois γ(t0) = p0 ∈ ∂U), temosque T 6= . Ainda, obviamente t1 e um limite superior para todo elemento de T . Logoexiste o supremo t = supT . Defina entao p = γ(t).

Mostramos agora que p ∈ ∂U . De fato, se t = t0, entao obviamente

p = γ(t) = γ(t0) = p0 ∈ ∂U.

Ja se t > t0, definimos uma sequencia (infinita) de pontos x0, x1, . . . em ∂U da seguinteforma: para cada k ∈ N, como t = supT , deve existir um elemento

t′k ∈

[max

t0, t−

1

k + 1

, t

)∩ T.

Assim, γ(t′k) ∈ ∂U , e pomos xk = γ(t′k). Note, no entanto, que limk→∞

t′k = t. Logo, como γ

e uma funcao contınua, limk→∞

xk = limk→∞

γ(t′k) = γ(t) = p. Porem, ∂U e um conjunto

fechado, portanto devemos concluir que p ∈ ∂U .

83

Page 84: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Por outro lado, como 0 < t0 < t1 < 1, devemos ter p 6∈ u, v, de modo que p 6∈ K(L) (poisos unicos pontos chave no segmento candidato uv sao u e v). Seja entao E o conjunto detodas as arestas de polıgonos em L que contem o ponto p e tome um ε ∈ R com ε > 0tal que Bε(p) nao contenha pontos chave e nao intersecte nenhuma aresta de polıgonosem L a menos das arestas em E (este ε existe pois arestas sao conjuntos fechados). Noteentao que, pelo lema 7 um ponto q ∈ Bε(p) esta em U se, e somente se, s× (q − p) ≥ 0,onde s e o sentido de uma aresta em E, (onde o sentido de um segmento orientado ABe o vetor B−A

||B−A||). Logo, podemos concluir que uv ∩ Bε(p) ⊆ ∂U , pois as arestas em Edevem ser todas paralelas a uv.

Isto, no entanto, contradiz t = supT , pois, como γ e contınua, existe um δ ∈ R

com 0 < δ < mint, 1− t, tal que, para todo t′ ∈ (t− δ, t+ δ), γ(t′) ∈ Bε(p). Logo,

γ

(t+

δ

2

)∈(uv ∩Bε(p)

)⊆ ∂U

e assim t+ δ2∈ T , de fato contradizendo t = supT .

Portanto, somos de fato forcados a conluir que uv ⊆ ∂U ou uv \ u, v ⊆ U.

Proposicao 41 — Seja L uma lista de polıgonos cuja uniao e U e seja uv umsegmento candidato de L tal que uv ⊆ ∂U . Entao todas as arestas de polıgonosem L que contem uv estao orientadas no mesmo sentido, isto e, para cada par −−→u0v0

e −−→u1v1 destas arestas,

u0v0−1(u) < u0v0

−1(v) ⇐⇒ u1v1−1(u) < u1v1

−1(v).

Prova — Esta demonstracao ja foi essencialmente feita na prova do lema 7. Porem,vamos refaze-la aqui neste contexto, ja com o auxılio deste lema.

Para fins de uma prova por contradicao, suponha, sem perda de generalidade,que u0v0

−1(u) < u0v0−1(v) e u1v1

−1(u) > u1v1−1(v).

Defina entao o ponto p ∈ R2 por p = u+v2

, de forma que p ∈ uv ⊆ ∂U . Como p 6= ue p 6= v, devemos ter p 6∈ K(L), pois uv e um segmento candidato.

Seja agora E o conjunto de todas as arestas em polıgonos de L que contem p.Como p 6∈ K(L), cada aresta e ∈ E deve ter uma interseccao infinita com u0v0 e u1v1

e, consequentemente, com uv.

Seja entao ε ∈ R com ε > 0 um valor real tal que Bε(p) nao contenha nenhum pontoem K(L) e nao intersecte nenhuma aresta em polıgonos de L que nao esteja em E (tal εexiste porque arestas de polıgonos sao conjuntos fechados).

Sejam ainda P0 e P1 polıgonos em L contendo as arestas u0v0 e u1v1, respectivamente.Pela lema 7, temos que

• Um ponto q ∈ Bε(p) esta em P0 se, e somente se, (v − u) × (q − p) ≥ 0,pois u0v0

−1(u) < u0v0−1(v); e

• Um ponto q ∈ Bε(p) esta em P1 se, e somente se, (v − u) × (q − p) ≤ 0,pois u1v1

−1(u) > u1v1−1(v).

Mas assim Bε(p) ⊆ (P0 ∪ P1) ⊆ U , contradizendo p ∈ ∂U .

84

Page 85: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 60 — Seja L uma lista de polıgonos cuja uniao e U e seja uv um

segmento candidato de L contido em ∂U . Seja ainda−→u′v′ uma aresta de um

polıgono em L tal que uv ⊆ u′v′. Dizemos entao que a orientacao de uv e o

segmento orientado −→uv se u′v′−1

(u) < u′v′−1

(v) e o segmento orientado −→vu casocontrario.

Observe que a proposicao 41 nos garante uma unica orientacao para um tal segmentocandidato, tornando a definicao consistente.

Agora finalmente mostramos o principal resultado desta secao.

Proposicao 42 — Seja L uma lista de polıgonos cuja uniao e U ⊆ R2. Entao oconjunto das orientacoes dos segmentos candidatos de L contidos em ∂U e umaboa representacao do conjunto U .

Prova — Vamos mostrar os seguintes tres fatos, que em conjunto mostram que asorientacoes dos segmentos candidatos contidos em ∂U formam uma boa representacaopara U :

• A orientacao de um segmento candidato contido na fronteira de U e sempre com-patıvel com U ;

• Dois segmentos candidatos nunca se intersectam exceto possivelmente em seus ex-tremos; e

• Todo ponto na fronteira de U esta em um segmento candidato contido na fronteirade U .

O primeiro fato segue imediatamente do lema 7 e o segundo, da proposicao 39.

Para demonstrar o terceiro fato, seja primeiro p ∈ ∂U \ K(L) um ponto na fronteirade U que nao e um ponto chave. Como a fronteira da uniao de conjuntos deve estarcontida na uniao das fronteiras, devemos ter um polıgono P em L com p ∈ ∂P . Comoa fronteira de um polıgono em L e particionada em segmentos candidatos pelos pontoschave e como p 6∈ K(L), deve existir um segmento candidato uv com p ∈ uv \ u, v.Logo, pela proposicao 40, devemos ter uv ⊆ ∂U , como desejado.

Suponha agora que p ∈ ∂U ∩ K(L) e um ponto chave na fronteira de U . Escolha entaoum ε ∈ R com ε > 0 tal que Bε(p) ∩ K(L) = p e tal que Bε(p) nao intersecte segmentoscandidatos que nao possuam p como extremo (note que tal ε existe porque p nao pertencea nenhum destes segmentos, que sao conjuntos fechados). Observamos que a fronteira dauniao de polıgonos jamais possui pontos isolados. Devemos ter entao um ponto q ∈ Bε(p)com q ∈ ∂U . Porem, como q ∈ Bε(p), temos que q 6∈ K(L) e, como acabamos de ver, deveexistir um segmento candidato contendo q e contido na fronteira de U . No entanto, estesegmento intersecta Bε(p) (ao menos no ponto q), e assim deve ter p como um de seusextremos e, consequentemente, como um de seus pontos, tambem como desejado.

Com o que vimos ate entao, e trivial demonstrar que o problema 2 sempre admite umasolucao, que e um resultado que estavamos devendo.

85

Page 86: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 43 — O problema 2 sempre admite uma solucao.

Prova — Imediata da proposicao 42.

4.4 Posicao geral e cisalhamentos simbolicos

Existem varias complicacoes tecnicas ao se tentar resolver o problema da uniao depolıgonos e, na verdade, varios outros problemas em geometria computacional. Por isso, ecomum inicialmente restringir as possıveis entradas do problema a entradas que possuemcertas propriedades que entradas aleatorias quase sempre possuem. Entradas deste tiposao ditas em posicao geral.

A seguir definimos precisamente o que e uma entrada do problema 2 estar em posicaogeral.

Definicao 61 — Uma entrada do problema 2 e dita estar em posicao geral seas duas seguintes condicoes sao satisfeitas:

• Dois vertices u, v ∈ R2 de polıgonos na entrada tais que u 6= v semprepossuem abscissas diferentes; e

• Arestas de polıgonos com ındices diferentes na lista de entrada nunca seintersectam em um numero infinito de pontos.

Note que, em particular, uma entrada em posicao geral para o problema 2 nao podepossuir polıgonos repetidos.

Seria extremamente util se pudessemos transformar uma entrada qualquer do problemaem uma outra entrada em posicao geral, resolver o problema para a segunda entrada erecuperar uma solucao para a entrada original. Infelizmente, nao sabemos como fazerisso. Porem, uma das duas restricoes da posicao geral pode ser removida com o metododesenvolvido nesta secao, nominalmente a primeira.

Na verdade, em [16], uma tecnica chamada de simulation of simplicity foi desenvolvidapara ajudar a tratar de casos degenerados em problemas geometricos. O metodo queapresentamos aqui foi desenvolvido independentemente, mas parece ser um caso particulardesta tecnica.

Nosso metodo se baseia no fato de que podemos aplicar na entrada uma transformacaolinear bijetiva chamada de cisalhamento. A entrada resultante jamais tera dois verticesdistintos que partilham a mesma abscissa se a transformacao for bem escolhida. Ainda,a solucao desta nova entrada, ou seja, uma boa representacao para a uniao dos polıgonoscisalhados, pode ser transformada pela transformacao linear inversa, resultando numaboa representacao para a uniao original.

No restante desta secao descrevemos esta ideia de forma mais formal e mostramos umtruque bastante elegante para evitar fazer esta conversao mas ainda sim nao precisar nospreocupar com a primeira restricao: o cisalhamento simbolico.

86

Page 87: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 62 — Dado um valor real δ ∈ R, dizemos que o cisalhamento por δe a transformacao linear

δ [·] : R2 → R2

(x, y) 7→ (x+ δy, y).

Definicao 63 — Se δ ∈ R e um valor real, adotamos as seguintes convencoesnotacionais:

• Se p ∈ R2 e um ponto, denotamos δ [·] (p) por δ [p];

• Se X ⊆ R2 e um conjunto de pontos, denotamos o conjuntoδ [x] : x ∈ X

por δ [X];

• Se C e uma famılia de subconjuntos de R2, denotamos afamılia

δ [X] : X ∈ C

por δ [C];

• Se L = X0X1 · · ·Xn−1 e uma lista de subconjuntos de R2, denotamos a lista

δ [X0] δ [X1] · · · δ [Xn−1]

por δ [L];

• Se −→uv e um segmento de reta orientado, denotamos o segmento de reta

orientado−−−−−→δ [u] δ [v] por δ [−→uv]; e

• Se R e um conjunto de segmentos de reta orientados, denotamos o con-junto

δ [s] : s ∈ R

por δ [R].

Proposicao 44 — Seja uv ⊆ R2 um segmento de reta e seja δ ∈ R um numeroreal. Entao δ [uv] e o segmento de reta δ [u] δ [v].

Prova — Como uv =

(1− t)u+ tv : t ∈ [0, 1]

e como δ [·] e uma transformacao linear,temos que

δ [uv] = δ[

(1− t)u+ tv : t ∈ [0, 1]]

=δ [(1− t)u+ tv] : t ∈ [0, 1]

=

(1− t)δ [u] + tδ [v] : t ∈ [0, 1]

= δ [u] δ [v] ,

como querıamos.

Proposicao 45 — Para todo valor real δ ∈ R, o cisalhamento por δ e umafuncao bijetiva cuja inversa e o cisalhamento por −δ.

Prova — Para mostrar que a funcao δ [·] e injetiva, sejam u = (x0, y0) ∈ R2

e v = (x1, y1) ∈ R2 dois pontos no plano tais que δ [u] = δ [v], ou seja, tais que

(x0 + δy0, y0) = (x1 + δy1, y1).

Claramente entao y0 = y1 e, como x0 + δy0 = x1 + δy1, segue que x0 = x1. Logo u = v e

87

Page 88: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

a funcao deve ser injetiva.

Ja para mostrar a sobrejetividade de δ [·], considere um ponto (x, y) ∈ R2 e observe que

δ [−δ [(x, y)]] = δ [(x− δy, y)] = (x− δy + δy, y) = (x, y).

Com o que vimos tambem fica claro que −δ [·] e a funcao inversa de δ [·].

Lema 8 — Seja δ ∈ R um valor real e sejam u, v ∈ R2 dois vetores.Entao δ [u]× δ [v] = u× v.

Prova — Sejam u e v escritos como u = (x0, y0) e v = (x1, y1). Entao

δ [u]× δ [v] = (x0 + δy0, y0)× (x1 + δy1, y1)

= (x0 + δy0)y1 − y0(x1 + δy1)

= x0y1 + δy0y1 − y0x1 − δy0y1

= x0y1 − y0x1

= u× v,

como desejado.

Lema 9 — Para todos os valores reais δ, ε1 ∈ R com ε1 > 0, existe um valorreal ε0 ∈ R com ε0 > 0 tal que, para todo ponto p ∈ R2, δ [Bε0(p)] ⊆ Bε1

(δ [p]

).

Prova — Mostramos que escolher

ε0 =ε1

(|δ|+ 1)√

2

e suficiente. Para isso escreva p = (x0, y0) e considere um ponto q = (x1, y1) ∈ δ [Bε0(p)]qualquer. Devemos mostrar que q ∈ Bε1

(δ [p]

).

Como q ∈ δ [Bε0(p)] e como a funcao −δ [·] e a funcao inversa de δ [·], temosque −δ [q] ∈ Bε0(p), ou seja, (x1 − δy1, y1) ∈ Bε0(p), de modo que |x1 − δy1 − x0| < ε0

e |y1 − y0| < ε0. Logo,

ε0 > |x1 − δy1 − x0|= |x1 − δy1 + δy0 − δy0 − x0|= |x1 − δ(y1 − y0)− δy0 − x0|= |x1 − (x0 + δy0)− δ(y1 − y0)|≥ |x1 − (x0 + δy0)| − |δ(y1 − y0)|= |x1 − (x0 + δy0)| − |δ||y1 − y0|≥ |x1 − (x0 + δy0)| − |δ|ε0,

de forma que

|x1 − (x0 + δy0)| < (|δ|+ 1)ε0 = (|δ|+ 1)ε1

(|δ|+ 1)√

2=

ε1√2.

88

Page 89: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Ainda, note que ε0 < ε1/√

2, de forma que |y1 − y0| < ε0 < ε1/√

2. Portanto,

||q − δ [p] || = ||(x1, y1)− (x0 + δy0, y0)||

=

√(x1 − (x0 + δy0)

)2+ (y1 − y0)2

<

√( ε1√2

)2

+( ε1√

2

)2

=

√ε2

1

2+ε2

1

2

=√ε2

1

= ε1

e assim temos que q ∈ Bε1(p).

Proposicao 46 — Seja P ⊆ R2 um polıgono e seja δ ∈ R um valor real.Entao δ [P ] e um polıgono tal que V

(δ [P ]

)= δ [V (P )] e

E(δ [P ]

)=−−−−−→δ [u] δ [v] : −→uv ∈ E(P )

.

Prova — Seja P definido em termos de uma curva de Jordan poligonal γ : [0, 1]→ R2,de forma que P = Im(γ) ∪ γ. Seja entao

γ′ : [0, 1] → R2

t 7→ δ [γ(t)]

a composicao da transformacao linear bijetiva δ [·] com a curva γ. Pela injetividade de δ [·]e γ|[0,1), a funcao γ′|[0,1) e injetiva e, como γ(0) = γ(1), vale que γ′(0) = γ′(1). Mais ainda,pela continuidade de δ [·], tanto δ [γ] quanto δ [R2 \ Im(γ) \ γ] sao conjuntos conexos,sendo que δ [γ] e tambem limitado. Logo, como R2 = δ [γ]∪Im(γ′)∪δ [R2 \ Im(γ) \ γ] ,segue que R2 \ Im(γ′) possui exatamente duas componentes conexas, exatamente umadas quais e limitada. Segue portanto que γ′ e uma curva de Jordan (com γ′ = δ [γ]) e epoligonal (pois δ [·] e injetiva). Ainda, claramente δ [P ] = Im(γ′)∪γ′, de forma que δ [P ]e um polıgono.

Devemos mostrar tambem que as extensoes periodicas de γ e γ′ sao diferenciaveis exata-mente nos mesmos parametros. Para isso, observe que a imagem por δ [·] de um segmentode reta e ainda um segmento de reta. Logo, se a, b, c ∈ R2 sao pontos distintos, entaoeles sao colineares se, e somente se, δ [a], δ [b] e δ [c] o sao. Porem, uma curva poligonalestendida periodicamente e diferenciavel em um parametro t ∈ R se, e somente se, asimagens dos parametros em uma vizinhanca de t sao todas colineares.

Resta mostrar ainda que os sentidos das arestas sao preservados. Para isso, recomendamosao leitor que a definicao 33 seja revisitada. Assumimos, sem perda de generalidade, que γesta em sentido anti-horario. Devemos entao mostrar que γ′ tambem esta. Para isso,considere o ponto p ∈ R2 de maior abscissa dentre os pontos em Im(γ) de menor ordenada.Observe entao que δ [p] e o ponto de maior abscissa dentre os pontos em Im(γ′) de menorordenada, pois δ [·] preserva as ordenadas dos pontos e a ordem entre as abscissas.

89

Page 90: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Seja t o unico valor em [0, 1) tal que γ(t) = p. Como γ esta em sentido anti-horario,existe ε ∈ R com ε > 0 tal que, para todos u, v ∈ R com t− ε < u < t < v < t+ ε,(

γ(v)− p)×(γ(u)− p

)> 0.

Mas, pelo lema 8,

δ [γ(v)− p]× δ [γ(u)− p] =(γ(v)− p

)×(γ(u)− p

)e logo (

δ [γ(v)]− δ [p])×(δ [γ(u)]− δ [p]

)> 0,

ou seja (γ′(v)− δ [p]

)×(γ′(u)− δ [p]

)> 0.

Logo, γ′ tambem esta em sentido anti-horario, concluindo a demonstracao.

Proposicao 47 — Seja X ⊆ R2 um conjunto de pontos, seja R um conjuntofinito de segmentos de reta orientados e seja δ ∈ R um valor real. Entao R euma boa representacao para X se, e somente se, δ [R] e uma boa representacaopara δ [X].

Prova — Primeiramente mostramos que se R e uma boa representacao para X,entao δ [R] e uma boa representacao para δ [X]. Para isso devemos mostrar que qua-tro fatos sao verdadeiros:

• Todo segmento de reta orientado em δ [R] e compatıvel com δ [X];

• Dois segmentos de reta em δ [R] jamais se intersectam, exceto possivelmente emseus extremos;

• Todo segmento de reta em δ [R] esta contido em ∂δ [X]; e

• Todo ponto em ∂δ [X] esta em um segmento de reta em δ [R].

Para mostrar o primeiro fato, seja−−−−−→δ [u] δ [v] um segmento de reta orientado em δ [R],

onde−→uv ∈ R e considere um ponto q ∈ δ [u] δ [v]\δ [u] , δ [v]. Assim, pelas proposicoes 44e 45, temos que o ponto p = −δ [q] e tal que δ [p] = q e p ∈ uv \ u, v. Logo, como R euma boa representacao de X, temos que uv e compatıvel com X e, como p ∈ uv \ u, v,temos que existe um ε0 ∈ R com ε0 > 0 tal que, para todo x ∈ Bε0(p), vale que x ∈ Xse (v − u)× (x− p) > 0 e x 6∈ X se (v − u)× (x− p) < 0.

Pelo lema 9, temos entao que existe um valor ε1 ∈ R com ε1 > 0 tal que

−δ [Bε1(q)] ⊆ Bε0

(−δ [q]

)= Bε0(p).

Considere entao um ponto y ∈ Bε1(q). Temos entao, que x = −δ [y] ∈ Bε0(p) e, pelolema 8, que

(δ [v]− δ [u])× (y − q) = (δ [v]− δ [u])× (δ [x]− δ [p])

= δ [v − u]× δ [x− p]= (v − u)× (x− p).

90

Page 91: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Deste modo, se (δ [v] − δ [u]) × (y − q) > 0, entao (v − u) × (x − p) > 0 e,como x ∈ Bε0(p), devemos ter x ∈ X. Mas entao y = δ [x] ∈ δ [X]. Similarmente,se (δ [v]− δ [u])× (y − q) < 0, entao (v − u)× (x− p) < 0 e, como x ∈ Bε0(p), devemoster x 6∈ X e, logo, y = δ [x] 6∈ δ [X].

Desta forma, para todo y ∈ Bε1(q), temos que y ∈ δ [X] se (δ [v]− δ [u])× (y − q) > 0e y 6∈ δ [X] se (δ [v]− δ [u])× (y − q) < 0. Como nossas escolhas de q e y foram ar-

bitrarias, temos entao que o segmento−−−−−→δ [u] δ [v] e de fato compatıvel com δ [X].

Como δ [·] e uma funcao contınua, temos que ∂δ [X] = δ [∂X]. Assim, o segundo, o terceiroe o quarto fato seguem imediatamente da proposicao 44. Note, contudo, que para mostrarestes tres fatos fazemos forte uso de que R e uma boa representacao para X.

Ate aqui mostramos que se R e uma boa representacao para X, entao δ [R] euma boa representacao para δ [X]. Para mostrar a recıproca, simplesmente observeque R = −δ [δ [R]] e que X = −δ [δ [X]] e assim, na verdade, ja demonstramos isto.

Considere agora os seguintes resultados.

Proposicao 48 — Seja X ⊆ R2 um conjunto finito de pontos no plano. Entaoexiste um valor real positivo δ0 ∈ R tal que, para todo valor real δ ∈ R

com 0 < δ < δ0 e todo par de pontos (x0, y0), (x1, y1) ∈ X no conjunto X, a abs-cissa de δ [(x0, y0)] sera menor do que a abscissa de δ [(x1, y1)] se, e somentese, x0 < x1 ∨ (x0 = x1 ∧ y0 < y1).

Prova — Seja R ⊆ R o conjunto ⋃(x0,y0)∈X(x1,y1)∈Xy0 6=y1

x0 − x1

y1 − y0

e sejaδ0 = min

(1 ∪ r ∈ R : r > 0

).

Considere entao um valor real δ ∈ R com 0 < δ < δ0 e dois pontos (x0, y0), (x1, y1) ∈ X.

Se a abscissa de δ [(x0, y0)] e menor do que a abscissa de δ [(x1, y1)], ou seja,se x0 + δy0 < x1 + δy1, vamos mostrar que x0 < x1 ou x0 = x1 e y0 < y1. De fato,se x0 > x1, entao note que devemos ter y1 > y0, pois δ > 0 e δ(y1− y0) > x0−x1. Assim,

δ >x0 − x1

y1 − y0

> 0,

contradizendo δ ser menor do que todo elemento positivo de R. Por outro lado, se x0 = x1,entao δ(y1 − y0) > x0 − x1 = 0 e, como δ > 0, devemos ter y0 < y1, como querıamos.

Conversamente, vamos mostrar que se x0 < x1 ou se x0 = x1 e y0 < y1, entao a abscissade δ [(x0, y0)] e menor do que a abscissa de δ [(x1, y1)], ou seja, x0 + δy0 < x1 + δy1. Defato, se x0 = x1 e y0 < y1, entao, como δ > 0, claramente x0 + δy0 < x1 + δy1. Por outrolado, se x0 < x1, ha dois casos. Se y0 > y1, entao devemos ter

0 < δ <x0 − x1

y1 − y0

,

91

Page 92: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

pois δ e menor do que todo elemento positivo de R. Assim, como y1 − y0 < 0, temosque δ(y1 − y0) > x0 − x1 e assim que x0+δy0 < x1+δy1. Finalmente, se x0 < x1 e y0 ≤ y1,entao, como δ > 0, obviamente x0 + δy0 < x1 + δy1, concluindo a demonstracao.

Corolario 8 — Seja X ⊆ R2 um conjunto finito de pontos no plano. Entaoexiste um valor real positivo δ0 ∈ R tal que, para todo valor real δ ∈ R

com 0 < δ < δ0, o conjunto δ [X] nao possui pontos distintos de mesma abscissa.

Prova — Sejam (x0, y0), (x1, y1) ∈ X dois pontos distintos no conjunto X. Se as duascondicoes x0 < x1 ∨ (x0 = x1 ∧ y0 < y1) e x1 < x0 ∨ (x1 = x0 ∧ y1 < y0) fossem simulta-neamente insatisfeitas, entao certamente terıamos (x0, y0) = (x1, y1) (verifique), o queseria uma contradicao.

Assim, tomando δ0 como na proposicao 48 e considerando um δ ∈ R com 0 < δ < δ0, poresta mesma proposicao e como (x0, y0) e (x1, y1) sao distintos, ou a abscissa de δ [(x0, y0)]e menor do que a abscissa de δ [(x1, y1)], ou a abscissa de δ [(x1, y1)] e menor do que aabscissa de δ [(x0, y0)].

Estes resultados nos inspiram a definir uma ordem sobre os pontos do plano: um pontoprecede o outro se, para um cisalhamento positivo suficientemente pequeno, a imagemdo primeiro ponto possui abscissa menor do que a do segundo ponto.

Definicao 64 — Dizemos que um ponto (x0, y0) ∈ R2 precedeum ponto (x1, y1) ∈ R2 se x0 < x1 ∨ (x0 = x1 ∧ y0 < y1), e denotamos istopor (x0, y0) < (x1, y1). Tambem definimos as relacoes ≤, > e ≥ sobre pontosdo plano da forma padrao.

Proposicao 49 — A ordem de precedencia de pontos em R2 e uma ordem totalsobre os pontos de R2.

Prova — Primeiro mostramos que a relacao de precedencia e uma ordem parcial de-monstrando para ela as duas propriedades de ordens parciais:

• Irreflexividade: um ponto p = (x0, y0) ∈ R2 nunca e tal que p < p, pois obvia-mente x0 = x0 mas y0 nao e menor do que y0; e

• Transitividade: sejam p0 = (x0, y0), p1 = (x1, y1), p2 = (x2, y2) ∈ R2 pontos noplano tais que p0 < p1 e p1 < p2. Devemos demonstrar que p0 < p2, ou seja,que x0 < x2 ou x0 = x2 e y0 < y2. Como p0 < p1 e p1 < p2, claramente te-mos x0 ≤ x1 ≤ x2. Logo, se x0 < x1 ou x1 < x2 temos x0 < x2. Ja se x0 = x1 = x2,como p0 < p1 e p1 < p2, devemos ter y0 < y1 < y2.

Para verificar que< e uma ordem total sobre os pontos emR2, sejam (x0, y0), (x1, y1) ∈ R2

dois pontos distintos no plano. Se x0 < x1 ou se x0 > x1, estes dois pontos sao claramentecomparaveis. Ja se x0 = x1, entao ou y0 < y1 ou y0 > y1, pois (x0, y0) 6= (x1, y1), de formaque estes pontos sao ainda comparaveis. Assim, dois pontos distintos em R2 sao semprecomparaveis por <, fazendo de < uma ordem total.

92

Page 93: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Proposicao 50 — Seja X ⊆ R2 um conjunto finito de pontos que pode serescrito como p0, p1, . . . , pn−1 com p0 < p1 < · · · < pn−1. Entao existe um valorreal positivo δ0 ∈ R tal que, para todo valor real δ ∈ R com 0 < δ < δ0, asabscissas de δ [p0] , δ [p1] , . . . , δ [pn−1] estao em ordem (estritamente) crescente.

Prova — Segue imediatamente da proposicao 48, do corolario 8 e da proposicao 49.

Perceba que, com estes resultados, podemos ordenar os pontos em um conjunto finito depontos do plano por abscissa assumindo um cisalhamento positivo suficientemente pe-queno sendo aplicado aos pontos. Note, no entanto, que em momento algum escolhemosum numero real positivo para determinar o cisalhamento e em momento algum efetiva-mente computamos o cisalhamento ou mesmo fazemos referencia a ele. Isso e o primeiropasso para atingir o que chamamos de cisalhamento simbolico, onde operamos na imagemde um conjunto (finito) de pontos por um cisalhamento suficientemente pequeno sem terque computar ou determinar este cisalhamento.

Como veremos adiante, retas verticais tem um papel importante em nosso algoritmo parao problema da uniao de polıgonos. O que mostramos a seguir nos possibilitara tratar deretas verticais na imagem de um cisalhamento simbolico sem se referir a ele. A chave eperceber que uma tal reta vertical e determinada nao mais por uma abscissa mas por umponto.

Definicao 65 — Denotamos a reta vertical que passa por um ponto p ∈ R2

por V L (p).

Definicao 66 — Seja uv um segmento de reta e seja p ∈ R2 um ponto. Dizemosque uv passa por p se u ≤ p ≤ v ou se v ≤ p ≤ u.

Proposicao 51 — Seja uv um segmento de reta e seja p ∈ R2 um ponto.Entao existe um valor real positivo δ0 ∈ R tal que, para todo valor real δ ∈ Rcom 0 < δ < δ0, a reta V L (δ [p]) intersecta o segmento δ [uv] se, e somente se, osegmento uv passa pelo ponto p.

Prova — Seja X = u, p, v ⊆ R2 um conjunto de pontos. Pela proposicao 50, temosque existe um valor real δ0 ∈ R com δ0 > 0 tal que, para todo δ ∈ R com 0 < δ < δ0, aabscissa de um ponto δ [a] com a ∈ X e menor ou igual do que a abscissa de um ponto δ [b]com b ∈ X se, e somente se, a ≤ b (verifique porque o resultado vale para a relacao ≤tambem).

Porem, a reta V L (δ [p]) intersecta o segmento de reta δ [u] δ [v] = δ [uv] se, e somente se:

• A abscissa de δ [u] for menor ou igual a abscissa de δ [p] e a abscissa de δ [p] formenor ou igual a abscissa do ponto δ [v]; ou

• A abscissa de δ [v] for menor ou igual a abscissa de δ [p] e a abscissa de δ [p] formenor ou igual a abscissa do ponto δ [u].

Como X = u, p, v, isto na verdade e equivalente a u ≤ p ≤ v ou v ≤ p ≤ u, que por

93

Page 94: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

sua vez e a definicao de uv passar por p.

Definicao 67 — Seja uv um segmento de reta que passa por um ponto p ∈ R2.Dizemos que a altura do segmento uv na reta V L (p) atraves de um cisalhamentosimbolico e a ordenada do unico ponto de mesma abscissa que p que intersecta uvse u e v possuem abscissas diferentes e a ordenada do proprio ponto p se u e vpossuem as mesmas abscissas. Esta altura sera denotada por heightp (uv).

Proposicao 52 — Seja uv um segmento de reta que passa por um ponto p ∈ R2.Entao existe um valor real positivo δ0 ∈ R tal que, para todo valor real δ ∈ Rcom 0 < δ < δ0, o segmento δ [uv] intersecta a reta V L (δ [p]) em exatamenteum ponto. Ainda, se, para cada δ ∈ R com 0 < δ < δ0, denotarmos por yδ aordenada do unico ponto em δ [uv] ∩ V L (δ [p]), entao

limδ→0

yδ = heightp (uv)

e o valor sign(yδ − heightp (uv)

)e o mesmo para todo δ ∈ R com 0 < δ < δ0.

Prova — Primeiramente, podemos assumir sem perda de generalidade que u precede v,ou seja, u < v, pois, pela proposicao 49, < e uma ordem total sobre os pontos de R2.

Em conjunto, as proposicoes 51 e 48 (tome X = u, p, v para a proposicao 48 e considereo menor valor de δ0 obtido pelas duas proposicoes) nos garantem a existencia de um δ0 ∈ Rcom δ0 > 0 tal que, para todo δ ∈ R com 0 < δ < δ0, o segmento δ [u] δ [v] intersecta a retavertical V L (δ [p]) e a abscissa de δ [u] e menor do que a abscissa de δ [v], pois u ≤ p ≤ v,ja que uv passa por p e u < v. Na verdade, sendo a abscissa de δ [u] menor do que aabscissa de δ [v], a interseccao δ [u] δ [v] ∩ V L (δ [p]) deve possuir exatamente um ponto,pois o segmento δ [u] δ [v] nao pode ser paralelo a reta vertical V L (δ [p]).

Se u e v possuem a mesma abscissa, entao u, v e p possuem a mesma abscissa e,como u ≤ p ≤ v, temos que p ∈ uv. Logo, δ [p] ∈ δ [uv] = δ [u] δ [v], e, como obvia-mente δ [p] ∈ V L (δ [p]), devemos ter δ [u] δ [v] ∩ V L (δ [p]) =

δ [p]

. Porem, a ordenada

de δ [p] e a propria ordenada de p, que neste caso e o valor heightp (uv), pois u e v tem amesma abscissa, de forma que o resultado segue trivialmente.

Ja se u e v possuem abscissas diferentes, entao o segmento uv intersecta a retavertical V L (p) em exatamente um ponto q, cuja ordenada e heightp (uv). Escrevaentao u = (ux, uy), v = (vx, vy), p = (px, py) e q = (qx, qy). Como u ≤ p ≤ v e q ∈ V L (p),devemos ter ux ≤ px = qx ≤ vx. Como q ∈ uv∩V L (p) e uv =

(1− t)u+ tv : t ∈ [0, 1]

,

devemos ter um t ∈ [0, 1] com (1 − t)u + tv = q e (1 − t)ux + tvx = px. As-sim (vx − ux)t = px − ux e, como ux < vx ja que u e v possuem abscissas diferentes

94

Page 95: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

e u < v, t =px − uxvx − ux

, de forma que

heightp (uv) = qy

= (1− t)uy + tvy

= uy + t(vy − uy)

= uy +px − uxvx − ux

(vy − uy).

De uma maneira similar, podemos tambem calcular a ordenada yδ da interseccaode δ [u] δ [v] com V L (δ [p]). Observamos que δ [u] δ [v] =

(1− t)δ [u]+ tδ [v] : t ∈ [0, 1]

e

que existe um unico t ∈ [0, 1] tal que (1− t)δ [u] + tδ [v] ∈ V L (δ [p]), ou seja, a abscissade (1− t)δ [u] + tδ [v] e px + δpy, a abscissa de δ [p]. Temos entao

(1− t)(ux + δuy) + t(vx + δvy) = px + δpy,

de forma que((vx+ δvy)− (ux+ δuy)

)t = (px+ δpy)− (ux+ δuy). Assim, como a abscissa

de δ [u] e menor do que a abscissa de δ [v], devemos ter ux + δuy < vx + δvy. Portanto,

t =(px + δpy)− (ux + δuy)

(vx + δvy)− (ux + δuy)=

(px − ux) + δ(py − uy)(vx − ux) + δ(vy − uy)

e a ordenada da interseccao e

yδ = (1− t)uy + tvy = uy + t(vy − uy) = uy +(px − ux) + δ(py − uy)(vx − ux) + δ(vy − uy)

(vy − uy).

Logo,

yδ − heightp (uv)

= uy +(px − ux) + δ(py − uy)(vx − ux) + δ(vy − uy)

(vy − uy)− uy −px − uxvx − ux

(vy − uy)

=

((px − ux) + δ(py − uy)(vx − ux) + δ(vy − uy)

− px − uxvx − ux

)(vy − uy)

=(px − ux)(vx − ux) + δ(py − uy)(vx − ux)− (vx − ux)(px − ux)− δ(vy − uy)(px − ux)(

(vx − ux) + δ(vy − uy))(vx − ux)

(vy − uy)

=δ(py − uy)(vx − ux)− δ(vy − uy)(px − ux)(

(vx − ux) + δ(vy − uy))(vx − ux)

(vy − uy)

= δ

((py − uy)(vx − ux)− (vy − uy)(px − ux)

(vx − ux)2 + δ(vy − uy)(vx − ux)

)(vy − uy).

Entao, como ux < vx, claramente

limδ→0

(yδ − heightp (uv)

)= 0,

de forma quelimδ→0

yδ = heightp (uv) .

95

Page 96: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Ainda, se impusermos a restricao adicional de que

|vy − uy||vx − ux|δ0 ≤ (vx − ux)2,

teremos que(vx − ux)2 + δ(vy − uy)(vx − ux) > 0

e, como δ > 0, que

sign(yδ − heightp (uv)

)= sign

(((py − uy)(vx − ux)− (vy − uy)(px − ux)

)(vy − uy)

),

que independe da escolha de δ ∈ R com 0 < δ < δ0.

4.5 Ideia do algoritmo

Nesta secao descrevemos os dois principais conceitos por tras de nosso algoritmo paracomputar a uniao de polıgonos: como decidir se um segmento candidato esta contido nafronteira da uniao e como obter todos os segmentos candidatos.

O primeiro passo e separar as arestas dos polıgonos em dois tipos: arestas cujo inıcioprecede o fim e arestas cujo fim precede o inıcio.

Definicao 68 — Seja e = −→uv uma aresta de um polıgono. Definimos o extremoesquerdo de e como

left(e) =

u, u < v

v, u > v.

Similarmente, definimos o extremo direito de e como

right(e) =

v, u < v

u, u > v.

Definicao 69 — Seja e = −→uv uma aresta de um polıgono. Dizemos que e e umaaresta de ida se left(e) = u e que e e uma aresta de volta se left(e) = v.

Definicao 70 — Definimos a direcao de uma aresta e de um polıgono como osımbolo → se e e uma aresta de ida e como o sımbolo ← se e e uma aresta devolta. Ainda, denotamos esta direcao por dir(e), de forma que dir(e) ∈ →,←.

O segundo passo e definir, para cada ponto no plano, uma ordem total sobre um subcon-junto das arestas de polıgonos em uma lista de polıgonos.

Definicao 71 — Dizemos que um segmento de reta uv ou uma aresta de umpolıgono correspondente a tal segmento e comparavel em um ponto p ∈ R2

se u < p ≤ v ou se v < p ≤ u.

96

Page 97: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 72 — Seja L uma lista de polıgonos, seja p ∈ R2 um ponto no plano,sejam e0 e e1 duas arestas de polıgonos em L comparaveis em p e sejam i, j ∈ N osındices dos polıgonos na lista L que possuem as arestas e0 e e1, respectivamente.Sejam ainda u = right(e0)− left(e0) ∈ R2 e v = right(e1)− left(e1) ∈ R2. Dize-mos entao que e0 precede e1 em L no ponto p se alguma das seguintes condicoesfor satisfeita:

• heightp (e0) < heightp (e1);

• heightp (e0) = heightp (e1) e u× v < 0;

• heightp (e0) = heightp (e1), u× v = 0 e(dir(e0), dir(e1)

)= (→,←); ou

• heightp (e0) = heightp (e1), u× v = 0, dir(e0) = dir(e1) e i < j.

Denotamos que e0 precede e1 em L no ponto p por e0<Lp e1.

Tentamos agora providenciar uma nocao intuitiva do que significa uma aresta e0 precederuma aresta e1 em L no ponto p. O primeiro criterio e a altura onde as arestas cruzama reta vertical contendo p (lembrando que se e0 ou e1 forem verticais esta altura e aordenada de p). Se houver empate, o criterio utilizado e o comportamento em umavizinhanca do cruzamento com a reta vertical, sendo que a aresta que “vinha mais debaixo” precede a aresta que “vinha mais de cima”. Se novamente houver empate, osproximos dois criterios sao tecnicos e servem para auxilar os resultados subsequentes.O primeiro criterio remanescente e a direcao da aresta e o segundo o identificador dopolıgono de origem. Claramente, se houver empate em todos estes criterios, e0 e e1 sao amesma aresta.

Proposicao 53 — Para toda lista L de polıgonos e todo ponto p ∈ R2, a or-dem<L

p e uma ordem total sobre as arestas de polıgonos em L que sao comparaveisem p.

Prova — Elementar.

Definicao 73 — Para toda lista L de polıgonos e todo todo ponto p ∈ R2,definimos os operadores >L

p , ≤Lp , ≥Lp e =Lp da forma convencional, isto e, para

todas as arestas de polıgonos e0 e e1 comparaveis em p:

• e0>Lp e1 ⇐⇒ e1<

Lp e0;

• e0≤Lp e1 ⇐⇒ ¬(e1<Lp e0);

• e0≥Lp e1 ⇐⇒ ¬(e0<Lp e1); e

• e0=Lp e1 ⇐⇒ ¬(e0<

Lp e1) ∧ ¬(e1<

Lp e0).

E importante observar que duas arestas e0 e e1 de dois polıgonos de ındices diferentesna lista L, quando ambas comparaveis em um ponto p, sempre ocorrera ou que e0<

Lp e1

ou que e1<Lp e0, mesmo quando estas arestas representam o mesmo segmento de reta

no plano, quando elas possuem a mesma orientacao e quando seus polıgonos de origemrepresentam o mesmo conjunto de pontos no plano.

97

Page 98: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

A motivacao para incluir o produto cruzado u × v na definicao da ordem <Lp e que

desejamos, como veremos bem mais adiante, que esta ordem se mantenha a mesma ime-diatamente a esquerda do ponto p. Tornamos esta nocao mais precisa com o resultado aseguir.

Proposicao 54 — Seja L uma lista de polıgonos e sejam p0, p1 ∈ R2 dois pontosno plano com p0 < p1. Sejam ainda e0 e e1 duas arestas de polıgonos em L com-paraveis em ambos os pontos p0 e p1 tais que nao existe um ponto chave p ∈ K(L)na interseccao de e0 com e1 satisfazendo p0 ≤ p < p1. Entao e0<

Lp0e1 se, e somente

se, e0<Lp1e1.

Prova — Observe que a definicao da ordem <Lp envolve quatro fatores: a altura das

arestas, o produto cruzado u× v, as direcoes das arestas e os ındices dos polıgonosde origem das arestas. Destes, apenas as alturas das arestas dependem do ponto p.Assim, se e0 e e1 tem uma interseccao infinita, entao heightp (e0) = heightp (e1) para todoponto p ∈ R2 no qual e0 e e1 sao comparaveis, de forma que, neste caso, o resultado seguetrivialmente. Assim, podemos assumir, sem perda de generalidade, que e0 e e1 possuemuma interseccao finita.

Defina agora u0 = left(e0), v0 = right(e0), u1 = left(e1) e v1 = right(e1). Recor-remos entao novamente aos cisalhamentos, aplicando a proposicao 50 ao conjunto fi-nito X = u0, v0, u1, v1, p0, p1 ∪ (u0v0 ∩ u1v1) e as proposicoes 51 e 52 as quatro com-binacoes de pontos e arestas envolvendo e0 e e1 como arestas e p0 e p1 como pontos,obtendo assim um valor δ ∈ R com δ > 0 tal que:

• Para todos os pontos a, b ∈ X, a abscissa de δ [a] e menor do que a abscissa de δ [b]se, e somente se, a precede b (a < b);

• A ordenada y00 da interseccao de δ [u0v0] com V L (δ [p0]) e menor do quea ordenada y10 da interseccao de δ [u1v1] com V L (δ [p0]) se, e somentese, heightp0 (e0) < heightp0 (e1); e

• A ordenada y01 da interseccao de δ [u0v0] com V L (δ [p1]) e menor do quea ordenada y11 da interseccao de δ [u1v1] com V L (δ [p1]) se, e somentese, heightp1 (e0) < heightp1 (e1).

Novamente lembramos que a ordem <Lp depende do ponto p apenas para determi-

nar as alturas. Assim, continuamos esta demonstracao separando-a em dois ca-sos: heightp1 (e0) < heightp1 (e1) e heightp1 (e0) = heightp1 (e1). Lembramos que podemosassumir, sem perda de generalidade, que heightp1 (e0) ≤ heightp1 (e1), pois do contrariotrocamos e0 com e1.

O caso mais facil e o caso em que heightp1 (e0) < heightp1 (e1), onde claramente ocorreque e0<

Lp1e1. Com o que vimos, temos que y01 < y11. Suponha entao, para fins de um

argumento por contradicao, que y00 ≥ y10. Deve haver entao um ponto q ∈ R2 tal quea abscissa de δ [p0] e menor ou igual a abscissa de δ [q], tal que a abscissa de δ [q] emenor do que a abscissa de δ [p1] e tal que δ [q] = δ [u0v0] ∩ δ [u1v1], isto e, δ [u0v0] deveintersectar δ [u1v1] entre os pontos δ [p0] e δ [p1] (mas nao em δ [p1]). Porem, devemoster que q ∈ X, de forma que p0 ≤ q < p1. Agora, como q e a interseccao finita dasduas arestas e0 e e1, devemos ter tambem que q ∈ K(L), uma contradicao. Logo devemosconcluir que y00 < y10 e assim que heightp0 (e0) < heightp0 (e1) e logo que e0<

Lp0e1, como

98

Page 99: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

querıamos.

Resta entao tratarmos do caso em que heightp1 (e0) = heightp1 (e1), ou seja, y01 = y11.Antes de comecarmos propriamente, no entanto, vamos mostrar um fato importante. Paraisso, seja x1 a abscissa de δ [p1], de forma que b = (x1, y01) = (x1, y11) ∈ R2 e a interseccaode δ [u0v0] (ou δ [u1v1]) com a reta vertical V L (δ [p1]). Seja ainda x0 a abscissa de δ [p0] esejam a0, a1 ∈ R2 os pontos dados por a0 = (x0, y00) e a1 = (x0, y10). Em outras palavras,sejam a0 e a1 as respectivas interseccoes de δ [u0v0] e δ [u1v1] com a reta vertical V L (δ [p0]).Claramente entao, os vetores δ [v0]−δ [u0] e b−a0 tem o mesmo sentido, do mesmo modoque os vetores δ [v1]− δ [u1] e b− a1 tem o mesmo sentido. Assim, temos que

sign((δ [v0]− δ [u0])× (δ [v1]− δ [u1])

)= sign

((b− a0)× (b− a1)

).

Porem, pelo lema 8,

(δ [v0]− δ [u0])× (δ [v1]− δ [u1]) = δ [v0 − u0]× δ [v1 − u1] = (v0 − u0)× (v1 − u1).

Logo, o sinal de (v0 − u0)× (v1 − u1) e o sinal de

(b− a0)× (b− a1) =((x1, y01)− (x0, y00)

)×((x1, y01)− (x0, y10)

)= (x1 − x0, y01 − y00)× (x1 − x0, y01 − y10)

= (x1 − x0)(y01 − y10)− (y01 − y00)(x1 − x0)

= (x1 − x0)(y01 − y10 − y01 + y00)

= (x1 − x0)(y00 − y10)

e, como x0 < x1,sign

((v0 − u0)× (v1 − u1)

)= sign(y00 − y10).

Voltamos entao ao que estavamos fazendo. Se heightp1 (e0) = heightp1 (e1) elogo y01 = y11, temos dois sub-casos: (v0 − u0)× (v1 − u1) < 0 e (v0−u0)× (v1−u1) = 0.Note que podemos assumir, sem perda de generalidade, que (v0−u0)× (v1−u1) ≤ 0, poisdo contrario trocamos e0 e e1 (como heightp1 (e0) = heightp1 (e1), nao precisamos realizara troca de e0 com e1 anterior e logo e0 e e1 aqui sao realmente arbitrarios).

Se (v0 − u0) × (v1 − u1) < 0, entao claramente e0<Lp1e1 e tambem, como acabamos de

ver y00 < y10. Mas isto mostra que heightp0 (e0) < heightp0 (e1) e logo que e0<Lp0e1, como

querıamos.

Por outro lado, se (v0 − u0) × (v1 − u1) = 0, temos apenas que y00 = y10

e logo que heightp0 (e0) = heightp0 (e1). Mas entao heightp0 (e0) = heightp0 (e1)e heightp1 (e0) = heightp1 (e1), de forma que e0<

Lp0e1 se, e somente se, e0<

Lp1e1, pois, nova-

mente, o papel exercido pelo ponto nesta ordem e apenas o de determinar a altura.

Iremos agora estabelecer um resultado que consiste em uma melhora (embora nao atin-gindo ainda a perfeicao) do processo de ray casting descrito na secao 2.2.

Definicao 74 — Seja uv um segmento de reta comparavel em um ponto p talque p 6∈ uv. Assim sendo, o segmento uv nao pode ser vertical, ou seja, a abscissade u deve diferir da abscissa de v. Logo, temos que a interseccao uv ∩ V L (p) dosegmento uv com a reta vertical passando por p possui exatamente um ponto comordenada heightp (uv). Dizemos entao que uv esta abaixo de p se heightp (uv)for menor do que a ordenada de p e que uv esta acima de p caso contrario.

99

Page 100: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Lema 10 — Seja P um polıgono e seja p ∈ R2 \ ∂P um ponto no plano fora dafronteira de P . Entao:• Se p 6∈ P , dentre as arestas de P comparaveis em p e abaixo de p, o numero

de arestas de ida e igual ao numero de arestas de volta; e• Se p ∈ P , dentre as arestas de P comparaveis em p e abaixo de p, o numero

de arestas de ida e igual a um mais numero de arestas de volta.

Prova — Primeiramente iremos demonstrar este lema assumindo que os vertices dopolıgono P tem abscissas duas a duas distintas e que o ponto p ∈ R2 \ ∂P tem umaabscissa diferente das abscissas dos vertices do polıgono P . Esta prova e bastante similara demonstracao da proposicao 8.

Sejaγ : (0,∞) → R2

t 7→ p− t(0, 1),

a parametrizacao de uma semi-reta contida em V L (p) com origem em p eseja T =

t ∈ R : t > 0 ∧ γ(t) ∈ ∂P

um conjunto de numeros reais. Como a abscissa

de u e diferente da abscissa de v para toda aresta −→uv ∈ E(P ), temos que uv ∩ V L (p) euma interseccao finita, de forma que T e um conjunto finito, e pode portanto ser escritocomo T = t0, t1, . . . , tn−1 com 0 < t0 < t1 < · · · < tn−1.

Como a abscissa de p e diferente da abscissa de v para todo vertice v ∈ V (P ), temosque, para cada i ∈ 0, 1, . . . , n− 1, existe exatamente uma aresta ei que contem contemo ponto γ(ti). Ainda, como cada aresta de P pode intersectar Im(γ) ⊆ V L (p) apenasuma vez, as arestas e0, e1, . . . , en−1 sao duas a duas distintas.

Observe entao que as arestas e0, e1, . . . , en−1 sao precisamente as arestas de P comparaveisem p e abaixo de p. De fato, como as abscissas de p e dos vertices de P sao duas aduas distintas, uma aresta −→uv ∈ E(P ) e tal que uv e comparavel em p se, e somentese, uv ∩ V L (p) 6= . Ainda, uma tal aresta esta abaixo de p se, e somente se, a orde-nada heightp (uv) desta interseccao e menor do que a ordenada de p.

Mostraremos agora, por inducao em n, que:

• Se p 6∈ P , entao o numero de arestas de ida em e0, e1, . . . , en−1 e igual ao numerode arestas de volta em e0, e1, . . . , en−1; e

• Se p ∈ P , entao o numero de arestas de ida em e0, e1, . . . , en−1 e igual a um maiso numero de arestas de volta em e0, e1, . . . , en−1.

O caso base ocorre quando n = 0. Neste caso, como Im(γ) nao intersecta ∂P , devemoster p 6∈ P . Assim, a hipotese indutiva vale trivialmente.

Ja se n > 0, definimos t′ ∈ R como t′ = t0 + 1 se n = 1 e t′ =t0 + t1

2se n > 1 (de modo

que 0 < t0 < t′ < t1). Definimos tambem o ponto p′ ∈ R2 como p′ = γ(t′). Note que aabscissa de p′ e a mesma abscissa de p, de forma que V L (p′) = V L (p) e que as abscissasdos vertices de P e a abscissa de p′ sao duas a duas distintas. Observe ainda que as arestasde P que intersectam V L (p′) em um ponto de ordenada menor do que a ordenada de p′ saoprecisamente as arestas e1, e2, . . . , en−1, sendo estas tambem precisamente as arestas de Pcomparaveis em p′ e abaixo de p′. Tambem devemos ter p′ 6∈ ∂P , pois as interseccoes

100

Page 101: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

de arestas de P com Im(γ) sao os pontos no conjuntoγ(t0), γ(t1), . . . , γ(tn−1)

, do

qual p′ = γ(t′) nao faz parte.

Temos entao que a hipotese indutiva vale para p′ e o polıgono P , de forma que:

• Se p′ 6∈ P , entao o numero de arestas de ida em e1, e2, . . . , en−1 e igual ao numerode arestas de volta em e1, e2, . . . , en−1; e

• Se p′ ∈ P , entao o numero de arestas de ida em e1, e2, . . . , en−1 e igual a um maiso numero de arestas de volta em e1, e2, . . . , en−1.

Observe agora que devemos ter que p ∈ P se, e somente se, p′ 6∈ P , pois ha precisamenteuma aresta de P que intersecta (e cruza), o segmento pp′: a aresta e0. Por causa disto,como as arestas de P estao orientadas em sentido anti-horario, devemos ter que e0 e umaaresta de ida se, e somente se, p ∈ P e p′ 6∈ P . De fato, se e0 = −→uv, devemos ter que p ∈ Pse, e somente se, (p′ − p) × (v − u) > 0 e, como p′ − p e um segmento vertical, tambemdevemos ter que −→uv e uma aresta de ida se, e somente se, (p− p′)× (v − u) > 0.

Assim, se p ∈ P , entao p′ 6∈ P e, pela hipotese indutiva, ha o mesmo numero de arestasde ida e de arestas de volta em e1, e2, . . . , en−1. Tambem vimos que, neste caso, e0

deve ser uma aresta de ida, e assim o numero de arestas de ida em e0, e1, . . . , en−1deve exceder em um o numero de arestas de volta em e0, e1, . . . , en−1. Por outro lado,se p 6∈ P , entao p′ ∈ P e, novamente pela hipotese indutiva, o numero de arestas de idaem e1, e2, . . . , en−1 e um mais do que o numero de arestas de volta em e1, e2, . . . , en−1.Porem, vimos que e0 neste caso deve ser uma aresta de volta, e assim ha o mesmonumero de arestas de ida e arestas de volta em e0, e1, . . . , en−1, concluindo esta provapor inducao.

Ate aqui mostramos que o lema e valido desde que o ponto p e os vertices do polıgono Ptenham abscissas distintas duas a duas. Gostarıamos de estender este resultado de formasimples ao caso geral, e para isso fazemos uso do que desenvolvemos sobre cisalhamentos.

Comecamos aplicando a proposicao 50 ao conjunto X = V (P ) ∪ p e as proposicoes 51e 52 a cada aresta de P , obtendo um valor δ ∈ R com δ > 0 tal que:

• Para todos os pontos a, b ∈ X, a abscissa de δ [a] e menor do que a abscissa de δ [b]se, e somente se, a precede b (a < b);

• Para toda aresta −→uv ∈ E(P ), δ [uv] intersecta V L (δ [p]) se, e somente se, uv ecomparavel em p;

• Para toda aresta −→uv ∈ E(P ) comparavel em p e abaixo de p, o segmento δ [uv]intersecta V L (δ [p]) em exatamente um ponto (x, y) com y < heightp (uv); e

• Para toda aresta −→uv ∈ E(P ) comparavel em p e acima de p, o segmento δ [uv]intersecta V L (δ [p]) em exatamente um ponto (x, y) com y > heightp (uv).

Note que nao existem arestas de P contendo p porque p 6∈ ∂P .

Observe agora que, pela proposicao 46, δ [P ] e um polıgono e que, pelo corolario 1(com Ω0 = Ω1 = R2 e f = δ [·]), ∂δ [P ] = δ [∂P ], de forma que δ [p] 6∈ ∂δ [P ]. Ainda,obviamente o ponto p esta em P se, e somente se, o ponto δ [p] esta em δ [P ]. Porem, oponto δ [p] possui abscissa diferente das abscissas dos vertices de δ [P ] e os vertices de δ [P ]possuem abscissas duas a duas distintas. Logo, o lema, como acabamos de mostrar, vale

101

Page 102: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

para δ [P ] e δ [p]. Assim, para terminar de provar o lema por completo, devemos mostrarapenas que toda aresta −→uv ∈ E(P ) e tal que uv e comparavel em p e esta abaixo de p se,e somente se, δ [uv] e comparavel em δ [p] e esta abaixo de δ [p].

De fato, se uv e comparavel em p e esta abaixo de p, entao podemos assumir, sem perda degeneralidade, que u < p < v, pois p 6∈ V (P ) ⊆ ∂P . Logo, as abscissas de δ [u], δ [p] e δ [v]devem estar em ordem estritamente crescente, de forma que δ [u] < δ [p] < δ [v] e logoque δ [uv] e comparavel em δ [p]. Ainda, como uv esta abaixo de p, devemos ter que uvintersecta V L (p) em exatamente um ponto com ordenada menor do que a ordenada de p.Logo, pela proposicao 52 e por nossa escolha de δ, temos que δ [uv] intersecta V L (δ [p])em exatamente um ponto cuja ordenada deve ser tambem menor do que a ordenada de p,que e exatamente a ordenada de δ [p]. Assim, devemos concluir que δ [uv] esta de fatoabaixo de δ [p].

Conversamente, se δ [uv] e comparavel em δ [p] e esta abaixo de δ [p], podemos assumir,sem perda de generalidade, que δ [u] < δ [p] < δ [v], pois

δ [p] 6∈ V(δ [P ]

)= δ [V (P )] ⊆ δ [∂P ] = ∂δ [P ].

No entanto, as abscissas de δ [u], δ [p] e δ [v] devem ser duas a duas distintas, e assimdevemos ter que as abscissas de δ [u], δ [p] e δ [v] devem estar em ordem estritamentecrescente, de forma que u < p < v, pois p 6∈ V (P ) ⊆ ∂P . Logo, uv deve ser comparavelem p. Porem, p 6∈ uv ⊆ ∂P , e assim uv ∩ V L (p) deve possuir exatamente um pontocom ordenada diferente da ordenada de p. No entanto, como δ [uv] esta abaixo de δ [p],o segmento δ [uv] intersecta a reta vertical V L (δ [p]) em exatamente um ponto cujaordenada e menor do que a ordenada de δ [p], que e a ordenada de p. Novamente entaoa proposicao 52 e a nossa escolha de δ nos garantem que o unico ponto em que uvintersecta V L (p) tem ordenada menor do que a ordenada de p. Assim, temos que defato uv esta abaixo de p, finalmente concluindo esta demonstracao.

Em uma entrada generica para o problema 2, arestas de polıgonos diferentes podem sesobrepor, e assim cada segmento candidato pode estar em varias arestas.

Definicao 75 — Seja L uma lista de polıgonos, e = −→uv a j-esima aresta do i-esimo polıgono em L e sejam p, q ∈ K(L)∩uv tais que p < q e que o segmento pqe um segmento candidato de L. Dizemos entao que a quadrupla (i, j, p, q) e umarepresentacao do segmento candidato pq.

Note que cada segmento candidato admite exatamente uma representacao para cadapolıgono na lista que possui uma aresta que contem o segmento candidato.

A seguinte definicao e o resultado que a sucede contem uma das principais ideias de nossoalgoritmo: como descobrir se um segmento candidato esta contido na fronteira da uniaode polıgonos.

102

Page 103: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Definicao 76 — Seja L uma lista de polıgonos, seja (i, j, u, v) uma representacaode um segmento candidato uv (u < v) de L e seja e a j-esima aresta do i-esimo polıgono de L. Dizemos entao que a representacao (i, j, u, v) e uma boarepresentacao do segmento candidato uv se, dentre as arestas de polıgonosem L comparaveis em v, o numero de arestas de ida que precedem e em L noponto v for igual ao numero de arestas de volta que nao sao precedidas por eem L no ponto v.

Proposicao 55 — Seja L uma lista de polıgonos cuja uniao e U ⊆ R2 e seja uvum segmento candidato de L. Assim,• Se uv 6⊆ ∂U , entao o segmento candidato uv nao possui uma boa repre-

sentacao; e• Se uv ⊆ ∂U , entao existe exatamente uma boa representacao de uv.

Prova — Comecamos definindo quatro conjuntos de arestas de polıgonos em L:

• E e o conjunto das arestas de polıgonos em L comparaveis em v;

• E= e o conjunto das arestas e de polıgonos em L correspondentes a um seg-mento ab comparavel em v e tal que heightv (ab) e igual a ordenada de ve(right(e)− left(e)

)× (v − u) = 0;

• E< e o conjunto das arestas e de polıgonos em L correspondentes a um segmento abcomparavel em v tal que heightv (ab) e menor do que a ordenada de v ou talque heightv (ab) e igual a ordenada de v e

(right(e)− left(e)

)× (v − u) < 0; e

• E> e o conjunto das arestas e de polıgonos em L correspondentes a um segmento abcomparavel em v tal que heightv (ab) e maior do que a ordenada de v ou talque heightv (ab) e igual a ordenada de v e

(right(e)− left(e)

)× (v − u) > 0.

E importante observar que duas arestas oriundas de polıgonos de ındices diferentes nalista L sao sempre consideradas elementos distintos nestes conjuntos, mesmo que elascorrespondam ao mesmo segmento de reta, mesmo que elas possuam a mesma direcaoe mesmo que seus polıgonos de origem correspondam ao mesmo conjunto de pontos.Isto e extremamente importante pois faremos contagens de elementos destes conjuntosposteriormente. Ainda, observamos que E = E< ∪ E= ∪ E>.

Uma das maiores dificuldades em mostrar este resultado diretamente e a presenca dearestas verticais. Contornamos este problema fazendo uso de um cisalhamento. Maisprecisamente, aplicamos a proposicao 50 ao conjunto X = K(L) e as proposicoes 51 e 52as arestas de polıgonos em L em relacao ao ponto v, obtendo um valor δ ∈ R com δ > 0tal que:

• Para todos os pontos a, b ∈ X = K(L), a abscissa de δ [a] e menor do que a abscissade δ [b] se, e somente se, a precede b (a < b); e

• Para toda aresta de polıgonos em L correspondente a um segmento de reta abcomparavel em v, δ [ab] e comparavel em δ [v] e o sinal de y − heightv (ab) e igualao sinal de y − heightδ[v] (δ [ab]), onde y e a ordenada de v e logo de δ [v].

O proximo passo e localizar um ponto apropriado sobre o segmento δ [uv]. Para isso, ob-

103

Page 104: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

serve que existe ao menos um ponto chave de L que precede v, nominalmente o ponto u.Assim, existe um unico ponto chave predecessor de v, ou seja, existe um unico pontochave q0 ∈ K(L) tal que q0 < v e tal que nao existe outro ponto chave q ∈ K(L)com q0 < q < v. Observe entao que u ≤ q0 < v, de forma que, como q0 ∈ K(L) = X,a abscissa de δ [u] e menor ou igual a abscissa de δ [q0] e a abscissa de δ [q0] e menor

do que a abscissa de δ [v]. Assim, a abscissa deδ [q0] + δ [v]

2esta estritamente entre as

abscissas de δ [u] e δ [v], de forma que existe um unico ponto p ∈ R2 tal que δ [p] esta na

interseccao de δ [uv] com a reta vertical V L

(δ [q0] + δ [v]

2

). Este ponto p esta contido

no segmento uv e e tal que as abscissas de δ [u], δ [p] e δ [v] estao em ordem estritamentecrescente. Ainda, para todo ponto chave q ∈ K(L) com q < v, as abscissas de δ [q], δ [p]e δ [v] estao em ordem estritamente crescente, embora em geral nao valha que q < p < vporque p 6∈ K(L) = X, de forma que a nossa aplicacao da proposicao 50 nao levou emconta o ponto p.

Relacionamos agora os conjuntos E, E<, E= e E> com o ponto p mostrando os quatroseguintes fatos:

• Uma aresta e de um polıgono em L correspondente a um segmento de reta ab estaem E se, e somente se, δ [ab] e comparavel em δ [p]:

– (⇒): Se e ∈ E, entao ab e comparavel em v e podemos assumir, sem perda degeneralidade, que a < v ≤ b. Assim, como a ∈ K(L), as abscissas de δ [a], δ [p]e δ [v] estao em ordem estritamente crescente, de modo que δ [ab] e comparavelem δ [p] porque a abscissa de δ [v] e menor ou igual a abscissa de δ [b];

– (⇐): Se δ [ab] e comparavel em δ [p], entao, como a, b ∈ K(L), podemos assu-mir, sem perda de generalidade, que as abscissas de δ [a], δ [p] e δ [b] estao emordem estritamente crescente. Porem, v e o menor ponto chave cuja abscissapelo cisalhamento por δ e maior do que abscissa de δ [p], de forma que a abs-cissa de δ [v] e menor ou igual a abscissa de δ [b]. Logo, temos que a < v ≤ b,que ab e comparavel em v e que e ∈ E;

• Uma aresta e de um polıgono em L correspondente a um segmento de reta ab estaem E= se, e somente se, δ [ab] contem δ [p]:

– (⇒): Se e ∈ E=, entao ab intersecta uv no ponto v, de forma que δ [ab]intersecta δ [uv] no ponto δ [v]. Mais ainda, temos que (b − a) × (v − u) = 0,de forma que ab e uv sao colineares e que, por consequencia, δ [ab] e δ [uv] saocolineares. Porem, como vimos, e ∈ E= ⊆ E implica em δ [ab] ser comparavelem δ [p] ∈ δ [uv], de forma que devemos ter δ [p] ∈ δ [ab];

– (⇐): Se δ [ab] contem δ [p], entao ab contem p, que por sua vez esta em uv.Assim, a interseccao de ab com uv e infinita, pois do contrario p seria um pontochave. Logo ab e uv sao colineares. Porem, ab conter p implica em δ [ab] sercomparavel em δ [p], de forma que, como vimos antes, ab e comparavel em v.Logo, como ab e uv sao colineares, devemos ter heightv (ab) igual a ordenadade v e (b− a)× (v − u) = 0, de forma que e ∈ E=;

• Uma aresta e de um polıgono em L correspondente a um segmento de reta ab estaem E< se, e somente se, o segmento δ [ab] e comparavel em δ [p], nao contem o

104

Page 105: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

ponto δ [p] e esta abaixo de δ [p]:

– (⇒): Se e ∈ E< ⊆ E, entao ab e comparavel em v e δ [ab] e comparavelem δ [p]. Ainda, heightv (ab) e menor ou igual a ordenada y do ponto v.Se heightv (ab) = y, entao temos que heightδ[v] (δ [ab]) = y. Porem, tambemtemos, assumindo a < b sem perda de generalidade, que (b− a)× (v − u) < 0e, pelo lema 8, que (δ [b] − δ [a]) × (δ [v] − δ [u]) < 0, de forma que ab naopode conter p (pois ab e uv nao sao colineares) e ab deve estar abaixo de p.Ja se heightv (ab) < y e logo heightδ[v] (δ [ab]) < y, observe que δ [ab] nao podeintersectar δ [uv] em um ponto com abscissa maior ou igual a de δ [p] e menordo que a de δ [v] (pois nao ha pontos chave com imagens por δ [·] com estasabscissas e a interseccao de ab e uv deve ser finita). Logo, devemos tambemter que δ [ab] nao contem δ [p] e esta abaixo de δ [p] ∈ δ [uv];

– (⇐) Suponha que δ [ab] e comparavel em δ [p], nao contem δ [p] e esta abaixode δ [p]. Ja vimos que ab e comparavel em v, de forma que, assumindo a < bsem perda de generalidade, a abscissa de δ [a] e menor do que a abscissa de δ [p]e a abscissa de δ [b] e maior ou igual a abscissa de δ [v]. Vimos tambemque δ [ab] nao pode intersectar δ [uv] em um ponto com abscissa maior ouigual a de δ [p] e menor do que a de δ [v]. Assim, devemos concluir que δ [ab]intersecta V L (δ [v]) em um ponto de ordenada menor ou igual a ordenadade v, que e a mesma que a ordenada de δ [v]. Se, no entanto, estas ordenadasforem iguais, precisamos ter (δ [b]− δ [a])× (δ [v]− δ [u]) < 0, que, pelo lema 8,equivale a (b − a) × (v − u) < 0, pois do contrario δ [ab] nao estaria abaixode δ [p]. Logo, temos de fato que e ∈ E<; e

• Uma aresta e de um polıgono em L correspondente a um segmento de reta ab estaem E> se, e somente se, o segmento δ [ab] e comparavel em δ [p], nao contem oponto δ [p] e esta acima de δ [p]:

– Na prova desta proposicao nao iremos usar este fato e nem, na verdade, fare-mos mencao futura ao conjunto E>, tendo introduzido este conjunto apenaspor completude. Assim, observamos que esta demonstracao e completamenteanaloga a demonstracao anterior e a deixamos como exercıcio ao leitor.

Passando ao proximo passo, como arestas sao conjuntos fechados e como p 6∈ K(L), existeum valor real ε ∈ R com ε > 0 tal que Bε

(δ [p]

)nao intersecta δ [K(L)] e nem a imagem

por δ [·] de um segmento correspondente a uma aresta de um polıgono em L, exceto asarestas em E=.

Escolha entao dois pontos p0, p1 ∈ R2 tais que δ [p0] , δ [p1] ∈ Bε

(δ [p]

), tais que as abs-

cissas de δ [p0] e δ [p1] sejam iguais a abscissa de δ [p] e tais que p0 possua uma ordenadamenor do que a ordenada de p e p1 possua uma ordenada maior do que a ordenada de p.(Note que as ordenadas das imagens de pontos por δ [·] sao iguais as dos pontos origi-nais). Por esta construcao, temos que um segmento de reta ab correspondente a umaaresta em um polıgono em L e sempre tal que δ [ab] e comparavel em δ [p] se, e somentese, δ [ab] for comparavel em δ [p0] (ou δ [p1]). O que muda sao as relacoes destas arestascom p0 e com p1. De fato, como δ [p0], δ [p] e δ [p1] compartilham as mesmas abscissas ecomo δ [u] nao possui a mesma abscissa que δ [v], devemos ter que δ [p0] , δ [p1] 6∈ δ [uv],ou seja, p0, p1 6∈ uv, de forma que nao existem arestas em polıgonos de L contendo p0

ou p1 (lembre que apenas arestas em E= podem intersectar −δ [Bε(δ [p])]). Ainda, temos

105

Page 106: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

que:

• As arestas de polıgonos em L correspondentes a segmentos de reta ab tais que δ [ab]e comparavel em δ [p0] e esta abaixo de δ [p0] sao precisamente as arestas em E<; e

• As arestas de polıgonos em L correspondentes a segmentos de reta ab tais que δ [ab] ecomparavel em δ [p1] e esta abaixo de δ [p1] sao precisamente as arestas em E<∪E=.

O truque e entao observar que, como ja vimos antes, nao existem arestas de polıgonosem L contendo p0 ou p1, de forma p0 e p1 nao estao na fronteira de nenhum polıgonoem L, o que nos possibilita aplicar o lema 10 aos pontos δ [p0] e δ [p1] juntamente com aimagem por δ [·] de cada polıgono em L obtendo os dois seguintes fatos:

• O numero de polıgonos em L cuja imagem por δ [·] contem δ [p0] e #−→E< −#

←−E<; e

• O numero de polıgonos em L cuja imagem por δ [·] contem δ [p1] e(#−→E= + #

−→E<

)−(

#←−E= + #

←−E<

),

onde #−→A denota o numero de arestas de ida em um conjunto de arestas A e #

←−A denota

o numero de arestas de volta em um conjunto de arestas A. Em outras palavras

• O numero de polıgonos em L contendo p0 e #−→E< −#

←−E<; e

• O numero de polıgonos em L contendo p1 e(

#−→E= + #

−→E<

)−(

#←−E= + #

←−E<

).

Observe entao que o segmento δ [uv] particiona Bε

(δ [p]

)\ δ [uv] em duas partes

A0 =q ∈ Bε

(δ [p]

): (δ [v]− δ [u])×

(q − δ [p]

)> 0

eA1 =

q ∈ Bε

(δ [p]

): (δ [v]− δ [u])×

(q − δ [p]

)< 0,

cada uma das quais esta (pelo teorema do valor intermediario) inteiramente contidaem δ [U] ou em δ [R2 \ U ] (lembre que Bε

(δ [p]

)nao pode intersectar a imagem por δ [·]

de arestas de polıgonos em L nao colineares com uv). Porem ambas estas partes nao po-dem estar contidas em δ [R2 \ U ] = R2 \ δ [U ] porque uv esta contido em alguma arestade algum polıgono P em L, de forma que ou A0 ⊆ δ [P ] ou A1 ⊆ δ [P ]. Ainda, temosque δ [p0] ∈ A0 e δ [p1] ∈ A1. Logo, temos que p ∈ ∂U se, e somente se, p0 ∈ U e p1 6∈ Uou p0 6∈ U e p1 ∈ U . Assim, tambem segue que p ∈ U se, e somente se, p0, p1 ∈ U .

Agora, como E= e um conjunto finito, podemos escrever E= = e0, e1, . . . , en−1com e0<

Lv e1<

Lv · · ·<L

v en−1. Note, no entanto, que toda aresta em E= deve conter osegmento uv (pois uv e colinear com uma tal aresta, que deve ser comparavel em v,e nao pode existir um ponto chave entre u e v contido em uv). Ainda, como todas asarestas em E= sao duas a duas colineares, as arestas de ida em E= devem preceder asarestas de volta em E= em relacao a ordem <L

v , de forma que existe um numero na-tural k ∈ 0, 1, . . . , n tal que e0, e1, . . . , ek−1 sao arestas de ida e ek, ek+1, . . . , en−1 saoarestas de volta.

Alem da observacao de que todas as arestas em E= contem uv, podemos adicionar quetoda aresta em polıgonos em L que contem uv esta em E=. Assim, toda representacao

106

Page 107: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

do segmento candidato uv deve ser em relacao a uma aresta ei com i ∈ 0, 1, . . . , n− 1e cada aresta ei com i ∈ 0, 1, . . . , n− 1 produz uma representacao para uv.

Suponha agora que ei e uv formam uma boa representacao de uv eque i ∈ k, k + 1, . . . , n− 1. Temos entao que, dentre as arestas de polıgonos em Lcomparaveis em v (ou seja, as arestas em E), as arestas que precedem ei em L no ponto vsao precisamente as arestas e0, e1, . . . , ei−1 juntamente com as arestas em E< e que asarestas que nao sao precedidas por ei em L no ponto v sao precisamente e0, e1, . . . , eimais as arestas em E<. Logo, as arestas de ida em E que precedem ei em L no ponto vsao precisamente as arestas de ida em E< e as arestas e0, e1, . . . , ek−1 (pois k ≤ i),

totalizando #−→E< + k arestas. Similarmente, as arestas de volta em E que nao prece-

dem ei em L no ponto v sao precisamente as arestas de volta em E< e ek, ek+1, . . . , ei,

totalizando #←−E< + i− k + 1 arestas. Porem, estamos assumindo que ei e uv constituem

uma boa representacao, e assim devemos ter #−→E< + k = #

←−E< + i − k + 1, de forma

que #−→E< −#

←−E< = i− 2k + 1. No entanto, o numero de polıgonos em L contendo p1 e(

#−→E + #

−→E<

)−(

#←−E + #

←−E<

)= k + #

−→E< − (n− k)−#

←−E<

= #−→E< −#

←−E< + 2k − n,

e assim #−→E<−#

←−E<+2k−n ≥ 0, de forma que #

−→E<−#

←−E< ≥ n−2k. Portanto, devemos

ter que i− 2k + 1 ≥ n− 2k, ou seja, que i ≥ n− 1. Assim, das arestas ek, ek+1, . . . , en−1,apenas en−1 pode participar de uma boa representacao de uv.

Fazemos entao o raciocınio analogo para as arestas e0, e1, . . . , ek−1, isto e, assumimosque ei participa de uma boa representacao de uv e i ∈ 0, 1, . . . , k−1. Novamente, dentreas arestas em E, temos que precisamente as arestas de E< e e0, e1, . . . , ei−1 precedem eiem L no ponto v e que precisamente as arestas de E< e e0, e1, . . . , ei nao sao precedidaspor ei em L no ponto v. Assim, as arestas de ida em E que precedem ei em L no ponto vsao precisamente as arestas de ida em E< e as arestas e0, e1, . . . , ei−1, que devem ser

todas de ida ja que i < k, em um total de #−→E< + i arestas. Similarmente, as arestas

de volta em E que nao sao precedidas por ei em L no ponto v sao as arestas de voltaem E< apenas (como i < k temos que nao ha arestas de volta em e0, e1, . . . , ei), em

um total de #←−E< arestas. Logo, como ei participa de uma boa representacao de uv,

devemos ter que #−→E< + i = #

←−E<. Porem, existem exatamente #

−→E< − #

←−E< polıgonos

em L contendo p0, de forma que #−→E< ≥ #

←−E<, obrigando i a ser 0. Concluımos entao

que dentre as arestas e0, e1, . . . , ek−1, apenas a aresta e0 pode participar de uma boarepresentacao de uv.

Em resumo, o segmento uv pode ser bem representado apenas em conjunto com as ares-tas e0 e en−1, o que limita nossa busca por boas representacoes a verificar a apenas estasduas arestas. Juntando agora o essencial do que vimos anteriormente, temos que e0

participa de uma boa representacao de uv se, e somente se, #−→E< = #

←−E<, ou seja, se

nenhum polıgono de L contiver p0 ou, em outras palavras, se p0 6∈ U . Similarmente,temos que en−1 participa de uma boa representacao de uv se, e somente se,

#−→E< −#

←−E< = n− 1− 2k + 1 = n− 2k,

107

Page 108: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

que por sua vez ocorre se, e somente se,

#−→E< + k = #

←−E< + (n− k) ⇐⇒ #

−→E< + #

−→E= = #

←−E< + #

←−E=,

ou seja, se nao existirem polıgonos em L contendo p1 ou, alternativamente, se p1 6∈ U .Sendo mais sucinto ainda, e0 representa bem uv se, e somente se, p0 6∈ U e en−1 representabem uv se, e somente se, p1 6∈ U .

Passamos agora a mostrar o resultado diretamente. Se uv 6⊆ ∂U , temos, pela pro-posicao 40, que p ∈ U, de forma que p0, p1 ∈ U e, logo, que nem e0 nem en−1 participamde boas representacoes de uv. Vimos, no entanto, que estas eram as unicas arestas ca-pazes de formarem uma boa representacao de uv, de forma que uv nao possui uma boarepresentacao.

Por outro lado, se uv ⊆ ∂U , entao obviamente p ∈ ∂U e ou p0 ∈ U e p1 6∈ U ou p0 6∈ Ue p1 ∈ U . Em outras palavras, ou en−1 participa de uma boa representacao de uv e e0

nao participa ou e0 participa de uma boa representacao de uv e en−1 nao participa. Emqualquer caso, temos que, como apenas e0 e en−1 podem formar boa representacoes de uv,que uv possui exatamente uma boa representacao, mostrando o resultado.

Em face deste resultado, fica claro que se tivermos um algoritmo para descobrir todas asrepresentacoes de segmentos candidatos em uma lista de polıgonos, podemos obter todosos segmentos candidatos contidos na fronteira da uniao destes polıgonos e consequente-mente uma boa representacao para esta uniao. Portanto nao deve ser surpresa que asegunda ideia por tras de nosso algoritmo e um metodo para fazer justamente isto.

A principal ideia por tras deste metodo e o uso de uma linha de varredura . Explicamosesta ideia primeiro assumindo que a instancia L do problema que estamos tentandoresolver esta em posicao geral. Neste caso consideramos uma reta vertical, a linha devarredura, que percorre o plano da esquerda para a direita. Conforme a linha se desloca,mantemos informacoes sobre a interacao da linha com a instancia do problema, e estasinformacoes sao chamadas de o status da linha de varredura. Contudo, durante o cursodo algoritmo, o status da linha de varredura pode se modificar. Abscissas em que o statusmuda sao chamadas de pontos evento. Dessa forma, o algoritmo funciona avancando alinha de varredura e, sempre que um ponto evento for atingido, alterando o status. Comoveremos adiante, em posicao geral, os pontos evento sao as abscissas dos pontos chave.

Na verdade iremos descrever o algoritmo para uma entrada generica de uma vez so. Aprincipal diferenca e que a linha vertical de varredura nao interage com a instancia L, mascom a instancia δ [L], onde δ e um valor real positivo suficientemente pequeno. Trata-se do cisalhamento simbolico descrito na secao 4.4. A principal diferenca e que a linhade varredura nao e mais unicamente determinada por uma abscissa, mas por um ponto.Assim, a linha de varredura passa por pontos, e os pontos evento sao, na verdade, pontos,nao abscissas. Eles sao inclusive os pontos chave.

O status da linha de varredura em um ponto p ∈ R2 e o conjunto das arestas de polıgonosem L que sao comparaveis em p junto com o registro, para cada uma destas arestas, dequal foi o ultimo ponto chave percorrido pela linha de varredura que estava contido naaresta.

Durante a passagem por um ponto evento p ∈ K(L), o algoritmo tem tres tarefas:

• Testar segmentos candidatos descobertos, como veremos adiante;

108

Page 109: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• Remover do status arestas e tais que right(e) = p; e

• Inserir no status arestas e tais que left(e) = p.

Como e usual nestes algoritmos de geometria computacional, o status da linha de varre-dura e armazenado em uma arvore de busca balanceada, que descreveremos na secao 4.7.Esta arvore tem como papel tornar os testes de segmentos candidatos extremamenteeficientes.

Por ultimo, para identificar pontos chave e as arestas que os contem, nosso algoritmo fazuso do algoritmo de Bentley e Ottmann [7] em um formato especial descrito na secao 4.6.Usamos este formato para nao nos preocuparmos com os detalhes do algoritmo deles enos focarmos no nosso.

4.6 O algoritmo de Bentley e Ottmann

Considere as duas seguintes definicoes.

Definicao 77 — Seja L uma lista de segmentos de reta. Entao o conjunto dospontos chave de L e o conjunto K(L) ⊆ R2 dos pontos do plano que pertencema interseccoes finitas de segmentos de L.

Definicao 78 — Seja L uma lista de segmentos de reta e seja p ∈ K(L) umponto chave de L. Dizemos entao que os ındices de incidencia de L em p saoos elementos do conjunto IL(p) dos ındices de entradas em L correspondentes asegmentos que contem p.

O algoritmo de Bentley e Ottmann [7] e um algoritmo classico da literatura de geometriacomputacional. Para uma entrada L, uma lista de segmentos de reta, este algoritmo pro-duz como saıda todos os pares da forma

(p, IL(p)

)com p ∈ K(L) em ordem estritamente

crescente de p. Este formato no qual descrevemos o algoritmo de Bentley e Ottmanncorresponde basicamente ao formato apresentado em [14, secao 2.1]. No restante destasecao, detalhamos este algoritmo.

Primeiramente, a entrada para o algoritmo de Bentley e Ottmann e a propria lista L.Cada segmento uv em L sera representado por quatro elementos de F correspondendo ascoordenadas de u e de v.

A saıda do algoritmo, no entanto, e mais complicada de descrever. Modelamos o algoritmode Bentley e Ottmann como uma co-rotina, de modo que uma leitura da secao 1.6 enecessaria para compreender o que vem adiante.

O algoritmo de Bentley e Ottmann e uma co-rotina Bentley-Ottmann. Desta forma,se L e uma lista de segmentos de reta representada como anteriormente descrito, aexecucao de

b← Bentley-Ottmann (L)

atribui a variavel b uma instancia da co-rotina. Podemos entao executar b() repetida-mente. O resultado de cada uma destas execucoes e ou um par

(p, IL(p)

)com p ∈ K(L)

109

Page 110: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

ou o valor especial ⊥. Antes que uma destas execucoes produza o valor ⊥ pela primeiravez, as execucoes anteriores terao produzido todos os pares

(p, IL(p)

)com p ∈ K(L)

exatamente uma vez e em ordem estritamente crescente de p. Depois desta primeirachamada produzindo ⊥, as demais tambem retornarao este valor.

Um par(p, IL(p)

)com p ∈ K(L) produzido na saıda do algoritmo sera representado por

dois elementos de F denotando as coordenadas de p e por uma lista de numeros naturaisrepresentando a lista IL(p).

Quanto as complexidades, defina primeiro n como o numero de entradas em L (o tamanhode L) e M como o numero de pares de entradas em L que correspondem a segmentos dereta que se intersectam. Assim, a execucao de

b← Bentley-Ottmann (L)

tem complexidades algebricas O((M + n) log n

)de tempo e O(n) de espaco. Ainda,

executar b() ate a primeira vez em que ⊥ e retornado tambem tem complexidadesalgebricas O

((M + n) log n

)de tempo e O(n) de espaco. Futuras chamadas de b() ro-

dam em tempo constante consumindo uma quantidade constante de espaco adicional,mas estas chamadas nunca serao feitas em nosso algoritmo.

E importante ressaltar que iremos assumir que o algoritmo de Bentley e Ottmann ealgebricamente tratavel. Mostrar isto iria requerer uma analise mais a fundo do algoritmodeles e nao temos espaco neste trabalho para faze-la. Incentivamos o leitor interessadoque ja tenha tido contato com este algoritmo a refletir sobre este fato.

Finalmente, cabe explicar o motivo de pedirmos os ındices na lista na saıda e nao ossegmentos em si. Como o leitor pode imaginar, pretendemos, em nosso algoritmo paracalcular a uniao de polıgonos, chamar o algoritmo de Bentley e Ottmann com uma lista desegmentos correspondente a todas as arestas de polıgonos na entrada do nosso problema.Neste caso, arestas de polıgonos diferentes podem corresponder ao mesmo segmento dereta no plano, e assim pode haver varios segmentos repetidos na lista. Em nosso algoritmo,e crucial recuperar cada aresta contendo um determinado ponto chave, e podemos fazerisso com o ındice do segmento na lista, pois existe exatamente uma aresta que deu origema entrada correspondente ao ındice.

4.7 Arvores rubro-negras aumentadas

Em nosso algoritmo, decidimos organizar o status da linha de varredura como uma arvorerubro-negra [13, capıtulo 13]. As chaves nesta arvore sao arestas de polıgonos em umalista L de polıgonos que intersectam a linha de varredura.

Como e usual em uma arvore rubro-negra, devemos especificar um ordenamento de suaschaves. Porem, a ordem de nossa arvore depende da posicao da linha de varredura.Em primeiro lugar, apenas arestas que intersectam a linha de varredura podem estar naarvore. Mais precisamente, se a linha de varredura esta em um ponto p ∈ R2, apenasarestas comparaveis em p podem estar na arvore e, como e de se esperar, a ordem destasarestas na arvore e dada pela relacao de precedencia <L

p .

Lembramos que a relacao de ordenamento em uma arvore rubro-negra deve ser umaordem estrita fraca, como e a ordem <L

p (<Lp e inclusive uma ordem total). Assim, duas

110

Page 111: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

arestas iguais (cujos polıgonos de origem tem o mesmo ındice na lista L) sao consideradasequivalentes pela ordem <L

p . Nesta implementacao, exigimos que estas arestas jamaisestejam simultaneamente na arvore, ou seja, nao permitimos a insercao de um elementorepetido na arvore.

Por causa desta dependencia da ordem da arvore com a posicao p ∈ R2 da linha devarredura, as rotinas relativas a arvores rubro-negras que fazem uso da ordem recebemcomo parametro adicional esta posicao p. Quando estas rotinas sao chamadas, e ne-cessario que a arvore esteja consistente com p, ou seja, que todas as entradas na arvorecorrespondam a arestas comparaveis em p e que estas entradas estejam ordenadas se-gundo a ordem <L

p . Assim, se duas destas rotinas sao sucessivamente chamadas comargumentos p0, p1 ∈ R2, respectivamente, para a posicao da linha de varredura, ao finalda primeira rotina, a arvore deve conter apenas arestas comparaveis em ambos p0 e p1 e,restritas as arestas da arvore, as ordens <L

p0e <L

p1devem ser iguais.

Em [13, capıtulo 14], um metodo de “aumentar” arvores rubro-negras e descrito. Usandoesta ideia, nos podemos modificar nossa estrutura de dados para, dada uma chave e (naonecessariamente na arvore), uma direcao d ∈ →,← e uma posicao p ∈ R2 da linha devarredura com a qual a arvore e consistente, devolver o numero de chaves e′ na arvore taisque e′<L

p e (ou tambem e′≤Lp e) e dir(e′) = d. Note que isto e exatamente o que precisamospara decidir se uma representacao de um segmento candidato e uma boa representacao,como discutido na secao 4.5.

Descrevemos agora quais rotinas assumimos implementadas para tratar com arvoresrubro-negras:

• A rotina RB-Init recebe uma referencia para uma lista de polıgonos L e devolveuma arvore rubro-negra vazia que aceita como chaves arestas de polıgonos em L;

• A rotina RB-Insert recebe uma arvore rubro-negra T , uma chave e que nao estana arvore T e uma posicao p ∈ R2 da linha de varredura tal que a arvore T econsistente com p e tal que e e comparavel em p. Ela entao insere a chave e naarvore T na sua devida posicao de acordo com a ordem <L

p .

• A rotina RB-Remove recebe uma arvore rubro-negra T e uma chave e presentena arvore T e a remove da arvore T , mantendo as chaves restantes em sua ordemrelativa anterior. Note que a posicao da linha de varredura (e consequentemente aordem da arvore) nao e usada nesta rotina;

• A rotina RB-Query-Strict recebe uma arvore rubro-negra T , uma chave e (naonecessariamente na arvore), uma direcao d ∈ →,← e uma posicao p ∈ R2 paraa linha de varredura tal que a arvore T e consistente com p e tal que e e com-paravel em p. Ela entao devolve o numero de chaves e′ na arvore T tais que e′<L

p ee dir(e′) = d; e

• Similarmente, a rotina RB-Query recebe uma arvore rubro-negra T , umachave e (nao necessariamente na arvore), uma direcao d ∈ →,← e umaposicao p ∈ R2 para a linha de varredura tal que a arvore T e consistente com p etal que e e comparavel em p. Ela entao devolve o numero de chaves e′ na arvore Ttais que e′≤Lp e e dir(e′) = d.

As rotinas RB-Insert, RB-Query-Strict e RB-Query todas tem complexidades

111

Page 112: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

algebricas O(log n) de tempo e O(1) de espaco, onde n e o numero de chaves atualmentena arvore T . A rotina RB-Remove, por nao usar a ordem e consequentemente nenhumaoperacao algebrica sobre o subcorpo real F, possui complexidades O(log n) de tempoe O(1) de espaco. Finalmente, a rotina RB-Init consome tempo e espaco constantes.De fato, a lista L em si jamais e usada diretamente na estrutura de dados. O argumentopara a rotina RB-Init e um mero formalismo, pois a arvore precisa saber apenas dosındices dos polıgonos de origem das arestas e nada sobre a lista em si.

Observe que duas arestas que correspondem a um mesmo segmento de reta e possuem amesma direcao sao consideradas distintas desde que nao sejam arestas do mesmo polıgono,isto e, a aresta carrega consigo informacao sobre o seu polıgono de origem. Esta in-formacao e nao sobre o polıgono enquanto um conjunto de pontos, mas sobre ele enquantoestrutura de dados (mais precisamente, seu ındice na lista L). Assim, se uma lista depolıgonos possui duas copias do mesmo polıgono (como na entrada para o problema 2),duas arestas, uma de cada copia, sao consideradas distintas. Isso e importante nao so porcausa da rotina de insercao e remocao em uma arvore rubro-negra, mas tambem para queas rotinas de contagem devolvam o valor correto. Este detalhe sera discutido novamente,sobre uma outra perspectiva, quando a implementacao do algoritmo for detalhada nasecao 4.8.

4.8 O algoritmo

Finalmente estamos prontos para apresentar o algoritmo 3, que calcula a uniao depolıgonos.

No restante desta secao, explicamos como o algoritmo funciona, detalhamos sua imple-mentacao, mostramos que ele e correto e analisamos suas complexidades.

A primeira coisa que devemos observar e que o numero N usado no algoritmo e o numerototal de vertices nos polıgonos de L. Mais precisamente, se L = P0P1 · · ·Pn−1, entao

N =n−1∑i=0

|V (Pi)|.

Consequentemente, note que se i, j ∈ 0, 1, . . . , N − 1 e i 6= j, entao ei 6= ej, mesmoque ei e ej correspondam aos mesmos segmentos de reta no plano, tenham as mesmasorientacoes e tenham sido originadas de polıgonos na lista que representam o mesmoconjunto de pontos no plano (mas que claramente devem possuir ındices distintos nalista). Este ponto e muito importante para o algoritmo, pois ei e ej devem, se necessario,estar ao mesmo tempo na arvore rubro-negra.

Note agora que, no laco da linha 6, a variavel p itera exatamente sobre os pontos chavede L em ordem estritamente crescente por causa do algoritmo de Bentley e Ottmann. Ostatus da linha de varredura e mantido na arvore rubro-negra T (as arestas que inter-sectam a linha de varredura) e nas variaveis `i com i ∈ 0, 1, . . . , N − 1, que registra oultimo ponto chave percorrido contido na aresta ei. Sendo assim, o algoritmo tem o deverde atualizar o status na passagem pelo evento p nas linhas de 7 a 34.

De fato, nas linhas de 24 a 28, o algoritmo remove arestas terminando em p do status e,nas linhas de 7 a 9, insere arestas comecando em p no status. Ja nas linhas de 10 a 23, ele

112

Page 113: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Algorithm 3 Union-of-Polygons (L)

Pre-condic~ao: L e uma entrada para o problema 2Efeito: devolve uma saıda para o problema 2 correspondente a instancia L como uma

co-rotina1: Sejam e0, e1, . . . , eN−1 as arestas dos polıgonos em L.2: Seja S = s0s1 · · · sN−1 uma lista de segmentos de reta onde si e o segmento de reta

corresponde a aresta ei para todo i ∈ 0, 1, . . . , N − 1.3: Para todo i ∈ 0, 1, . . . , N − 1, seja `i ∈ F2 uma variavel nao inicializada.4: T ← RB-Init (L)5: I ← 6: for

(p, IS(p)

)in Bentley-Ottmann (S) do

7: for each i ∈ I do

8: RB-Insert (T, ei, p)9: done

10: for i in IS(p) do11: if left(ei) 6= p then

12: a← RB-Query-Strict (T, ei,→, p)13: b← RB-Query (T, ei,←, p)14: if a = b then15: if dir(ei) =→ then

16: yield−→`ip

17: else

18: yield−→p`i

19: endif

20: endif

21: endif

22: `i ← p23: done

24: for i in IS(p) do25: if left(ei) 6= p then

26: RB-Remove (T, ei)27: endif

28: done

29: I ← 30: for i in IS(p) do31: if right(ei) 6= p then

32: I ← I ∪ i33: endif

34: done

35: done

113

Page 114: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

identifica representacoes de segmentos candidatos que terminam em p, as testa de acordocom a definicao 76, as coloca na saıda se necessario (de acordo com a proposicao 55) efinalmente atualiza os valores de `i com i ∈ IS(p).

Existem varios detalhes de implementacao deste algoritmo aos quais gostarıamos de cha-mar a atencao, talvez o mais importante dos quais e o que sao, computacionalmentefalando, as arestas e0, e1, . . . , eN−1. Em outras palavras, se entendemos e0, e1, . . . , eN−1

como um vetor E, o que tem em cada entrada de E?

Para todo i ∈ 0, 1, . . . , N − 1, a i-esima entrada de E deve conter ao menos os extre-mos left(ei), right(ei) ∈ F2 como pontos em F2, a direcao dir(ei) da aresta ei, o ındiceem L do polıgono que possui a aresta (dependendo da implementacao) e, um pouco menosobvio, o no da arvore rubro-negra em que a aresta ei se encontra.

Se formos um pouco mais fundo nos detalhes de implementacao, veremos que a arvorerubro-negra e uma estrutura de dados que usa um registro de tamanho fixo para cada umde seus nos e mais apenas uma quantidade fixa de memoria. Assim, se passarmos umareferencia para um registro desocupado destes na rotina de insercao na arvore, podemoscompletamente evitar alocacoes dinamicas de memoria pela arvore rubro-negra. Comisso, o mais logico a se fazer e alocar um registro em cada entrada do vetor E. Ainda,nas linhas 8, 12, 13 e 26, onde o algoritmo passa arestas para as rotinas de arvores rubro-negras, e conveniente entender que um ponteiro para uma entrada em E esta sendopassado para a rotina. Com ele a arvore pode usar o registro alocado na entrada paragerenciar a estrutura de dados, mas, mais importante que isso, saber qual no da arvoreesta sendo removido na rotina de remocao.

Outro detalhe e o vetor IS(p). Como o tamanho maximo deste vetor e N , podemospre-alocar um vetor de tamanho N de ındices (elementos de 0, 1, . . . , N −1) e entenderque a instancia da co-rotina Bentley-Ottmann recebe um ponteiro para um vetor deındices onde ela possa depositar o vetor IS(p) em sua saıda e que ela retorna quantoselementos foram escritos.

Podemos implementar de forma similar o vetor I que guarda quais ındices de arestasserao inseridas na arvore no inıcio da proxima iteracao. Alocamos um vetor de N ındices(elementos de 0, 1, . . . , N − 1) e implementamos uma estrutura de dados elementar,como uma pilha, em cima deste vetor. Isto e apropriado porque, como incentivamos oleitor a verificar, jamais inserimos no conjunto I elementos repetidos na linha 32. Ainda,todos os elementos inseridos nesta linha sao claramente numeros naturais menores doque N .

Finalmente, o algoritmo de Bentley e Ottmann pode ser implementado usando umaarvore rubro-negra tambem. A arvore rubro-negra neste algoritmo nao e uma arvorerubro-negra aumentada no sentido de que ela nao possui as funcoes de contagem quenossa arvore possui. Porem, nossa arvore e na verdade mais geral do que a do algoritmodeles, de forma que podemos manter, se a implementacao for feita com cuidado, apenasuma arvore rubro-negra para o algoritmo inteiro. Se esta otimizacao nao for feita, oalgoritmo estara na verdade mantendo duas arvores rubro-negras, uma das quais possuitodas as informacoes da outra.

Tendo discutido estes detalhes, passamos agora a mostrar que o algoritmo e correto.

114

Page 115: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Teorema 7 — O algoritmo 3 corretamente resolve o problema 2.

Prova — Seja E = e0, e1, . . . , eN−1 o conjunto das arestas de polıgonos em L, deforma que |E| = N , ou seja, duas arestas originadas de polıgonos de ındices distintosem L correspondem a elementos diferentes em E mesmo que elas representem o mesmosegmento de reta no plano, mesmo que elas possuam a mesma direcao e mesmo que seuspolıgonos de origem correspondam ao mesmo conjunto de pontos no plano. Seja ainda,para cada ponto p ∈ R2, E(p) o conjunto das arestas em E comparaveis em p e C(p) oconjunto das arestas em E contendo p.

Vamos mostrar por uma invariante de laco que, toda vez que o algoritmo termina o lacodas linhas 7 a 9, a arvore rubro-negra T nao so esta consistente com o ponto p, mascontem como chaves precisamente as arestas em E(p).

O caso base desta invariante de laco e a primeira iteracao do laco das linhas 6 a 35. Nestaiteracao, a arvore T claramente comeca vazia e o conjunto I tambem esta vazio. Assim, olaco das linhas 7 a 9 nao faz nada e a arvore rubro-negra permanece vazia. Porem, sendoa primeira iteracao, p e o menor ponto chave, pois o algoritmo de Bentley e Ottmanndevolve os pontos chave em ordem estritamente crescente. Logo, toda aresta e ∈ Edeve ser tal que left(e) ≥ p, de forma que e nao e comparavel em p. Logo devemoster E(p) = , de forma que a arvore T nao so esta consistente com p, mas contemexatamente as arestas em E(p).

Mostramos agora o passo indutivo, ou seja, que a invariante sempre se mantem entre duasiteracoes do laco das linhas 6 a 35. Para isso, considere que em uma destas iteracoes, olaco das linhas 7 a 9 acabou de ser completado e que, nesta iteracao, a variavel p estaassinalada a um ponto chave p0 ∈ K(L). Considere ainda que a hipotese indutiva estavalendo, ou seja, que a arvore T esta consistente com p0 e possui como chaves exatamenteas arestas em E(p0). Suponha tambem que esta nao e a ultima iteracao do laco daslinhas 6 a 35. Desta forma, p0 nao pode ser o maior ponto chave e deve haver exatamenteum ponto chave sucessor de p0, ou seja, um ponto chave p1 ∈ K(L) com p0 < p1 tal quenao existe um ponto chave q ∈ K(L) com p0 < q < p1. Assim, na iteracao seguinte, avariavel p ira carregar o valor p1 e devemos mostrar que, imediatamente apos o laco daslinhas 7 a 9 ser completado nesta proxima iteracao, a arvore T estara consistente com p1

e tera como chaves exatamente as arestas em E(p1).

Observe entao que as linhas de 10 a 23 nao modificam a arvore rubro-negra, fa-zendo nela apenas consultas. Estas consultas envolvem apenas arestas e em C(p0) taisque left(e) 6= p0, que estao portanto todas em E(p0). Assim, como estas consultas saofeitas com p0 como a posicao da linha de varredura, elas sao todas legais. Desta forma,podemos ignorar as linhas de 10 a 23 ao mostrar esta invariante de laco.

O laco das linhas 24 a 28, por sua vez, remove da arvore as arestas em C(p0) que naopossuem p como seu extremo esquerdo, ou seja, as arestas em C(p0) ∩ E(p0). Comoobviamente todas estas arestas estao em E(p0), elas estavam todas na arvore, de modoque todas estas operacoes de remocao sao legais. Assim, apos a execucao deste laco, aarvore tem como arestas exatamente as arestas em E(p0) \ C(p0).

Mostramos agora que, apos a execucao deste laco das linhas 24 a 28, a arvore rubro-negra T esta consistente com o ponto p1. De fato, vimos que a arvore, neste momento,

115

Page 116: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

possui como chaves exatamente as arestas em E(p0) \ C(p0), de forma que uma aresta ena arvore deve ser tal que left(e) < p0 < right(e), ja que right(e) 6= p0 porque e 6∈ C(p0).Assim, como right(e) ∈ K(L), temos que left(e) < p0 < p1 ≤ right(e), de forma que ee comparavel em p1. Logo, a arvore contem entao apenas arestas comparaveis em p0

e em p1. Se e0 e e1 sao entao duas arestas na arvore, observe que p0 nao pode estarna interseccao de e0 e e1, pois p0 nao pode estar nem em e0, e1 6∈ C(p0). Assim, naoexiste um ponto chave q ∈ K(L) contido em e0 e e1 tal que p0 ≤ q < p1. Logo aproposicao 54 nos garante que e0<

Lp0e1 se, e somente se, e0<

Lp1e1. Em outras palavras,

dentre as arestas da arvore, as ordens <Lp0

e <Lp1

sao equivalentes. Agora, como vimos,a arvore rubro-negra T esta consistente com p0. Porem, dado que todas as arestas naarvore estao em E(p0) ∩ E(p1) e dada a equivalencia entre estas duas ordens, temos quea arvore tambem esta consistente com p1.

Agora, apos as linhas de 29 a 34, claramente o conjunto I contem exata-mente os ındices i ∈ 0, 1, . . . , N − 1 tais que ei ∈ C(p0) e right(ei) 6= p0.Vamos mostrar agora que estas arestas sao precisamente as arestas no con-junto C(p0) ∩ E(p1). De fato, se uma aresta e ∈ E e tal que e ∈ C(p0)e right(e) 6= p0, temos que left(e) ≤ p0 < p1 ≤ right(e) (pois right(e) ∈ K(L)), deforma que e ∈ C(p0) ∩ E(p1). Conversamente, se uma aresta e esta em C(p0) ∩ E(p1),entao left(e) ≤ p0 < p1 ≤ right(e) (pois left(e) ∈ K(L)), de forma que e esta em C(p0)e right(e) 6= p0.

Desta forma, o laco das linhas 7 a 9 na iteracao seguinte irao inserir na arvore (naposicao p1), precisamente as arestas em C(p0)∩E(p1). A arvore, antes da execucao destelaco, tem como chave precisamente as arestas em E(p0) \ C(p0), e assim nenhuma arestarepetida sera inserida. Ainda, vimos que, antes da execucao deste laco, a arvore estaconsistente com p1, de forma que todas as insercoes realizadas sao legais. Observe entaoque, ao final deste laco a arvore tera como chaves precisamente as arestas em(

E(p0) \ C(p0))∪(C(p0) ∩ E(p1)

)=

((E(p0) \ C(p0)

)∪ C(p0)

)∩((E(p0) \ C(p0)

)∪ E(p1)

)=

(E(p0) ∪ C(p0)

)∩ E(p1)

= E(p1).

De fato, ja vimos que toda aresta em E(p0) \ C(p0) esta em E(p1). Por outro lado,se e ∈ E(p1) e uma aresta, entao left(e) ≤ p0 < p1 ≤ right(e) (pois left(e) ∈ K(L)),de forma que e ∈ E(p0) se left(e) 6= p0 e que e ∈ C(p0) se left(e) = p0. As-sim E(p1) ⊆ E(p0) ∪ C(p0).

Concluımos entao que, apos o termino do laco das linhas 7 a 9, a arvore estara consistentecom p1 e tera como arestas precisamente as arestas em E(p1), provando a nossa invariantede laco correta. Na verdade, provamos ate mais do que esta invariante: mostramos quetodas as operacoes realizadas sobre a arvore rubro-negra T neste algoritmo sao legais eestabelecemos quais arestas estao na arvore em cada momento em uma iteracao.

A argumentacao ate aqui estabeleceu completamente o comportamento da arvore rubro-negra, que e uma das duas estruturas de dados necessarias para a operacao do lacodas linhas 10 a 23, que constitui o cerne do algoritmo. A outra estrutura de dados emais simples: sao os valores de `i com i ∈ 0, 1, . . . , N − 1. Iremos agora mostrarcorreta uma outra invariante de laco, que diz respeito a estes valores. Mais precisamente,

116

Page 117: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

iremos mostrar que, no inıcio de cada iteracao do laco das linhas 6 a 35, para todoındice i ∈ 0, 1, . . . , N − 1 tal que left(ei) < p, `i e um ponto chave de L que esta em ei,precede p e e tal que nao existe um ponto chave q ∈ K(L) em ei com `i < q < p.

O caso base e a primeira iteracao deste laco. Nela, como o algoritmo de Bentley eOttmann devolve os pontos chave em ordem estritamente crescente, temos que p e omenor ponto chave, ou seja, nao existe um ponto chave q ∈ K(L) com q < p. Por isso,toda aresta e ∈ E e tal que left(e) ≥ p, ja que left(e) ∈ K(L). Assim, nossa invariante delaco vale por vacuidade.

Suponha agora que o algoritmo esta no inıcio de uma iteracao do laco das linhas 6 a 35e que a variavel p guarda um ponto chave p0 ∈ K(L) que nao e o maior ponto chave,de forma que ira haver uma proxima iteracao. Nao sendo p0 o maior ponto chave, deveexistir um unico ponto chave p1 ∈ K(L) com p0 < p1 tal que nao existe um pontochave q ∈ K(L) com p0 < q < p1. Este ponto chave p1 e o sucessor de p0 em K(L) e sera ovalor armazenado na variavel p na proxima iteracao do laco. Devemos mostrar entao que,nesta proxima iteracao, todo valor de i ∈ 0, 1, . . . , N −1 com left(ei) < p1 e tal que `i eum ponto chave em ei que precede p1 tal que nao existe um ponto chave q ∈ K(L) em eicom `i < q < p1. Para isso, podemos assumir a invariante de laco valendo na iteracaoatual, ou seja, que todo ındice i ∈ 0, 1, . . . , N − 1 com left(ei) < p0 e tal que `i e umponto chave em ei que precede p0 tal que nao existe um ponto chave q ∈ K(L) em eicom `i < q < p0.

Verificaremos isto para cada valor de i ∈ 0, 1, . . . , N − 1 tal que left(ei) < p1

individualmente. Se um tal valor de i e tal que p0 nao esta na aresta ei,entao ei 6∈ C(p0) ⇐⇒ i 6∈ IS(p0), de forma que o laco das linhas 10 a 23 nao alterao valor de `i. Como esta e a unica parte do laco das linhas 6 a 35 que poderia alte-rar este valor, segue que, ate a proxima iteracao, o valor de `i permanece o mesmo.Porem, como p0 nao esta em ei, temos que left(ei) < p0, pois left(ei) ∈ K(L), left(ei) < p1

e left(ei) 6= p0. Assim, vale a invariante de laco, ou seja, `i e um ponto chave em ei queprecede p0 e nao existe um ponto chave q ∈ K(L) em ei com `i < q < p0. Assim, como p0

nao esta em ei, na verdade nao ha um ponto chave q ∈ K(L) em ei com `i < q < p1,mostrando a manutencao da invariante de laco para o ındice i (note que claramente `iprecede p1).

Por outro lado, se i ∈ 0, 1, . . . , N − 1, left(ei) < p1 e p0 esta em ei, entao novamenteobservamos que ei ∈ C(p0) ⇐⇒ i ∈ IS(p0), de forma que a linha 22 altera o valor de `ipara p0. Como o restante do algoritmo nao modifica este valor de `i, temos que, naiteracao seguinte, valera que `i = p0. Assim, claramente `i sera um ponto chave em eique precede p1 e tal que nao existe um ponto chave q ∈ K(L) com `i = p0 < q < p1 (p1

e o sucessor de p0). Assim a invariante de laco tambem se mantem para este valor de i.Tendo esgotado as possibilidades dos ındices i ∈ 0, 1, . . . , N − 1 com left(ei) < p1,provamos correta mais esta invariante de laco.

O que resta fazer agora e estudar o laco das linhas 10 a 23 sob a luz destas duas invariantesde laco. Primeiramente, observe que, quando o algoritmo esta prestes a executar alinha 12, ei e uma aresta em C(p) com left(ei) 6= p, de forma que left(ei) < p e, pela nossasegunda invariante de laco, `i e um ponto chave de L contido na aresta ei que precede pe tal que nao ha um ponto chave q ∈ K(L) tambem contido em ei tal que `i < q < p.Desta forma, temos que `ip e um segmento candidato de L e que, contendo `ip, a aresta ei

117

Page 118: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

participa de uma representacao deste segmento candidato (isto e, se ei e a b-esima arestado a-esimo polıgono em L, entao (a, b, `i, p) e uma representacao de `ip). Em resumo,cada vez que o algoritmo passa pela linha 12, a aresta ei, juntamente com `ip, forma umarepresentacao de `ip. Ainda, esta representacao nunca sera repetida em outra passagempela linha 12, pois sempre devemos ter que `i < p.

Por outro lado, seja (a, b, u, v) uma representacao de um segmento candidato uv de Lcom u < v, onde a b-esima aresta do a-esimo polıgono em L, que deve conter o seg-mento uv, e a aresta ei, onde i ∈ 0, 1, . . . , N − 1. Assim, na iteracao do laco daslinhas 6 a 35 em que p vale v, teremos que ei ∈ C(p) ⇐⇒ i ∈ IS(p), de forma queo laco das linhas 10 a 23 realizara exatamente uma iteracao com este valor de i. Nestaiteracao, teremos p = v e deveremos ter tambem que `i = u, pois este e o unico pontochave que pode estar armazenado em `i para satisfazer a segunda invariante de laco quedemonstramos. Assim, a representacao considerada nesta iteracao e exatamente a repre-sentacao (a, b, u, v). Em outras palavras, nas suas passagens pela linha 12, o algoritmoconsidera toda representacao de segmentos candidatos de L e, como vimos, ele consideracada tal representacao exatamente uma vez.

Vejamos agora o que o restante das linhas 12 a 20 faz com uma tal representacao. Aprimeira invariante de laco que mostramos estabelece que, na arvore rubro-negra T nestemomento, ha chaves correspondentes a exatamente as arestas em E(p), que sao as arestasde polıgonos em L comparaveis em p. Entao, na linha 14, de acordo com a definicao dasrotinas RB-Query-Strict e RB-Query, ele testa se o numero de arestas de ida empolıgonos em L comparaveis em p que precedem ei em L no ponto p e igual ao numerode arestas de volta em polıgonos em L comparaveis em p que nao sao precedidas por eiem L no ponto p. Assim, o teste tem um resultado positivo se, e somente se, ei e `ipformam uma boa representacao do segmento candidato `ip.

Portanto, as linhas de 15 a 19 sao executadas precisamente uma vez para cada boa repre-sentacao de segmentos candidatos de L, estando uma tal boa representacao codificada naaresta ei e no segmento `ip. E simples verificar que estas linhas entao produzem na saıdaum segmento de reta orientado correspondente a orientacao do segmento candidato `ip.

Assim, pela proposicao 55, a saıda do algoritmo e constituıda precisamente das orientacoesdos segmentos candidatos de L contidos na fronteira da uniao dos polıgonos em L, cadaum destes segmentos orientados estando presente na saıda exatamente uma vez. Logo,pela proposicao 42, o algoritmo realmente produz uma boa representacao da uniao dospolıgonos em L, estando correto.

Analisamos agora as complexidades deste algoritmo. Lembramos ao leitor que, como foidiscutido na secao 1.5, se pudermos determinar as complexidades algebricas de nossoalgoritmo e se pudermos mostrar que ele e algebricamente tratavel, entao teremos ime-diatamente um limite superior para suas complexidades.

Lema 11 — O algoritmo 3, quando executado em uma lista de polıgonos cujototal de vertices eN e cujo numero de pares de arestas distintas que se intersectame M , possui complexidades algebricas O(M logN) de tempo e O(N) de espaco.

Prova — Analisamos primeiro a complexidade algebrica de tempo do algoritmo. Cla-ramente as linhas de 1 a 5 sao executadas em tempo O(N). Ainda, o custo algebricode simplesmente iterar o laco das linhas de 6 a 35 e O

((M +N) logN

)= O(M logN)

118

Page 119: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

(observar que N ≤M), de acordo com o que vimos na secao 4.6.

Observando agora as linhas de 29 a 34, temos que |I| ≤ |IS(p)| = |C(p)|. Tambem e claroque a arvore rubro-negra T tem sempre no maximo N chaves. Assim, o custo algebricototal do laco das linhas de 7 a 9 e O

(|C(p)| logN

), sendo p o ponto chave na iteracao

anterior (se houver uma). Ainda, sendo o custo de todos eles dominado pelo custo dasoperacoes na arvore rubro-negra, os demais sub-lacos do laco das linhas 6 a 35 tambempossuem custos algebricosO

(|C(p)| logN

), agora sendo p o ponto chave da iteracao atual.

Portanto, o custo algebrico deste laco como um todo e assintoticamente limitado por

∑p∈K(L)

|C(p)| logN =

( ∑p∈K(L)

|C(p)|

)logN ≤

( ∑p∈K(L)

(|C(p)|

2

))logN ≤M logN,

pois:

• M e, por definicao, o numero de pares de arestas de polıgonos em L que se inter-sectam;

• Existem exatamente

(|C(p)|

2

)tais pares que possuem, como interseccao finita, um

dado ponto chave p ∈ K(L); e

• Sendo p ∈ K(L) um ponto chave, devemos sempre ter |C(p)| ≥ 2.

Assim, a complexidade algebrica de tempo do algoritmo como um todo etambem O(M logN).

Para calcular agora a complexidade algebrica de espaco deste algoritmo, limitamos oespaco ocupado pelas estruturas de dados das quais ele faz uso:

• As representacoes e0, e1, . . . , eN−1 das arestas de polıgonos em L tem claramenteum custo de espaco algebrico da ordem de O(N);

• O mesmo pode claramente ser dito da lista S de segmentos de reta;

• Idem para as variaveis `i com i ∈ 0, 1, . . . , N − 1;

• As estruturas de dados usadas pelo algoritmo de Bentley e Ottmann, sejam la quaisforem elas, tambem ocupam um espaco algebrico de no maximo O(N) de acordocom o que foi discutido na secao 4.6;

• Como vimos, o conjunto I tem sempre no maximo N elementos e o espaco ocupadopor ele (espaco real, nao algebrico) e O(N); e

• A arvore rubro-negra T tem sempre no maximo N chaves e nao necessita do arma-zenamento de elementos de F, ocupando um espaco real limitado por O(N).

Logo, o algoritmo como um todo tem um custo algebrico de espaco O(N).

Lema 12 — O algoritmo 3 e algebricamente tratavel.

Prova — Esta prova e extremamente similar a da demonstracao do lema 6 e recomen-damos a leitura daquela prova antes da desta. Ainda, como a recomendacao existentenaquela prova, recomendamos que o leitor tambem tenha lido a secao 1.5, onde o conceito

119

Page 120: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

de tratabilidade algebrica e o conceito de nıveis de complexidade algebrica sao introdu-zidos.

Como a demonstracao do lema 6, a demonstracao deste lema consiste em fazer umainspecao do codigo fonte do algoritmo 3 linha a linha para mostrar que existe um limitesuperior para os nıveis de complexidade algebrica de valores que podem ser gerados nestaslinhas.

Mais especificamente, novamente como na prova do lema 6, dizemos que uma expressaono codigo do algoritmo e algebricamente tratavel, ou simplesmente tratavel, se existir umnumero natural maior do que todos os nıveis de complexidade algebrica de valores corres-pondentes a elementos de F computados ou presentes naquela expressao em qualquer queseja a entrada do algoritmo. Dizemos tambem que uma linha do algoritmo e tratavel setodas as suas expressoes tambem o forem. Observe que operacoes que envolvem apenaselementos da entrada e as operacoes basicas sao sempre trataveis, uma vez que elementosna entrada tem nıvel de complexidade algebrica igual a 0.

Um outro detalhe importante que assumimos e iremos deixar que o leitor verifique e queas ordens <L

p com p ∈ K(L) podem ser implementadas de forma algebricamente tratavel.A ideia e que as alturas e os produtos cruzados envolvidos nestas ordens podem sercomputados com um numero finito de operacoes.

Fazemos entao a anunciada inspecao do codigo do algoritmo 2:

• Linhas 1 e 2: apenas copia valores em F;

• Linha 3: apenas declara variaveis;

• Linhas 4 e 5: nao trabalha com valores em F;

• Linha 6: o algoritmo de Bentley e Ottmann e algebricamente tratavel;

• Linha 7: nao envolve elementos de F;

• Linha 8: nao cria novos valores em F, apenas faz as comparacoes algebricamentetrataveis mencionadas anteriormente na insercao na arvore;

• Linha 9: apenas sintaxe;

• Linha 10: nao envolve elementos de F;

• Linha 11: apenas faz uma comparacao;

• Linhas 12 e 13: nao criam novos elementos em F, apenas fazem comparacoes (al-gebricamente trataveis) nas rotinas da arvore rubro-negra;

• Linhas 14 e 15: nao envolvem elementos de F;

• Linha 16 e 18: apenas colocam elementos de F na saıda;

• Linha 17, 19, 20 e 21: apenas sintaxe;

• Linha 22: apenas copia elementos de F;

• Linha 23: apenas sintaxe;

• Linha 24: nao envolve elementos de F;

120

Page 121: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

• Linha 25: faz apenas uma comparacao;

• Linha 26: a rotina de remocao da arvore nao trabalha com elementos de F;

• Linha 27 e 28: apenas sintaxe;

• Linha 29 e 30: nao envolvem elementos de F;

• Linha 31: faz apenas uma comparacao;

• Linha 32: nao envolve elementos de F; e

• Linhas 33 a 35: apenas sintaxe.

Como na prova do lema 6, devemos concluir que todas as expressoes no algoritmo saoalgebricamente trataveis e logo que existe um numero natural maior do que todos os nıveisde complexidade algebrica de todos os valores computados pelo algoritmo em qualquer queseja sua entrada. Assim, temos que o algoritmo 3 e de fato algebricamente tratavel.

Teorema 8 — Existem constantes k0, k1 ∈ N tais que o algoritmo 3, quandoexecutado em uma entrada cujo numero total de vertices e N , cujo numero depares de arestas distintas que se intersectam e M e cujo numero maximo debits em uma representacao computacional de um elemento de F e B, possuicomplexidades O(M logNBk0) de tempo e O(NBk1) de espaco.

Prova — Consequencia direta dos lemas 11 e 12 e do que foi discutido na secao 1.5.

121

Page 122: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Bibliografia

[1] CGAL – the computational geometry algorithms library. https://www.cgal.org,2014. [Online; accessed 30-Sep-2014].

[2] GMP – the GNU multiple precision arithmetic library. https://www.gmplib.org,2014. [Online; accessed 26-Aug-2014].

[3] LEDA – library of efficient data types and algorithms. http://www.

algorithmic-solutions.com/leda/index.htm, 2014. [Online; accessed 30-Sep-2014].

[4] A. M. Andrew. Another efficient algorithm for convex hulls in two dimensions.Information Processing Letters, 1979.

[5] F. Aurenhammer. Improved algorithms for discs and balls using power diagrams.Journal of Algorithms, 1988.

[6] F. Aurenhammer. Voronoi diagrams – a survey of a fundamental geometric datastructure. ACM Computing Surveys, 1991.

[7] J. L. Bentley and T. A. Ottmann. Algorithms for reporting and counting geometricintersections. IEEE Transactions on Computers, 1979.

[8] E. Berberich, A. Eigenwillig, M. Hemmer, S. Hert, K. Mehlhorn, and E. Schomer. Acomputational basis for conic arcs and boolean operations on conic polygons. 2002.

[9] G. O. Berg, W. Julian, R. Mines, and F. Richman. The constructive jordan curvetheorem. Rocky Mountain Journal of Mathematics, 5(2):225–236, 1975.

[10] H. Bieri. Nef polyhedra: a brief introduction. Computing Supplementum, 10:43–60,1995.

[11] K. Q. Brown. Geometric transforms for fast geometric algorithms. PhD thesis,Pittsburgh, 1980.

[12] B. Chazelle. Triangulating a simple polygon in linear time. Discrete & ComputationalGeometry, 6:485–524, 1991.

[13] T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein. Introduction to Algorithms.The MIT Press, third edition, 2009.

[14] M. de Berg, O. Cheong, M. van Kreveld, and M. Overmars. Computational Geome-try: Algorithms and Applications. Springer, third edition, 2008.

122

Page 123: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

[15] O. Devillers, A. Fronville, B. Mourrain, and M. Teillaud. Algebraic methods andarithmetic filtering for exact predicates on circle arcs. Computational Geometry:Theory and Applications, 22:119–142, 2002.

[16] H. Edelsbrunner and E. P. Mucke. Simulation of simplicity: A technique to copewith degenerate cases in geometric algorithms. ACM Trans. Graph., 9(1):66–104,January 1990.

[17] S. Fortune. A sweep-line algorithm for Voronoi diagrams. Proceedings of the SecondAnnual Symposium on Computational Geometry, 1986.

[18] E. Gurari. An Introduction to the Theory of Computation. Computer Science Press,Ohio State University, 1989.

[19] Imai H., Iri M., and Murota K. Voronoi diagrams in the Laguerre geometry and itsapplications. 1985.

[20] J. O’Rourke. Computational Geometry in C. Cambridge University Press, secondedition, 1988.

[21] M. I. Shamos. Computational geometry. PhD thesis, New Haven, CT, USA, 1978.

[22] M. I. Shamos and D. Hoey. Closest-point problems. Proceedings of the SixteenthAnnual IEEE Symposium on Foundations of Computer Science, 1975.

[23] M. Sharir. Intersection and closest-pair problems for a set of planar discs. SIAMJournal on Computing, 1985.

[24] M. Sipser. Introduction to the theory of computation. PWS publishing company,1997.

[25] P. G. Spirakis. Very fast algorithms for the area of the union of many circles. CourantInstitute of Mathematical Sciences, New York University, 1983.

[26] S. Tatham. Coroutines in C. http://www.chiark.greenend.org.uk/~sgtatham/

coroutines.html, 2000. [Online; accessed 26-Aug-2014].

123

Page 124: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

Indice

ındices de incidencia de uma lista de seg-mentos de reta em um ponto, 109

area de um conjunto J-mensuravel, 15arvore rubro-negra consistente com uma

posicao da linha de varredura, 111ray casting de um ponto em um arco de cir-

cunferencia orientado, 36ray casting de um ponto em um conjunto

de curvas, 36ray casting de um ponto em um polıgono,

31ray casting de um ponto em um segmento

orientado, 31status de uma linha de varredura, 108

altura de um segmento em uma reta ver-tical atraves de um cisalhamentosimbolico, 94

arco de circunferencia, 17arco de circunferencia orientado, 17arco de circunferencia orientado em sentido

anti-horario, 17arco de circunferencia orientado em sen-

tido anti-horario compatıvel comum conjunto, 28

arco de circunferencia orientado em sentidohorario, 17

arco de circunferencia orientado em sentidohorario compatıvel com um con-junto, 28

arcos candidatos de um cırculo em um con-junto de cırculos, 61

arcos candidatos de um conjunto decırculos, 61

aresta de ida, 96aresta de um polıgono abaixo de um ponto,

99aresta de um polıgono acima de um ponto,

99aresta de uma boa representacao de um con-

junto de pontos, 29

aresta de volta, 96

boa representacao de um conjunto, 29boa representacao de um segmento candi-

dato em uma lista de polıgonos, 103bola aberta, 13

cırculo, 16centro de massa de um conjunto J-

mensuravel, 15centro de um cırculo, 16centroide de um conjunto J-mensuravel, 15cisalhamento, 87co-rotina, 26comparacao de arestas de polıgonos em uma

lista de polıgonos em um ponto, 97complexidade algebrica, 25componente conexa, 14concatenacao de curvas, 16conjunto conexo, 14conjunto das componentes conexas, 14conjunto das I-coordenadas, 53conjunto dos pontos chave de uma lista de

polıgonos, 82conjunto dos pontos chave de uma lista de

segmentos de reta, 109conjunto J-desprezıvel, 15conjunto J-mensuravel, 15conjunto Jordan mensuravel, 15conjunto limitado, 14curva, 15curva de Jordan, 17curva de Jordan em sentido anti-horario, 18curva poligonal, 18curva reversa, 15

direcao de uma aresta de um polıgono, 96

elementos comparaveis por uma ordem par-cial, 13

extremo direito de uma aresta de umpolıgono, 96

124

Page 125: USP · 2016. 7. 26. · Algoritmos para uni~ao de c rculos e pol gonos Esta vers~ao da disserta˘c~ao cont em as corre˘c~oes e altera˘c~oes sugeridas pela Comiss~ao Julgadora durante

extremo esquerdo de uma aresta de umpolıgono, 96

falhas do ray casting em um conjunto desegmentos orientados e arcos de cir-cunferencia orientados, 36

falhas do ray casting em um polıgono, 31fronteira de um conjunto, 14funcao caracterıstica, 15

imagem de um conjunto por uma funcao, 12imagem de uma funcao, 12imagem inversa de um conjunto por uma

funcao, 12interior de um conjunto, 13interior de uma curva de Jordan, 17

linha de varredura, 108lista de vertices de um polıgono em sentido

anti-horario, 18

medida de Jordan nula, 15

nıvel de complexidade algebrica, 25

ordem de precedencia entre pontos doplano, 92

ordem estrita fraca, 13ordem parcial, 12ordem total, 13orientacao de um segmento candidato con-

tido na fronteira da uniao depolıgonos, 85

parametrizacao canonica de um arco de cir-cunferencia orientado, 17

parametrizacao canonica de um cırculo, 16parametrizacao canonica de um polıgono,

18parametrizacao canoninca de um arco de

circunferencia, 17parametrizacao canoninca de um segmento

orientado, 16polıgono, 18polıgonos em posicao geral, 86ponto chave interno de um conjunto de

cırculos, 62pontos chave de um conjunto de cırculos, 61pontos evento de uma linha de varredura,

108produto cruzado, 17

programa de computador algebricamentetratavel, 25

raio associado a um ponto no plano, 30raio de um cırculo, 16relacao de incomparabilidade de uma ordem

parcial, 13representacao de um segmento candidato de

uma lista de polıgonos, 102

segmento de reta ou aresta de um polıgonocomparavel em um ponto, 96

segmento de reta que passa por um ponto,93

segmento orientado compatıvel com umconjunto, 28

segmentos candidatos de uma lista depolıgonos, 82

sinal de um numero real, 12subcorpo real, 24

transformacao de inversao, 69

vertice de um polıgono, 18vertices de uma boa representacao de um

conjunto de pontos, 29

125