Geometria Computacional

Documentos relacionados
Geometria Computacional

Interseção de Semiplanos

Algoritmos geométricos

ANÁLISE DE ALGORITMOS

Geometria Computacional: Fecho convexo

Algoritmos gulosos (greedy)

5. Invólucros Convexos no Plano (cont )

AULA 13. Algoritmos p.526/582

Exercícios: Recursão

Coordenadas Baricéntricas

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

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

Ponto q está no polígono?

Interpolação polinomial: Diferenças divididas de Newton

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Geometria Computacional

Oficina de Geoplanos

Capítulo Propriedades das operações com vetores

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

Projeto e Análise de Algoritmos

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

Programação das Aulas

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Pato Branco ENGENHARIA DE COMPUTAÇÃO. Prova Parcial 1 Matemática Discreta para Computação

INE Fundamentos de Matemática Discreta para a Computação

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

MAC5770 Exercícios preliminares

MAC0320 Exercícios preliminares

Computação Gráfica. Aula #2: Elementos de geometria computacional.

Análise de Algoritmos

Teorema de Tales no plano

Análise de algoritmos

Curvas e Superfícies de Bézier

Lembremos que um paralelogramo é um quadrilátero (figura geométrica com quatro lados) cujos lados opostos são paralelos.

Visualização por Computador: Teoria, Prática e Aplicações

Divisão e conquista. Eficiência de divisão e conquista

Programação dinâmica

Geometria Computacional

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

1 Vetores no Plano e no Espaço

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

Preenchimento de Polígonos

Paradigmas de Projetos de Algoritmos

Jogos de soma zero com dois jogadores

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios

Álgebra Linear I - Lista 7. Respostas

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

ESTRUTURAS DE REPETIÇÃO - PARTE 2

Lista de Exercícios sobre Recursividade

d) Por dois pontos distintos passa uma única reta

Algoritmos de ordenação Quicksort

Alguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1

Algoritmos gulosos (greedy)

Solução de Recorrências

Algoritmos de Ordenação

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Neste módulo, não daremos a definição padrão de determinantes via somatório envolvendo sinais de permutações, pois não há necessidade de entrarmos em

Encontro 2: Princípio multiplicativo

Universidade de São Paulo

Técnicas de Projeto de Algoritmos

Geometria Computacional - Notas de aulas. André Guedes

CIV2802 Sistemas Gráficos para Engenharia

Algoritimos e Estruturas de Dados III CIC210

Transcrição:

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

Combinação convexa P : coleção de pontos do plano, dada por X[1..n],Y [1..n]. GeoComp 2009 p. 2

Combinação convexa P : coleção de pontos do plano, dada por X[1..n],Y [1..n]. Combinação convexa de pontos de P : soma da forma α 1 (X[1],Y [1]) + + α n (X[n],Y [n]), com α i 0, para i = 1,...,n, e α 1 + + α n =1. GeoComp 2009 p. 2

Combinação convexa P : coleção de pontos do plano, dada por X[1..n],Y [1..n]. Combinação convexa de pontos de P : soma da forma α 1 (X[1],Y [1]) + + α n (X[n],Y [n]), com α i 0, para i = 1,...,n, e α 1 + + α n =1. Fecho convexo de P : conjunto de combinações convexas de pontos de P, ou seja, conv(p) := {α 1 (X[1],Y [1]) + + α n (X[n],Y [n]) : conv(p) := { α 1 + + α n = 1, e α i 0 (i = 1,...,n)}. GeoComp 2009 p. 2

Combinação convexa P : coleção de pontos do plano, dada por X[1..n],Y [1..n]. Combinação convexa de pontos de P : soma da forma α 1 (X[1],Y [1]) + + α n (X[n],Y [n]), com α i 0, para i = 1,...,n, e α 1 + + α n =1. Fecho convexo de P : conjunto de combinações convexas de pontos de P, ou seja, conv(p) := {α 1 (X[1],Y [1]) + + α n (X[n],Y [n]) : conv(p) := { α 1 + + α n = 1, e α i 0 (i = 1,...,n)}. Problema: Dada uma coleção P de pontos do plano, determinar o fecho convexo de P. GeoComp 2009 p. 2

Quickhull Ideia: descartar pontos que estão no interior do fecho convexo e concentrar o trabalho nos pontos que estão próximos da fronteira. GeoComp 2009 p. 3

Quickhull Ideia: descartar pontos que estão no interior do fecho convexo e concentrar o trabalho nos pontos que estão próximos da fronteira. Monta coleções da esquerda e da direita e aplica recursão nelas. GeoComp 2009 p. 3

Como dividir a coleção? Começamos com dois extremos consecutivos do fecho. GeoComp 2009 p. 4

Como dividir a coleção? Começamos com dois extremos consecutivos do fecho. Então precisamos encontrar o extremo marrom e dividir em três a coleção de pontos. GeoComp 2009 p. 4

Como encontrar o ponto marrom? O extremo marrom é o ponto mais distante da coleção em relação à reta que passa pelos dois extremos iniciais. GeoComp 2009 p. 5

Como encontrar o ponto marrom? O extremo marrom é o ponto mais distante da coleção em relação à reta que passa pelos dois extremos iniciais. Como são as áreas dos vários triângulos? Qual tem a maior área? GeoComp 2009 p. 5

Como encontrar o ponto marrom? O extremo marrom é o ponto mais distante da coleção em relação à reta que passa pelos dois extremos iniciais. Como são as áreas dos vários triângulos? Qual tem a maior área? O triângulo com terceira ponta mais distante! GeoComp 2009 p. 5

O ponto marrom X[p..r],Y [p..r]: coleção com 3 pontos em posição geral. GeoComp 2009 p. 6

O ponto marrom X[p..r],Y [p..r]: coleção com 3 pontos em posição geral. A função abaixo devolve a área do triângulo cujos extremos são os pontos de índices i, j e k. ÁREA (X,Y,i,j,k) 1 devolva DET(X[i],Y [i],x[j],y [j],x[k],y [k]) /2 GeoComp 2009 p. 6

O ponto marrom X[p..r],Y [p..r]: coleção com 3 pontos em posição geral. A função abaixo devolve a área do triângulo cujos extremos são os pontos de índices i, j e k. ÁREA (X,Y,i,j,k) 1 devolva DET(X[i],Y [i],x[j],y [j],x[k],y [k]) /2 Recebe X[p..r],Y [p..r] e, usando ÁREA, devolve o índice de um ponto extremo da coleção distinto de p e r. PONTOEXTREMO (X, Y, p, r) 1 q p + 1 maior ÁREA(X,Y,p,r,q) 2 para i p + 2 até r 1 faça 3 se ÁREA(X,Y,p,r,i) > maior 4 então q i maior ÁREA(X,Y,p,r,q) 5 devolva q GeoComp 2009 p. 6

Exemplo 7 6 5 8 3 9 X 2 2 3 0 1 1 1 2 4 1 2 3 4 5 6 7 8 9 Y 2 1 4 1 4 1 3 2 2 2 4 1 2 3 4 5 6 7 8 9 1 PONTOEXTREMO(X, Y, 1, 9) = 7 GeoComp 2009 p. 7

Exemplo 7 6 5 8 3 9 X 2 2 3 0 1 1 1 2 4 1 2 3 4 5 6 7 8 9 Y 2 1 4 1 4 1 3 2 2 2 4 1 2 3 4 5 6 7 8 9 1 PONTOEXTREMO(X, Y, 1, 9) = 7 Exercício: Mostre que o algoritmo de fato devolve o índice de um ponto extremo da coleção X[p..r],Y [p..r]. GeoComp 2009 p. 7

Exemplo 7 6 5 8 3 9 X 2 2 3 0 1 1 1 2 4 1 2 3 4 5 6 7 8 9 Y 2 1 4 1 4 1 3 2 2 2 4 1 2 3 4 5 6 7 8 9 1 PONTOEXTREMO(X, Y, 1, 9) = 7 Exercício: Mostre que o algoritmo de fato devolve o índice de um ponto extremo da coleção X[p..r],Y [p..r]. Consumo de tempo de PONTOEXTREMO (X,Y,p,r): Θ(n), onde n := r p + 1. GeoComp 2009 p. 7

Particionamento PARTICIONE (X,Y,p,r): Recebe coleção X[p..r],Y [p..r] de pontos em posição geral, com pelo menos três pontos, tal que os pontos de índice p e r são extremos consecutivos na fronteira do fecho convexo da coleção no sentindo anti-horário. GeoComp 2009 p. 8

Particionamento PARTICIONE (X,Y,p,r): Recebe coleção X[p..r],Y [p..r] de pontos em posição geral, com pelo menos três pontos, tal que os pontos de índice p e r são extremos consecutivos na fronteira do fecho convexo da coleção no sentindo anti-horário. Rearranja X[p..r],Y [p..r] e devolve p, q tq p p < q < r e (i) o ponto de índice r permanece na mesma posição, enquanto que o ponto de índice p foi para a posição p, (ii) o ponto de índice q é extremo, (iii) X[p..p 1],Y [p..p 1] é uma coleção de pontos interiores ao fecho convexo de X[p..r],Y [p..r], (iv) GeoComp 2009 p. 8

Particionamento PARTICIONE (X,Y,p,r): Rearranja X[p..r],Y [p..r] e devolve p, q tq p p < q < r e (i) o ponto de índice r permanece na mesma posição, enquanto que o ponto de índice p foi para a posição p, (ii) o ponto de índice q é extremo, (iii) X[p..p 1],Y [p..p 1] é uma coleção de pontos interiores ao fecho convexo de X[p..r],Y [p..r], (iv) X[p +1..q 1],Y [p +1..q 1] é a coleção dos pontos que estão à esquerda da reta orientada determinada por (X[p ],Y [p ]) e (X[q],Y [q]), (v) X[q+1..r 1],Y [q+1..r 1] é a coleção dos pontos que estão à esquerda da reta orientada determinada por (X[q],Y [q]) e (X[r],Y [r]). GeoComp 2009 p. 9

Particionamento 7 5 3 PARTICIONE(X, Y, 1, 9) 6 8 9 p q r 2 4 1 X 2 2 3 0 1 1 1 2 4 Y 2 1 4 1 4 1 3 2 2 1 2 3 4 5 6 7 8 9 Encontra o ponto extremo indicado por q. GeoComp 2009 p. 10

Particionamento 2 5 3 PARTICIONE(X, Y, 1, 9) p 6 8 9 q p p+1 k r 7 4 1 X 2 1 3 0 1 1 2 2 4 Y 2 3 4 1 4 1 1 2 2 1 2 3 4 5 6 7 8 9 Encontra o ponto extremo indicado por q. Coloca esse ponto na posição p+1. GeoComp 2009 p. 10

Particionamento 2 5 3 PARTICIONE(X, Y, 1, 9) p 6 8 9 q p p+1 k r 7 4 1 X 2 1 3 0 1 1 2 2 4 Y 2 3 4 1 4 1 1 2 2 1 2 3 4 5 6 7 8 9 Encontra o ponto extremo indicado por q. Coloca esse ponto na posição p+1. Invariante: X[q..r],Y [q..r]: pontos vermelhos examinados X[p..q 1],Y [p..q 1]: pontos verdes examinados X[k+1..p 1],Y [k+1..p 1]: pontos interiores examinados GeoComp 2009 p. 10

Particionamento 2 5 3 PARTICIONE(X, Y, 1, 9) p 6 8 9 q p p+1 k r 7 4 1 X 2 1 3 0 1 1 2 2 4 Y 2 3 4 1 4 1 1 2 2 1 2 3 4 5 6 7 8 9 Invariante: X[q..r],Y [q..r]: pontos vermelhos examinados X[p..q 1],Y [p..q 1]: pontos verdes examinados X[k+1..p 1],Y [k+1..p 1]: pontos interiores examinados GeoComp 2009 p. 11

Particionamento 2 5 3 PARTICIONE(X, Y, 1, 9) p 6 8 9 q p p+1 k r 7 4 1 X 2 1 3 0 1 1 2 2 4 Y 2 3 4 1 4 1 1 2 2 1 2 3 4 5 6 7 8 9 Invariante: X[q..r],Y [q..r]: pontos vermelhos examinados X[p..q 1],Y [p..q 1]: pontos verdes examinados X[k+1..p 1],Y [k+1..p 1]: pontos interiores examinados Para k r 1 até p+1 coloque o k-ésimo ponto na parte apropriada. GeoComp 2009 p. 11

Particionamento 6 8 7 p q 2 1 9 p p+1 k r X 2 1 3 0 1 1 2 2 4 5 4 Y 2 3 4 1 4 1 1 2 2 a 1 Ao final... p p q r X 2 1 2 0 2 1 3 1 4 Y 2 1 2 1 1 3 4 4 2 1 2 3 4 5 6 7 8 9 Invariante: X[q..r],Y [q..r]: pontos vermelhos examinados X[p..q 1],Y [p..q 1]: pontos verdes examinados X[k+1..p 1],Y [k+1..p 1]: pontos interiores examinados GeoComp 2009 p. 12

Particione PARTICIONE (X, Y, p, r) 1 q PONTOEXTREMO(X, Y, p, r) 2 (X[p+1], Y [p+1]) (X[q], Y [q]) 3 p r q r 4 para k r 1 decrescendo até p + 2 faça 5 se ESQ(X, Y, p, p+1, k) 6 então p p 1 (X[p ], Y [p ]) (X[k], Y [k]) 7 senão se ESQ(X, Y, p+1, r, k) 8 então p p 1 q q 1 9 (X[q], Y [q]) (X[k], Y [k]) 10 se p q então (X[k], Y [k]) (X[p ], Y [p ]) 11 p p 1 q q 1 12 (X[q], Y [q]) (X[p+1], Y [p+1]) 13 se p q então (X[p ], Y [p ]) (X[p+1], Y [p+1]) 14 p p 1 (X[p ], Y [p ]) (X[p], Y [p]) 15 devolva (p, q) GeoComp 2009 p. 13

Particione PARTICIONE (X, Y, p, r) 1 q PONTOEXTREMO(X, Y, p, r) 2 (X[p+1], Y [p+1]) (X[q], Y [q]) 3 p r q r 4 para k r 1 decrescendo até p + 2 faça 5 se ESQ(X, Y, p, p+1, k) 6 então p p 1 (X[p ], Y [p ]) (X[k], Y [k]) 7 senão se ESQ(X, Y, p+1, r, k) 8 então p p 1 q q 1 9 (X[q], Y [q]) (X[k], Y [k]) 10 se p q então (X[k], Y [k]) (X[p ], Y [p ]) 11 p p 1 q q 1 12 (X[q], Y [q]) (X[p+1], Y [p+1]) 13 se p q então (X[p ], Y [p ]) (X[p+1], Y [p+1]) 14 p p 1 (X[p ], Y [p ]) (X[p], Y [p]) 15 devolva (p, q) GeoComp 2009 p. 13

Quickhull QUICKHULL (X, Y, n) 1 se n = 1 2 então h 1 H[1] 1 3 senão k min{i [1..n] : Y [i] Y [j], 1 j n} 4 (X[1],Y [1]) (X[k],Y [k]) 5 i 2 6 para j 3 até n faça 7 se DIR(X,Y, 1,i,j) então i j 8 (X[n],Y [n]) (X[i],Y [i]) 9 (H,h) QUICKHULLREC(X,Y, 1,n) 10 devolva (H, h) GeoComp 2009 p. 14

Quickhull QUICKHULL (X, Y, n) 1 se n = 1 2 então h 1 H[1] 1 3 senão k min{i [1..n] : Y [i] Y [j], 1 j n} 4 (X[1],Y [1]) (X[k],Y [k]) 5 i 2 6 para j 3 até n faça 7 se DIR(X,Y, 1,i,j) então i j 8 (X[n],Y [n]) (X[i],Y [i]) 9 (H,h) QUICKHULLREC(X,Y, 1,n) 10 devolva (H, h) Consumo de tempo: Θ(n) + T(n), onde n = r p + 1 e T(n) é o tempo consumido por QUICKHULLREC(X, Y, 1, n, H, h). GeoComp 2009 p. 14

Miolo recursivo do Quickhull QUICKHULLREC (X, Y, p, r) 1 se p = r 1 há exatamente dois pontos na coleção 2 então h 2 H[1] r H[2] p 3 senão (p,q) PARTICIONE(X,Y,p,r) 4 (H,h) QUICKHULLREC(X,Y,q,r) 5 (H,h ) QUICKHULLREC(X,Y,p,q) H H H removendo uma cópia do q 6 para i 2 até h faça 7 h h + 1 H[h] H [i] 8 devolva (H, h) GeoComp 2009 p. 15

Miolo recursivo do Quickhull QUICKHULLREC (X, Y, p, r) 1 se p = r 1 há exatamente dois pontos na coleção 2 então h 2 H[1] r H[2] p 3 senão (p,q) PARTICIONE(X,Y,p,r) 4 (H,h) QUICKHULLREC(X,Y,q,r) 5 (H,h ) QUICKHULLREC(X,Y,p,q) H H H removendo uma cópia do q 6 para i 2 até h faça 7 h h + 1 H[h] H [i] 8 devolva (H, h) Consumo de tempo: T(n) = T(n 1 ) + T(n 2 ) + Θ(n), onde n = r p + 1, n d = r q + 1 e n e = r p + 1. GeoComp 2009 p. 15

Miolo recursivo do Quickhull QUICKHULLREC (X, Y, p, r) 1 se p = r 1 há exatamente dois pontos na coleção 2 então h 2 H[1] r H[2] p 3 senão (p,q) PARTICIONE(X,Y,p,r) 4 (H,h) QUICKHULLREC(X,Y,q,r) 5 (H,h ) QUICKHULLREC(X,Y,p,q) H H H removendo uma cópia do q 6 para i 2 até h faça 7 h h + 1 H[h] H [i] 8 devolva (H, h) Consumo de tempo: T(n) = T(n 1 ) + T(n 2 ) + Θ(n), onde n = r p + 1, n d = r q + 1 e n e = r p + 1. Observe que n d + n e n. Com isso, podemos mostrar que T(n) = O(n 2 ). GeoComp 2009 p. 15