27
1 O WEB-site da disciplina de Geometria Computacional Computacional http://www2.mat.ua.pt/pessoais/leslie/geocom/ Introdução à Geometria Computacional 2 António Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações

O WEB-site da disciplina de Geometria Computacionalsweet.ua.pt/leslie/GeoCom/Slides/GC_0708_1_Introducao.pdf · Clássica que com seus axiomas 3, , determinava construções geométricas

Embed Size (px)

Citation preview

1

O WEB-site da disciplina de Geometria

Computacional Computacional

http://www2.mat.ua.pt/pessoais/leslie/geocom/

Introdução à Geometria Computacional

2

António Leslie BajuelosDepartamento de Matemática

Universidade de Aveiro

Mestrado em Matemática e Aplicações

2

O que é Geometria Computacional?

UmaUma boaboa definiçãodefinição::

Geometria Computacional é o estudosistemático de algoritmos eficientes paraproblemas geométricos.

Raízes - bem antigas

Começou com a Geometria EuclidianaClássica que com seus axiomas

3

Clássica, que com seus axiomas,determinava construções geométricas(algoritmos) baseadas em operaçõessimples.

O que é Geometria Computacional?

Alguns factos:O estudo dos algoritmos eficientes para problemasgeométricos ficou parado por algum tempo.

A moda eram as provas por contradição, que nãogerava nenhum método ou algoritmo de construção.

Por conta dos computadores voltaram a aparecerprovas construtivas os algoritmos reapareceramnos estudos geométricos

Em 1985 foi publicado o primeiro livro sobre o

4

p passunto, escrito por Preparata e Shamos

F. P. Preparata and M. I. Shamos. ComputationalGeometry: An Introdution. Springer-Verlag, NewYork, USA, 1985.

3

O que é Geometria Computacional?

Explorando a definição:

O que são algoritmos? q g

O que é eficiência algoritmica?

O que é um problema geométrico?

5

O que é Geometria Computacional?

Problema Geométrico:Características gerais:

A entrada de um problema, isto é, os seus dados, éum conjunto finito de objectos geométricos (pontos,rectas, segmentos, triângulos, círculos, polígonos,etc.).

A saída (solução) do problema:

calcular algum número relacionado com a entrada(por exemplo, a área de um polígono)

t i t bj t ét i (

6

construir outros objectos geométricos (porexemplo, a intersecção de dois polígonos),

decidir se a entrada tem uma certa propriedade(por exemplo, se um polígono é convexo).

4

O que é Geometria Computacional?

Problema Geométrico:Os objectos geométricos são geralmentedefinidos por números reais, através dep ,coordenadas ou equações.

Os objectos geométricos são contínuos, mastêm um descrição discreta, o que permite queeles sejam representados num computador.

Exemplo: um polígono é um região do plano, com um

ú i fi it d t d t d

7

número infinito de pontos, mas que pode ser representadapela sua fronteira, que por sua vez pode ser representadapela sequência finita dos vértices.

O que é Geometria Computacional?Problema Geométrico:

A solução de um problema geométrico envolve:aspectos geométricos (a localização e forma dosobjectos)objectos)

aspectos topológicos (as relações de adjacência eincidência entre os objectos).

Um algoritmo geométrico envolve partes numéricas,correspondentes ao cálculo da geometria, e partes

8

p g , pdiscretas, correspondentes ao cálculo da topologia.

Saber escolher como tratar a parte geométrica de formasimples, mas eficiente e robusta, é uma das chavesprincipais na resolução computacional de problemasgeométricos.

5

O que é Geometria Computacional?Problema Geométrico:

A combinação dos aspectos geométricos & topológicosimplicam em certas particularidades dos problemasgeométricos que tornam a sua solução robusta umatarefa difícil.

Essas particularidades estão ausentes na maioria dosproblemas e algoritmos estudados em ciência dacomputação.

é é é

9

A mistura de técnicas geométricas, numéricas ediscretas, aliada à motivação proveniente de problemaspráticos dão à Geometria Computacional umariqueza característica.

O que é Geometria Computacional?Problema Geométrico:

Exemplos:

Invólucros Convexos

Intersecção de Polígonos

10

6

O que é Geometria Computacional?

Problema Geométrico

11

Algoritmos e Eficiência AlgorítmicaAlgoritmo:

Uma definição muito informal:

Um algoritmo é uma receita matemática del bl

???

como resolver um problema.O custo de um algoritmo será medido pela quantidadede recursos computacionais utilizados na sua execução,tipicamente:

Quanto tempo ele leva para resolver um problema?

Quanta memória foi gasta pelo algoritmo.

Então…

12

Dados dois ou mais algoritmos para solucionar um mesmoproblema, é mais sensato escolher aquele que obtém umasolução no menor tempo possível e que utiliza a menorquantidade de espaço para representação dos dados doproblema.

7

Algoritmos e Eficiência AlgorítmicaEficiência de Algoritmos:

Vamos denotar por:S(n) – quantidade de memória exigido por um algoritmo em função dotamanho (n) do problema

T(n) – tempo de execução em função do tamanho (n) do problema

Infelizmente na prática é bastante difícil (e em muitoscasos impossível) prever com rigor o tempo de execuçãode um algoritmo.

Uma possível solução...

Identificar no algoritmo as operações elementares(primitivas) e determinar o número de vezes que elas

13

(primitivas) e determinar o número de vezes que elassão executadas (o tempo “real” de execução de cada

primitiva seria uma constante multiplicativa)

Iremos simplificar a análise de um algoritmoconcentrando-nos na eficiência assimptotica (análise dopior dos casos).

Algoritmos e Eficiência Algorítmica

Eficiência de Algoritmos:Exemplo:

Suponhamos que a complexidade temporal éexpressa em termos de uma função f(n).

Assim, interessa estudar a taxa de crescimento de f(n)

Suponhamos, por exemplo, que

f(n) = an2+bn+c

onde a, b e c são constantes

À did t t d 1 0

14

À medida que n aumenta os termos de grau 1 e grau 0tornam-se insignificantes pelo que podem serdesprezados. Mas, também a torna-se insignificante àmedida que n aumenta.

Assim, encontraremos a função T(n) = n2

8

Algoritmos e Eficiência Algorítmica

Eficiência de Algoritmos:Resumindo, ao expressarmos o tempo de execução de umalgoritmo passaremos a trabalhar, apenas, com o termodominante.

A notação assimptótica fornece-nos uma linguagemconveniente para expressarmos a taxa de crescimento deuma função de complexidade temporal em função dotamanho do problema.

As notações que usamos para descrever o tempo de

15

execução assimptótica de um algoritmo são definidasem termos de funções cujos domínios são o conjunto denúmeros ℵ0 = {0, 1, 2, ...}.

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade:

A notação O (ordem de complexidade)Sejam f e g duas funções de domínio ℵ.

Dizemos que a função f é O(g(n)) se,

∃ c ∈ ℜ+, ∃ N ∈ ℵ: |f(n)| ≤ c|g(n)|, ∀ n ≥ N

Assim, usamos a notação O quando queremos umlimite superior assimptótico.

16

9

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade :

Ao usarmos a notação O, que pode ser referida comoordem de complexidade, podemos descrever o

d ã d l dtempo de execução de um algoritmo inspeccionando,simplesmente, a estrutura do algoritmo para o piorcaso.

Exemplos:

(n+1) / 2 = O(n)

2n3 + 4n2 +3 = O(n3)

17

n2 + 1/n + 3 = O(n2)

n log2n + n + 2 = O(n log2n)

ln n = O(log2n) loglogba == lnln aa // lnln bb

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade :

Assim podemos definir Classes de ComplexidadeAlgorítmica (ordem de complexidade)

O(1) Constante O(1) Constante O(log n) LogarítmicaO(n) Linear O(n2) Quadrática O(n3) Cúbica O(nk) PolinomialO(an) ExponencialO(n!) Factorial

18

O(n!) Factorial

Estas classes estão enumeradas por ordem crescente deesforço. Assim, os algoritmos “melhores”, do ponto devista de tempo de execução, são os algoritmos que têmordem de complexidade constante.

10

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade :

19

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade :

Três algoritmos para determinar:1 + 2 + 3 + …+n

20

O(n) O(n2) O(1)

11

Algoritmos e Eficiência AlgorítmicaOrdem de Complexidade :

Três algoritmos para determinar:1 + 2 + 3 + …+ n

21

Algoritmos e Eficiência Algorítmica

Ordem de Complexidade :

Algoritmos de ordem de complexidadelogarítmica são os mais eficientes.g

Algoritmos de ordem de complexidadeexponencial geram tempos de execuçãoincomportáveis.

Um algoritmo só é viável se puder sercalculado em tempo útil.

22

calculado em tempo útil.

Na prática só interessam algoritmos decomplexidade polinomial ou inferior.

12

Algoritmos e Eficiência AlgorítmicaAlgoritmo para problemas geométricos:

Os algoritmos eficientes para problemas geométricossão fruto da combinação de

T b t i d blTeoremas sobre a geometria do problema:

Frequentemente teoremas clássicos, conhecidos háséculos, mas também teoremas novos inspiradospela abordagem algorítmica.

Técnicas algorítmicas tradicionais e especiais

Estruturas de dados adequadas

Boa análise de desempenho

23

Boa análise de desempenho

Primitivas geométricas simples e poderosas

Algoritmos e Eficiência AlgorítmicaAlgoritmo para problemas geométricos :

Em geral, basta usar um pequeno número de primitivasgeométricas bem escolhidas; essas primitivas tendem aser utilizadas em vários algoritmos.ser utilizadas em vários algoritmos.

Exemplo:

Dados três pontos no plano, A, B e C, decidir se oponto C está à esquerda do segmento orientadoAB.

24

13

Algoritmos e Eficiência Algorítmica

Algoritmos e Eficiência

25

Geometria Computacional

26

14

Geometria ComputacionalTipos de Problemas:

Podemos classificar os problemas abordados emGC em quatro tipos:

Selectivos

Construtivos

Decisão

Consultas

27

Geometria ComputacionalTipos de Problemas:

Selectivos:Nesses problemas queremos seleccionar umsubconjunto da entrada de dados.Não temos que construir nenhum objecto geométriconovo, mas possivelmente temos que descobrirrelações topológicas.Exemplos: invólucros convexo, triangulação, etc.

28

15

Geometria ComputacionalTipos de Problemas:

Construtivos:Nesses problemas temos que construir um ou maisobjectos geométricos novos a partir da entrada alémobjectos geométricos novos a partir da entrada, alémde possivelmente relações topológicas envolvendotanto objectos originais quanto objectos novos.Exemplos: intersecção de polígonos, diagrama deVoronoi, etc.

29

Geometria ComputacionalTipos de Problemas:

Decisão:Nesses problemas temos somente que responder simou não a uma perguntaou não a uma pergunta.Não precisamos construir nada, nem novos objectosgeométricos nem novas relações topológicas.Exemplos:

Dado um conjunto de segmentos de recta, há algum parque se intersecta? (Não é necessário calcular o ponto deintersecção, somente identificar um par que se intersecta,se existir algum.)Dado um polígono, ele é convexo?

30

Dado um polígono e um ponto, o ponto está fora dopolígono?

16

Geometria ComputacionalTipos de Problemas:

Consulta:Dado um conjunto fixo de objectos geométricos,queremos processá-lo de modo a poder responderqueremos processá-lo de modo a poder respondereficientemente a consultas repetidas sobre ele.Exemplos:

Dado um conjunto de pontos, a consulta é encontrar opar de pontos mais próximos.Dado um conjunto de rectângulos, a consulta é listartodos os rectângulos que intersectam um dadorectângulo.

31

Geometria ComputacionalAplicações:

Computação Gráfica:Exemplos

l b fAo seleccionarmos um objecto numa interfacegráfica, devemos seleccionar dentre todos osobjectos desenhados na ecrã aquele que estámais próximo da posição do mouse.

Para desenhar de forma realista uma cenatridimensional, é necessário saber como os váriosobjectos se projectam na ecrã e tratar as suas

l õ

32

oclusões.

Para fazer uma animação realista, é necessáriodetectar se há colisões entre os objectos que estãose movendo e o resto da cena.

17

Geometria ComputacionalAplicações:

Robótica:Um dos problemas fundamentais em robótica é oplaneamento de movimentos: o robô precisaplaneamento de movimentos: o robô precisaanalisar o seu ambiente e descobrir uma forma de semover de um ponto ao outro sem colidir com osobjectos no ambiente.

Além disso, o robô quer fazer isso da maneira maiseficiente possivelmente, o que implica na necessidadede identificar o caminho mais curto (é viável!) entre osdois pontos

33

dois pontos.

Geometria ComputacionalAplicações:

Sistemas de Informação Geográfica:Esses sistemas lidam com enormes quantidades dedados geométricos para poder representar fielmente adados geométricos para poder representar fielmente ageometria de estradas, rios, fronteiras, curvas de nível,áreas verdes, etc.

Um problema típico nessa área é saber que objectosgeográficos estão perto de outros.

Exemplo:

Se um rio ameaça transbordar, quais as cidades e

34

estradas que serão afectadas?

18

Geometria ComputacionalAplicações:

Tecnologia VSLI:Neste tipo de tecnologias os circuitos são compostospor dezenas de milhares de componentes electrónicospor dezenas de milhares de componentes electrónicosque não podem se sobrepor, para evitar curto-circuitos.Durante o projecto desses circuitos é necessárioidentificar de forma eficiente as sobreposições.

Bases de Dados:Uma consulta a uma base de dados com muitoscampos numéricos é na verdade uma consulta multi-

35

campos numéricos é na verdade uma consulta multiespacial.Exemplo

Se a base de dados de uma companhia armazenaidade, salário, altura, peso de cada funcionário,então cada funcionário é representado por umponto em R4.

Geometria ComputacionalConfigurações degeneradas:

A principal particularidade dos problemas geométricos é aexistência de configurações degeneradas, que ocorremquando os objectos geométricos não estão em posiçãogeral.gExemplos:

Três pontos numa mesma recta,Quatro pontos sobre um mesmo círculo,Três rectas passando pelo mesmo ponto.

Situações deste género são chamadas de degeneradasporque elas ocorrem somente com probabilidade quasezero (o que não quer dizer que não aconteçam naprática!).

36

Algoritmos robustos deve estar preparado para lidar comcasos especiais vindos de configurações degeneradas.

Fonte de complicações na implementação de algoritmos geométricos

19

Geometria ComputacionalConfigurações degeneradas:

Uma consequência importante da existência deconfigurações degeneradas é que os erros dearredondamento da aritmética de ponto flutuantepassam a ser relevantes em situações quase degeneradas.p ç q gExemplo:

Um ponto que esteja à esquerda de um segmento derecta e muito perto desse segmento pode serconfundido com um ponto que está à direita, e vice-versa.

O algoritmo pode tomar decisões topológicas

37

erradas ou inconsistentes

Atenção: A topologia muda descontinuamente e ageometria muda continuamente portanto um pequenoerro na geometria pode acarretar um grande erro natopologia.

Geometria ComputacionalConfigurações degeneradas:

Exemplo:Primitiva geométrica para determinar se um pontoC está à esquerda de um segmento orientado AB.

Genericamente, C pode estar à esquerda ou à direita deAB. Entretanto, isso não cobre todos os casos, pois háconfigurações degeneradas, i.e. C pode estar:

Sobre a recta ABAntes de A,Em AEntre A e B

38

Em BDepois de B

Uma implementação robusta desse predicado tem que tratar cuidadosamente todos esses casos

20

Geometria ComputacionalConfigurações degeneradas:

Invariantes geométricos - mesmo objectos geométricosem posição geral podem gerar objectos secundários emconfigurações degeneradas.Exemplo:Exemplo:

As três medianas de um triângulo sãoconcorrentes.

Esse teorema permite definir o baricentro de um triângulocomo o ponto comum às suas três medianas

39

como o ponto comum às suas três medianas.

Ainda que os vértices do triângulo estejam em posição geral no plano, as três medianas sempre são concorrentes e portanto não estão em posição geral

Problemas Clássicos da GCPar mais próximo (the closest pair problem)

Enunciado: Dados n pontos queremos encontrar dois cujadistância entre eles é mínima.

Aplicação: Controlo de tráfego aéreo: os dois aviões queestão em maior perigo de colisão são aqueles que estãomais próximos.Resolução:

40

Resolução:Este problema pode ser resolvido facilmente em O(dn2);onde d é a dimensão do espaço.Numa forma mais eficiente este problema pode serresolvido por um algoritmo do tipo divisão-e-conquistaem tempo O(dn log n)

21

Problemas Clássicos da GCInvólucros Convexos (convex hull)

Enunciado: Dado um conjunto Q com n pontos; encontraro invólucro convexo1 desse conjunto de pontos.

Aplicação: Robótica - Se o invólucro convexo de um robônão colide com obstáculos então o robô também nãocolide.Comentários:

Historicamente, esse foi o primeiro problema

41

Historicamente, esse foi o primeiro problemageométrico a ser completamente analisado.Tem uma estreita relação com o problema deordenação: sua complexidade está intimamente ligadaà de ordenação e muitos algoritmos para ordenaçãotêm versões análogas para invólucros convexos.

1 O invólucro convexo de um conjunto Q ⊂ Rd é o menor conjuntoconvexo de Rd que contém Q

Problemas Clássicos da GCInvólucros Convexos (convex hull)

Resolução:

Nos anos 60 uma aplicação da Bell Labsnecessitava computar o invólucro convexo de

Applet

aproximadamente 10000 pontos no plano e osalgoritmos de complexidade de tempo O(n2) foramconsiderados muito lentos.

Tendo essa aplicação como motivação, no começodos anos 70, Graham desenvolveu o primeiroalgoritmo de complexidade de tempo O(n log n)

O fecho convexo também pode ser construído em

42

O fecho convexo também pode ser construído emO(n log n) por um algoritmo de divisão-e-conquista

22

Problemas Clássicos da GCTriangulação (triangulation)

Enunciado: (para polígonos) Dado um polígono Pqueremos adicionar o maior número possível dediagonais (que não se cruzem) em P, de tal forma que ointerior do polígono fique dividido em triângulos cominterior do polígono fique dividido em triângulos cominteriores disjuntos.

43

Aplicação: na resolução do problema da galeria de arte.

Problemas Clássicos da GCTriangulação (triangulation)

Resolução:

Applet

44

23

Problemas Clássicos da GCPartição de Polígonos (polygon partition)

Enunciado: Alem de algoritmos eficientes para dividirum polígono em triângulos, também é de interesse odesenvolvimento de algoritmos que dividam um polígonoem polígonos monótonos, trapezóides ou polígonosem polígonos monótonos, trapezóides ou polígonosconvexos.

45

Aplicação: Uma motivação para particionar um polígonoem polígonos convexos é o reconhecimento decaracteres: um character pode ser representado comoum polígono particionado em partes convexas.

Problemas Clássicos da GCProblemas de Intersecção (intersection problems)

Um dos problemas mais básicos em geometriacomputacional é o de computar intersecção.Dois enunciados:

Problema Nº1: Dados n segmentos de rectas noProblema Nº1: Dados n segmentos de rectas noplano; determinar todos os pontos de intersecçãoentre pares de segmentos.Problema Nº2: Dados n segmentos de recta noplano; decidir se existem dois segmentos que seintersectam.

46

24

Problemas Clássicos da GCProblemas de Intersecção (intersection problems)

Aplicações:em robótica e planeamento de movimentos éimportante sabermos quando dois objectos seintersectam para evitarmos colisões;

Applet

intersectam para evitarmos colisões;em computação gráfica: ray shooting é um métodoimportante para a renderização de cenas. A parte queé computacionalmente mais cara do ray shooting éjustamente determinar a intersecção entre o raio comoutros objectos.

Resolução (Problema Nº 2):Força bruta: O(n2)

47

Linha de Varrimento: O(n log n +I log n)

Problemas Clássicos da GCDiagrama de Voronoi (Voronoi Diagrams)

Enunciado: Dado um conjunto S de n pontos no planoqueremos determinar para cada ponto p em S qual e aregião V(p) dos pontos do plano que estão mais perto dep do que de qualquer outro ponto em S. As n regiõesp do que de qualquer outro ponto em S. As n regiõesV(p) formam uma partição do plano chamada deDiagrama de Voronoi.

48

Aplicação: Imagine uma vasta floresta contendo váriospontos de observação de incêndio. O conjunto dasárvores que estão mais próximas de um determinadoposto p determina a região V(p) das árvores que são deresponsabilidade de ponto de observação p.

25

Problemas Clássicos da GCDiagrama de Voronoi (Voronoi Diagrams)

Resolução:

O diagrama de Voronoi de um conjunto de n pontospode ser construído em O(n log n) por um algoritmo

Applet

do tipo divisão-e-conquista

Em 1985, Fortune desenvolveu um algoritmo devarrimento (plane-sweep algorithm) muito elegante esimples cuja complexidade de tempo e O(n log n)

49

Problemas Clássicos da GCTriangulação de Delaunay (Delaunay triangulations)

Enunciado: O dual geométrico (utilizando rectas) de umdiagrama de Voronoi para um conjunto S de pontosforma uma triangulação ao do conjunto S, chamada detriangulação de Delaunay

Applet

triangulação de Delaunay.

50

Aplicações:Simulação do processo de produção de cristaisMetalurgia (para examinar as misturas)Cartografia

26

Problemas Clássicos da GCArranjos e dualidade (Arrangements of lines)

Definição: DadasDadas nn rectasrectas nono plano,plano, umum arranjoarranjo éésimplesmentesimplesmente oo grafografo queque temtem comocomo vérticesvértices asasintersecçõesintersecções dasdas rectasrectas ee comocomo asas arestasarestas osos segmentossegmentosdede rectasrectas ligandoligando estasestas intersecçõesintersecçõesdede rectasrectas ligandoligando estasestas intersecçõesintersecções..

UmaUma taltal estruturaestrutura podepode serser construídaconstruída emem tempotempo OO((nn22))

51

Motivação: muitos problemas envolvendo pontos podemser transformados em problemas envolvendo rectasatravés do método de dualidade.

Problemas Clássicos da GCArranjos e dualidade (Arrangements of lines)

Exemplo: Suponha que desejemos determinar se existemtrês pontos colineares entre um conjunto de n pontosno plano

Res loção

52

Resuloção:

Isto pode ser determinado por um algoritmo do tipoforça-bruta em tempo O(n3)Entretanto, se os pontos são dualizados em rectas,então a questão é reduzida a decidir se existe umvértice de grau pelo menos 4 neste arranjo de rectas

27

Problemas Clássicos da GCGaleria de Arte (Art Gallery Problem)

Enunciado: EmEm 19731973,, VictorVictor KleeKlee propôspropôs oo problemaproblema dededeterminardeterminar oo menormenor númeronúmero dede guardasguardas queque sãosãosuficientessuficientes parapara cobrircobrir oo interiorinterior dede umauma salasala dede umaumagaleria de arte comcom nn paredesparedes

Applet

galeria de arte comcom nn paredesparedes..

53

Resuloção:

Teorema da Galeria de Arte (Chvatal's Art GalleryTheorem ou Watchman Theorem) que diz que ⎣n/3⎦guardas são ocasionalmente necessários e sempresuficientes para cobrirmos uma sala com n paredes.