Decomposição Trapezoidal - ppt carregar
PublicouLuca Martir Alterado mais de 4 anos atrás
Apresentação em tema: "Decomposição Trapezoidal"— Transcrição da apresentação:
1 Decomposição Trapezoidal
2 Localização no Plano Vimos a estrutura de Kirkpatrick que permite localização de pontos numa triangulação Consulta em tempo O(log n)  Construção em O(n log n)  Espaço O(n)  Não muito prática  Constantes altas Mapas trapezoidais são uma alternativa interessante para resolver o problema
3 Mapas Trapezoidais Mesmas complexidades de caso médio
Facilmente adaptada para tratar com subdivisões poligonais quaisquer Arestas dos polígonos são inseridas uma a uma Construção randomizada Independe da geometria ou da consulta Depende apenas da ordem de inserção das arestas Mais prática que a estrutura de Kirkpatrick
4 Mapas Trapezoidais É uma divisão do plano induzida por uma coleção de segmentos de reta Assume-se que não há segmentos verticais Segmentos não se interceptam a não ser em suas extremidades Lados esquerdo e direito de cada trapézio apóiam-se em extremidades dos segmentos Cada extremidade "atira uma bala" para cima e outra para baixo até encontrar outro segmento de reta Para evitar arestas infinitas, cria-se um retângulo contendo todas os segmentos
5 Mapas Trapezoidais
6 Conversão de mapas poligonais
Cada extremidade dispara 2 balas que irão atingir outros segmentos criando 2 novos vértices Cada vértice do mapa poligonal gera 3 vértice no mapa trapezoidal Se temos n segmentos de reta, o mapa trapezoidal terá no máximo 6n + 4 vértices (contando os 4 vértices do retângulo envolvente)
7 Conversão de mapas poligonais
Cada trapezóide é limitado à esquerda e à direita por alguma extremidade de algum segmento de reta original A extremidade esquerda de cada segmento limita a aresta esquerda de 2 trapézios (acima e abaixo) A extremidade direita de cada segmento limita a aresta esquerda de 1 trapézio (à direita do segmento) Portanto, cada segmento corresponde a 3 trapézios e teremos 3n + 1 trapézios no total O trapézio adicional é corresponde ao lado esquerdo do retângulo envolvente
8 Algumas observações Cada trapezóide é "definido" por 4 entidades
Segmento de cima Segmento de baixo Vértice da esquerda Vértice da direita
9 Construção Algoritmo de varredura Algoritmo de inserção randomizada
Semelhante ao algoritmo de rasterização de polígonos e ao algoritmo para detecção de interseções entre segmentos de retas Algoritmo de inserção randomizada Segmentos são embaralhados e inseridos um a um na estrutura Localiza-se em qual trapézio a extremidade esquerda do segmento cai Detecta-se quais "caminhos de bala" o segmento intersecta Dispara-se balas para cima e para baixo a partir das extremidades
11 Construção Para localizar o trapézio onde a extremidade cai utiliza-se uma estrutura de busca É neste aspecto que estamos interessados Veremos mais tarde que esta operação pode ser feita em O (log n) Para descobrir os trapézios intersectados pelo segmento e efetuar os disparos utiliza-se uma estrutura de dados própria para representar a topologia de subdivisões poligonais DCEL Half-edge etc
12 Atualização da Estrutura
Ignorando o aspecto da localização da extremidade esquerda, a inserção do pelo i'ésimo segmento tem complexidade O (ki), onde ki é o número de trapézios criados Um novo trapezóide é criado para cada "caminho de bala" intersectado Cada um dos 4 disparos pode levar à criação de um novo trapezóide Cada uma dessas operações pode ser feita em O (1) usando uma estrutura de dados adequada
13 Análise Lema: O valor esperado de ki é O (1)
Isto é, numa construção incremental randomizada, a inserção de um novo segmento no mapa gera na média um número constante de trapézios Como conseqüência, cada inserção tem complexidade O (1 + log n) = O (log n) O fator log n se refere à busca da extremidade esquerda do segmento A prova do lema é baseada na técnica de análise "para trás" (backward)
14 Prova do Lema Seja Ti o mapa trapezoidal logo após a inserção do i-ésimo segmento e Si o conjunto de todos os segmentos de reta que compõem Ti Para estimarmos o número médio de trapézios criados pela inserção do i-ésimo segmento, precisamos considerar todas as possíveis permutações dos i segmentos Cada segmento sSi tem probabilidade 1/i de ter sido o último inserido Se denotarmos por ki,s o número de trapézios criados no caso de s ter sido o último, então
15 Prova do Lema Vamos dizer que um trapézio t  Ti depende de um segmento s se t é criado em conseqüência de s ter sido inserido por último Definimos a função δ (t, s) como sendo 1 se t depende de s e 0 caso contrário. Então Portanto,
16 Prova do Lema A dificuldade reside em determinar quantos trapézios dependem de um dado segmento Alguns segmentos podem gerar muitos trapézios enquanto que outros, poucos Entretanto, se perguntarmos de quantos segmentos depende um trapézio, vemos que a resposta é no máximo 4 (Trapézios degenerados em triângulos dependem de apenas 3)
17 Prova do Lema Portanto, podemos inverter a ordem dos somatórios
18 Estrutura de Busca É um grafo acíclico direcionado
Parece com uma árvore binária, mas há compartilhamento de sub-árvores Nós-folha representam os trapezóides Nós internos de dois tipos Nós x representam coordenadas x de extremidades de segmentos de reta Os nós à esquerda/direita têm coordenadas x menores/maiores que a do ponto extremo Nós y contêm ponteiros para segmentos de reta Os nós à esquerda/direita representam regiões acima/abaixo do segmento Só visitamos um nó y se sabemos que o ponto procurado tem coordenada x entre as extremidades
19 Estrutura de Busca 2 s C D F G B A E 1 s p q 2 2 s q 1 p A B C D F E G
20 Construção da Estrutura de Busca
A estrutura de busca é construída de forma incremental em paralelo com o mapa poligonal Em qualquer dado instante a estrutura de busca pode ser usada para localizar um ponto no mapa poligonal A inserção de um novo segmento faz com que alguns trapezóides (folhas) sejam removidos e substituídos por outros Na estrutura, são alteradas apenas os lugares onde essas folhas existiam
21 Construção da Estrutura de Busca
p1 p 2 s q 1 p A B C D F E G 1 q1 q 1 q2 q A 2 s 1 s F C D E G B 2 G p2 p s 3 2 C E s 2 D F
22 Construção da Estrutura de Busca
p1 p 1 q1 q B 1 q2 K q q A 2 1 s p s 1 1 q3 1 q q B s I 2 3 3 p2 p s 3 p3 2 s p 3 A p s N N 3 3 3 L s p M H 2 s 2 M 3 s F s 3 2 q H J F 2 I J K L
23 Construção da Estrutura de Busca
Se o segmento inserido perpassa totalmente um trapezóide existente, O local correspondente é substituído por uma sub-árvore com um nó y apontando para os dois novos trapézios criados Se uma extremidade do novo segmento trapezóide existente Local substituído por um nó x referente à extremidade De um lado, coloca-se um nó y correspondente à separação dos trapézios acima / abaixo Do outro lado, coloca-se uma referência para o trapézio restante à esquerda / direita
24 Análise A estrutura tem complexidade esperada de espaço O (n)
Facilmente provado uma vez que sabemos que o número esperado de trapézios criados a cada inserção é O (1) A busca de um ponto tem complexidade esperada O (log n) Prova um pouco mais sutil Esses limites de complexidade média dependem apenas da ordem de inserção e não dos segmentos
25 Prova da complexidade de tempo
Normalmente a prova de complexidade média consistiria em analisar pontos de consulta escolhidos randomicamente Ao invés disso, vamos admitir apenas um ponto de consulta q e o efeito de todas as possíveis ordens de inserção dos segmentos Podemos pensar que q é escolhido por um "adversário" que tenta escolher o pior lugar possível mas não sabe em que ordem os segmentos serão inseridos
26 Prova da complexidade de tempo
A complexidade de uma consulta é dada pelo comprimento do caminho percorrido na estrutura de dados (número de nós) O caminho depende da ordem em que os segmentos foram inseridos Vamos analisar como q se move com respeito à estrutura à medida que cada novo segmento é inserido Vamos chamar de ti o trapezóide dentro do qual q se encontra após a inserção do i-ésimo segmento
27 Prova da complexidade de tempo
Se ti = ti – 1, então a inserção do i-ésimo segmento não afetou a estrutura nas imediações de q Tempo de consulta após a i-ésima inserção permanece inalterado Se ti ≠ ti – 1, então a inserção do i-ésimo segmento causou a remoção de ti – 1 No pior caso, ti – 1 foi substituído na estrutura por 4 novos trapézios, sendo ti um deles Caminho até ti fica 3 nós mais compridos
28 Prova da complexidade de tempo
si ti – 1 ti – 1 ti q
29 Prova da complexidade de tempo
si a b b ti q si ti
30 Prova da complexidade de tempo
Qual a probabilidade Pi de que o trapezóide em que q se encontra tenha mudado após a i-ésima inserção (isto é, de que ti ≠ ti – 1)? Observamos que ti é delimitado por 4 segmentos A probabilidade de um segmento ter sido o i-ésimo a ser inserido é 1/i Conseqüentemente, Pi = 4/i O comprimento do caminho desde a raiz até ti é portanto
31 Um resultado mais forte
Embora o tempo de busca médio seja O (log n), é possível haver caminhos com comprimentos longos Consultas repetidas nesses caminhos podem comprometer o desempenho da estrutura Existe um resultado mais forte a respeito da altura da estrutura Lema é provado no livro
32 Um resultado mais forte
Lema: Dado um conjunto disjunto de n segmentos de reta e um parâmetro λ>0, a probabilidade de que a estrutura tenha altura maior que 3 λ ln (n+1) é de no máximo 2 / (n + 1) λ ln 1.25 – 3 Por exemplo, para λ = 20, a probabilidade de que a altura da estrutura seja maior que 60 ln (n + 1) é de aproximadamente 2 / (n + 1)1.25
33 Garantindo busca logarítmica no pior caso
O lema diz que, à medida que n aumenta, a probabilidade de que a altura máxima seja não logarítmica aumenta ainda mais rápido Isto sugere que podemos tentar construir a estrutura várias vezes (com permutações randômicas de inserção) até termos uma estrutura com altura aceitável O número esperado de tentativas varia com a meta que estipulamos Para uma meta de altura suficientemente grande, a probabilidade de a alcançarmos será constante