2002 lcg/ufrj. all rights reserved. 1 arranjos claudio esperança paulo roma

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

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

1 2002 LCG/UFRJ. All rights reserved.

ArranjosArranjos

Claudio EsperançaPaulo Roma

Page 2: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

2 2002 LCG/UFRJ. All rights reserved.

ArranjosArranjos• Arranjos de retas e planos são a

terceira estrutura em importância em GC.

• Arranjos de retas são coleções de retas infinitas distribuídas no plano.

• Arranjos induzem uma partição do espaço em regiões convexas (faces), segmentos de reta (arestas), e pontos (vértices nas interseções das retas).

• A partição induzida é chamada de arranjo, e consideram-se as faces e arestas como conjuntos abertos (células disjuntas duas a duas).

Page 3: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

3 2002 LCG/UFRJ. All rights reserved.

AplicaçõesAplicaçõesProblemas que podem ser resolvidos em tempo O(n2) e espaço O(n2) construindo arranjos ou em tempo O(n2) e espaço O(n) fazendo varredura topológica

• Teste de posição geral▪ Dados n pontos no plano, determinar se existem 3 ou

mais pontos colineares• Triângulo de menor área

▪ Dados n pontos no plano, determinar o menor triângulo que pode ser construído tendo vértices nesses pontos

• Menor k-corredor▪ Dados n pontos e um inteiro k, determinar o menor

(mais estreito) corredor (par de retas paralelas) que contém k pontos. A medida de distância pode ser a distância perpendicular entre as retas ou a distância vertical (ou horizontal)

Page 4: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

4 2002 LCG/UFRJ. All rights reserved.

AplicaçõesAplicações• Grafo de Visibilidade

▪ Dada uma coleção de n segmentos de reta, diz-se que dois pontos são visíveis se um segmento de reta entre eles não intersecta nenhum segmento da coleção.

▪ Um grafo de visibilidade tem vértices correspondentes pontos extremos dos segmentos de reta e arestas correspondentes a pares de pontos mutuamente visíveis

a

b

c

d

e f

a b

c

de

f

Page 5: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

5 2002 LCG/UFRJ. All rights reserved.

AplicaçõesAplicações• Máxima reta cortante (maximum stabbing line)

▪ Dada uma coleção de n segmentos de reta, determinar a reta que conta (intersecta) o maior número de segmentos

• Remoção de superfícies ocultas▪ Dados n polígonos em R3 que não se intersectam,

detectar quais partes de que polígonos são visíveis se projetados sobre um plano

▪ Observar que no pior caso, resultado pode conter O(n2) partes, e portanto o algoritmo é assintoticamente ótimo

▪ Entretanto, pior caso raramente acontece -> algoritmo tem importância apenas teórica

• Problema do sanduíche de presunto▪ Dados n pontos azuis e m pontos vermelhos no plano,

determinar uma reta que bissecta (reparte igualmente) ambas as coleções

▪ Tal reta sempre existe ▪ Algoritmo baseado em arranjos pode resolve o problema

em tempo e espaço O (n + m)

Page 6: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

6 2002 LCG/UFRJ. All rights reserved.

CombinatóriaCombinatória• Em arranjos simples cada par de retas

se intersectam em exatamente um ponto e não passam mais de duas retas pelo mesmo ponto.

• Arranjos degenerados podem conter retas paralelas ou três retas passando pelo mesmo ponto, mas dificultam a prova dos teoremas.

Page 7: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

7 2002 LCG/UFRJ. All rights reserved.

Teorema 1Teorema 1• Um arranjo simples com n retas possui:

▪ F = faces▪ A = n2 arestas▪ V = vértices▪ Nenhum arranjo degenerado excede essas

quantidades.

12

n

n

2

n

Page 8: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

8 2002 LCG/UFRJ. All rights reserved.

ProvaProva• O número de vértices é imediato pois

cada par de retas se intersecta em exatamente um ponto.

• O número de arestas pode ser verificado por indução:▪Assuma um arranjo simples S com n - 1

retas e (n - 1)2 arestas. Insira uma nova reta L em S.

▪Uma nova aresta é criada em cada uma das n - 1 retas e L é dividida em n arestas por S.

▪Assim, A = (n – 1)2 + (n – 1 ) + n = n2.• O número de faces pode ser verificado

pela fórmula de Euler: V – A + F = 2.

Page 9: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

9 2002 LCG/UFRJ. All rights reserved.

PropriedadesPropriedades• Arranjos são fundamentalmente

quadráticos: ▪V, A e F são (n2).

• A construção eficiente de arranjos é possível porque nenhuma reta corta as células em muitos pontos.

• De fato, o teorema da zona garante que o número de interseções é linear no número de retas.

Page 10: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

10 2002 LCG/UFRJ. All rights reserved.

Zona de Uma RetaZona de Uma Reta• Seja S um arranjo simples com n retas e

uma reta L S. A zona Z(L) é o conjunto de células de S intersectadas por L.

|D|=4

A

B

C

D E

F

L1 L2 L3L4

L5

eaeb

L

x interseção mais à direita

Z(L)= {A,B,C,D,E,F}

|A|=3|F|=4

|B|=3

|C|=4

|E|=2

z(L) = 20

Page 11: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

11 2002 LCG/UFRJ. All rights reserved.

Teorema da ZonaTeorema da Zona• O número total de arestas em todas as

células que intersectam uma reta de um arranjo de n retas é O(n): zn 6n.▪ Note-se que cada aresta na fronteira de duas

células adjacentes não deve ser contada duas vezes.

• A prova assume L horizontal (basta mudar o sistema de coordenadas adequadamente).

• A zona de L é dividida em arestas que limitam faces à direita e à esquerda.▪ Como as faces são convexas, basta dividir

cada face no vértice mais alto e mais baixo para se ter duas cadeias convexas de arestas.

Page 12: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

12 2002 LCG/UFRJ. All rights reserved.

Prova do Teorema da ZonaProva do Teorema da Zona• O conjunto das arestas esquerdas de Z(L)

possui no máximo 3n arestas.• No caso base n = 1, há apenas uma aresta

esquerda. Assuma-se verdadeiro para um conjunto de n – 1 retas retirando-se a reta l1,

aquela mais à direita de S.

Ll1

eb

ea

Page 13: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

13 2002 LCG/UFRJ. All rights reserved.

Prova do Teorema da ZonaProva do Teorema da Zona• Pela hipótese indutiva há apenas 3(n – 1) retas

esquerdas em Z(L).• Agora inclua-se de novo l1 e veja-se quantas

arestas esquerdas a mais aparecem.▪ Considere-se a face mais à direita do arranjo de

n – 1 retas. A reta l1 intersecta L nesta face.

• Sejam ea e eb as duas arestas dessa face intersectadas por l1, uma acima e a outra abaixo de L.

• A inclusão de l1 cria uma nova aresta esquerda ao longo de l1 e divide ea e eb em duas novas arestas esquerdas.▪ Há então um incremento total de 3 arestas.

Page 14: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

14 2002 LCG/UFRJ. All rights reserved.

Prova do Teorema da ZonaProva do Teorema da Zona• Note-se que l1 não pode contribuir com

nenhuma outra aresta esquerda porque, dependendo da inclinação, a aresta ea ou a aresta eb ficará invisível de L.▪Porém, podem aparecer outras arestas

direitas, que não estão sendo contadas.• Assim, o número total de arestas

esquerda da zona de L é no máximo 3(n – 1) + 3 3n.

Page 15: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

15 2002 LCG/UFRJ. All rights reserved.

Construção IncrementalConstrução Incremental• O arranjo deve ser representado por uma

estrutura de dados adequada. Seja L = {l1, l2, ..., ln}.

• Deve ser adicionada uma reta por vez, não importando a ordem.

• Suponha-se que i – 1 retas já foram adicionadas e calcule-se o esforço para incluir li. Pode-se considerar que há uma caixa envolvendo o arranjo.

• Cada reta intersecta a caixa duas vezes. Logo, as i – 1 retas dividem a caixa em 2(i – 1) arestas. Determina-se então onde li intersecta a caixa e quais dessas arestas são intersectadas. Isso determina qual a face do arranjo que li atravessa primeiro.

Page 16: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

16 2002 LCG/UFRJ. All rights reserved.

ComplexidadeComplexidade• Assim, pode-se pular de face em face do

arranjo por adjacência.▪ A aresta de saída de uma face é determinada

caminhando-se por todas as arestas da face no sentido anti-horário. Quando encontrada, basta pular para a face do outro lado da aresta.

• Nesse processo, são encontradas no máximo i – 1 retas que delimitam i faces (como sempre o arranjo é considerado simples).

• Pelo teorema da zona, cada face é limitada por no máximo O(i) arestas.▪ Logo, a complexidade total de pior caso é =

O(n2), que é o tamanho do arranjo e portanto assintoticamente ótima.

n

i

i1

Page 17: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

17 2002 LCG/UFRJ. All rights reserved.

Ordenando Seqüências AngularesOrdenando Seqüências Angulares• Seja um conjunto de n pontos do plano. Para

cada ponto deseja-se executar uma varredura angular, no sentido anti-horário, visitando todos os outros n – 1 pontos do conjunto.

x a

b

p* p1*

p4*

p5* p6

*p2

*

p3*

p7*

p8*

y

p4

p

p3

p1

p2

p5

p6

p7

p8

-

+

+

+ -

-

Page 18: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

18 2002 LCG/UFRJ. All rights reserved.

Ordenação AngularOrdenação Angular• Para cada ponto é possível determinar os

ângulos entre esse ponto e todos os demais n – 1 pontos e ordenar os ângulos.▪O(n log n) por ponto.▪Total de O(n2 log n).▪Com arranjos é possível O(n2).

• No plano primal, um ponto p = (px, py) e uma linha l: (y = ax – b) são mapeados em uma linha dual p* e um ponto dual l*.▪ l* = (a,b).▪p* : (b = pxa – py).

Page 19: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

19 2002 LCG/UFRJ. All rights reserved.

Ordenação AngularOrdenação Angular• Seja a reta dual p*e seus pontos de interseção

com cada reta dual pi*. Surge uma seqüência

de vértices no arranjo ao longo de p*.▪ A coordenada a de cada vértice no arranjo dual

é a inclinação de alguma reta ppi.▪ Da esquerda para a direita, os vértices ao longo

da reta p* estão ordenados por inclinação.▪ Dada a ordenação por inclinação, pode-se

testar quais pontos primais estão à esquerda de p (coordenada x menor) e separá-los dos pontos à direita de p.

▪ Concatene-se a seqüência ordenada direita com a seqüência ordenada esquerda.

▪ O resultado é uma seqüência angular ordenada de -90o a 270o.

Page 20: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

20 2002 LCG/UFRJ. All rights reserved.

3-Corredor 3-Corredor Mais EstreitoMais Estreito• Seja um conjunto de n pontos no plano e um

inteiro k, 1 k n. Deseja-se determinar o par de retas paralelas mais estreitas que contêm pelo menos k pontos do conjunto.▪Será usada a distância vertical ao invés da

perpendicular.▪Aqui k = 3, os pontos estão em posição geral,

e dois pontos não têm a mesma coordenada x.

p q

r

la

lbd

P*

q*

r*

lb*

la*

d

Page 21: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

21 2002 LCG/UFRJ. All rights reserved.

Corredor Mais EstreitoCorredor Mais Estreito• No espaço dual há um conjunto de n

retas.▪A inclinação de cada reta é a coordenada

x do ponto correspondente.▪O 3-corredor mais estreito no plano

primal são duas retas paralelas la e lb.

▪Seus duais são os pontos la* e lb

* de mesma coordenada x.

▪A distância vertical é a diferença dos deslocamentos y das duas retas primais.

▪A distância vertical do corredor é igual a distância vertical do segmento de reta.

Page 22: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

22 2002 LCG/UFRJ. All rights reserved.

Corredor Mais EstreitoCorredor Mais Estreito• No plano primal há 3 pontos no corredor acima

de lb e abaixo de la.

▪ Pela reversão da ordem, no plano dual há três retas duais que passam abaixo de lb

* e acima de la*

.• Esse problema é equivalente ao das linhas

cortantes mais curtas.▪ Dadas n linhas, determinar o segmento vertical

mais curto que corta três linhas do arranjo.▪ Uma das extremidades está sobre um vértice do

arranjo e a outra extremidade está sobre uma reta do arranjo.

▪ No problema do corredor uma das retas passa por dois pontos e a outra reta passa por um ponto.

Page 23: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

23 2002 LCG/UFRJ. All rights reserved.

Linha Cortante Mais CurtaLinha Cortante Mais Curta• A linha cortante mais curta pode ser

determinada por varredura, usando-se uma linha vertical.▪Sempre que se encontra um vértice do

arranjo calcula-se a distância às retas imediatamente acima e abaixo desse vértice.

▪O problema pode ser resolvido em tempo O(n2) e espaço O(n).

Page 24: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

24 2002 LCG/UFRJ. All rights reserved.

Caminhos Mais CurtosCaminhos Mais Curtos• Dados n obstáculos poligonais disjuntos

no plano e dois pontos s e t, determinar o caminho mais curto de s até t que evite o interior de todos os obstáculos.

• O complemento do interior dos obstáculos forma o espaço vazio.

• A métrica utilizada é a distância Euclidiana.▪Caminho mais curto é uma curva

poligonal.▪As arestas da curva poligonal mais curta

possuem vértices coincidentes com vértices dos obstáculos, s e t e não intersectam o interior dos obstáculos.

Page 25: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

25 2002 LCG/UFRJ. All rights reserved.

Grafo de VisibilidadeGrafo de Visibilidade• O grafo de visibilidade GV definido por s e

t e pelo conjunto dos obstáculos possui vértices coincidentes com s, t e com os vértices dos obstáculos.

• Existe uma aresta entre dois vértices do grafo se eles forem visíveis um ao outro ou se forem vértices de arestas dos obstáculos.

• O caminho mais curto pode ser descoberto a partir do grafo de visibilidade.

• O grafo de visibilidade não é planar e por isso pode possuir (n2) arestas.

Page 26: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

26 2002 LCG/UFRJ. All rights reserved.

Conjunto de ObstáculosConjunto de Obstáculos• Cada aresta do grafo de visibilidade é

etiquetada com o seu comprimento Euclidiano e o caminho mais curto pode ser encontrado pelo algoritmo de Dijkstra.

s

t

s

t

Page 27: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

27 2002 LCG/UFRJ. All rights reserved.

Computando GVComputando GV• O algoritmo dispara raios a partir de todos os

vértices com inclinação variando de - a +, no sentido anti-horário (varredura angular múltipla).

Page 28: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

28 2002 LCG/UFRJ. All rights reserved.

Computando GVComputando GV• Um evento significante ocorre sempre que

o tiro pula de uma aresta para outra. Isso acontece quando o ângulo atinge a inclinação da reta que liga dois vértices visíveis v e w.▪É complicado descobrir que vértices são

visíveis.▪Por isso ocorrem eventos em todos os

ângulos entre dois vértices, visíveis ou não.▪Por dualidade, a inclinação de um evento

corresponde a coordenada a da interseção das linhas v* e w*.

▪Assim, varrendo o arranjo todos os eventos são gerados.

Page 29: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

29 2002 LCG/UFRJ. All rights reserved.

Cenários dos EventosCenários dos Eventos• Há dois tiros emanando de cada vértice v: um

para frente, que atinge a reta f(v), e outro para trás, que atinge a reta t(v).▪ Se o tiro não atingir reta alguma usa-se um valor

nulo.▪ Se v e w são extremidades do mesmo segmento,

então são visíveis e a aresta (v, w) é adicionada ao grafo.

• Vértices não visíveis.▪ Determina-se se w está no mesmo lado de f(v) ou

t(v). Assuma-se f(v), pois o outro caso é simétrico.▪ Calcula-se o ponto de contato do tiro a partir de v

na direção com o segmento f(v). Se o choque com f(v) ocorrer estritamente antes de w, então descobriu-se que w não é visível de v (não é um evento).

Page 30: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

30 2002 LCG/UFRJ. All rights reserved.

Cenários dos EventosCenários dos Eventos• Segmento de entrada.

▪ Considere-se um segmento incidente em w. Ou a varredura está para entrar no segmento ou está acabando de deixá-lo. Se está entrando, o segmento é o novo f(v).

• Segmento de saída.▪ Se a linha de varredura está deixando o segmento, um novo

tiro deve ser dado para achar o próximo segmento intersectado.

▪ Como varre-se w ao mesmo tempo de v, sabe-se que o tiro de w atinge f(w). Basta então fazer f(v) = f(w).

v

wmesmo

segmento

v

w

invisível

f(v)v

wf(v) novo

entrada

f(v) velho

vw

f(v) velho

f(v) novo

saída

Page 31: 2002 LCG/UFRJ. All rights reserved. 1 Arranjos Claudio Esperança Paulo Roma

31 2002 LCG/UFRJ. All rights reserved.

ComplexidadeComplexidade• Fila de prioridade para eventos.• Ponteiros para f(v) e t(v) em cada

vértice.• Fila de prioridade está disponível no

arranjo de retas dos duais dos vértices dos segmentos.

• Com uma varredura topológica do arranjo, todos os eventos são processados em O(n2).▪Note-se que a varredura angular de

todos os vértices pode ser feita em O(n2).