• Nenhum resultado encontrado

Interval Trees, Priority Search Trees, Segment Trees. João Comba. Pesquisas intervalares sobre segmentos de reta

N/A
N/A
Protected

Academic year: 2021

Share "Interval Trees, Priority Search Trees, Segment Trees. João Comba. Pesquisas intervalares sobre segmentos de reta"

Copied!
18
0
0

Texto

(1)

Interval Trees,

Priority Search Trees,

Segment Trees

João Comba

Pesquisas intervalares sobre

segmentos de reta

(2)

Pesquisas intervalares sobre

segmentos de reta

Consultar uma coleção de segmentos de reta e reportar aqueles dentro de uma janela de busca

Interval Trees

Restringir a segmentos de reta ortogonais

aos eixos cartesianos

(x,y)

(x’,y’)

(3)

Interval Trees

Caso 1

: Se um dos pontos extremos pertence

ao interior da janela

Interval Trees

Caso 1

: Se um dos pontos extremos pertence

ao interior da janela

Reportar em O(log n + k) com uma estrutura que usa O(nlogn) de memória e tempo de processamento (Range Tree + Fractional Cascading)

(4)

Interval Trees

Caso 2

: Encontrar segmentos que não

possuem pontos extremos dentro da janela

Propriedade : Linhas ou (a) cruzam duas vezes a janela ou (b) contém uma aresta da janela

Teste suficiente : reportar todos segmentos que intersectam a aresta mais a esquerda e mais abaixo da janela

Interval Trees

Caso 2: Encontrar segmentos que não

possuem pontos extremos dentro da janela

OBS 1: Lidar com interseções com a aresta mais a esquerda (para a mais abaixo é feito de forma similar trocando os papéis de X e Y)

PROBLEMA: pré-processar um conjunto de segmentos de linha horizontais no plano de forma a reportar interseções com um segmento de linha vertical

OBS 2: Simplificar o problema para lidar com uma linha vertical ao invés de um segmento de reta (x,y) (x’,y) l formulado em dimensão menor x qx x’

(5)

Interval Tree

Sejam {[x

1

:x

1

’],[x

2

:x

2

’],...,[x

n

:x

n

’]}

intervalos fechados correspondentes

aos pontos extremos de n segmentos

de reta horizontais

Seja

x

mid

a mediana dos 2n pontos

extremos

Classificar os intervalos em 3

grupos:

Completamente a esquerda de xmid

Completamente a direita de xmid

Cruzando xmid

Construir árvore binária de

intervalos

xmid

Interval Tree

Problema: todos intervalos podem conter x

mid

evitar armazenar múltiplos intervalos

usar estrutura associada a cada nodo

contendo os intervalos cruzados pelo

(6)

Interval Tree

Problema: Mas se todos os intervalos são

armazenados em um mesmo nodo, não

voltamos ao problema original ?

Interval Tree

Problema: Mas se todos os intervalos são

armazenados em um mesmo nodo, não

voltamos ao problema original ?

xmid xmid

qx qx

Se qx < xmid, somente é necessário testar os pontos extremos esquerdos para

verificar se qx cruza o intervalo

Se qx > xmid, somente é necessário testar os pontos extremos direitos para verificar se qx cruza o intervalo

(7)

Interval Tree

Armazenar os intervalos associados ao nodo em 2 listas

ordenadas (para os pontos extremos esquerdos e direitos)

1 2 3 5 4 6 7 1, 2 1, 2 6, 7 7, 6 3, 4, 5 5, 3, 4

Interval Trees

Algoritmo BuscaIntervalTree(v, qx)

Entrada: Raiz v da interval tree, ponto de busca qx Saída: Todos intervalos contendo qx

1.

IF v não é folha

2.

THEN IF qx < xmid(v)

3.

THEN varre lista leftpoint(v), começando com o ponto extremo mais a esquerda, reportando todos

intervalos contendo qx e parando no primeiro intervalo que não contiver qx.

4.

BuscaIntervalTree(leftchild(v), qx)

5.

ELSE varre lista rightpoint(v), começando com o ponto extremo mais a direita, reportando todos

intervalos contendo qx e parando no primeiro intervalo que não contiver qx.

(8)

Interval Trees

Teorema: Uma

interval tree

para um

conjunto I de n intervalos usa

O(n)

de

memória, reporta todas interseções com

um ponto em

O(logn + k)

Removendo simplificação

Reportar interseções com segmento de reta

vertical no lugar de linha vertical

[-!;qx] x [qy:qy’]

PROBLEMA: Testar se os pontos extremos estão dentro da janela

! Usar uma 2D Range Tree com fractional cascading no lugar das listas ordenadas

(9)

Priority Search Trees

Estrutura adequada para responder buscas

[x,y]

!

[-!;qx] x [qy:qy’]

Baseado em Heaps:

árvores balanceadas

menor (ou maior armazenado no topo)

sub-árvores possuem nós com todos valores menores (ou maiores)

que o nodo

3 11 4 1 8 15 21 22 36 HEAP

Priority Search Trees

p5 p2 p1 p4 p6 p3

(10)

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

2. Analisar os pontos

restantes

(11)

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes 5. Criar nodo com o valor y

deste nodo p5

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes

5. Usar a mediana para criar dois conjuntos: acima e abaixo da mediana p5

(12)

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes

5. Usar a mediana para criar dois conjuntos: acima e abaixo da mediana 6. Repetir o processo na subárvore esquerda com os pontos abaixo da mediana p5

p3

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes

5. Usar a mediana para criar dois conjuntos: acima e abaixo da mediana 6. Repetir o processo na subárvore esquerda com os pontos abaixo da mediana p5

p4

p3

(13)

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes

5. Usar a mediana para criar dois conjuntos: acima e abaixo da mediana 6. Repetir o processo na subárvore esquerda com os pontos abaixo da mediana 7. Repetir o processo na subárvore direita com os pontos acima da mediana p5

p4

p3

p6 p1

Priority Search Trees

p5 p2 p1 p4 p6 p3

1. Encontrar ponto de menor coordenada x

3. Analisar os pontos restantes

4. Encontrar a mediana em y

dos pontos restantes

5. Usar a mediana para criar dois conjuntos: acima e abaixo da mediana 6. Repetir o processo na subárvore esquerda com os pontos abaixo da mediana 7. Repetir o processo na subárvore direita com os pontos acima da mediana p5 p4 p3 p6 p1 p2

(14)

Priority Search Trees: Busca

p5 p2 p1 p4 p6 p3 p5 p4 p3 p6 p1 p2 [-!;qx] x [qy:qy’] vsplit qy qy’

Segment Trees

(15)

Segment Trees

(16)

Segment Trees

p1 p2 pm-1 pm (-!:p1),[p1:p1],(p1:p2),[p2:p2], ... , (pm-1:pm),[pm:pm],(pm:+!)

Segment Trees

s1 s2 s5 s4 s3

(17)

Segment Trees

s5 s7 s6 s3 s1 s2 s4 S(v1)={s3} S(v3)={s4, s6} S(v3)={s1, s2} v1 v2 v3 v1 v2 v3

Segment Trees

Conjunto S de n segmentos (sem intersecões)

é armazenado numa segment-tree nos

intervalos em x dos segmentos

O subconjunto canônico de cada nodo que

contém os segmentos cortando a faixa é

(18)

Segment Trees

Teorema

: Seja S um conjunto de n segmentos

de reta no plano. Segmentos interceptando

uma janela retangular paralela aos eixos

pode ser reportado em

O(log

2

n + k)

com uma

estrutura de dados que usa

O(nlogn)

de

memória, construída em

O(nlogn).

Referências

Documentos relacionados

e) Respeitando o disposto na letra “d” e em caso o sinistro/emergência que venha ocorrer fora das duas (2) chamadas extras já inclusas no serviço, as demais

Professores do 3º Ciclo e do Ensino Secundário da Esc.. Ação e formador Área Destinatários Modalidade e nº horas Calendarização. APRENDIZAGEM ATIVA COM RECURSO ÀS TIC

Árvores de decisão (Decision Trees) Máquinas de Estado Finito (FSM) Funções de Utilidade. Árvores de Comportamento (Behavior Trees)

Em 2006, a Amsted-Maxion apresentou uma redução de 28,0% em sua receita operacional líquida em relação ao mesmo período do ano anterior, resultado da expressiva redução do

estabelece com o presente Edital regras e procedimentos de credenciamento para participação do processo seletivo das pessoas jurídicas como ENTIDADES PARTICIPANTES por meio do

Para cada objeto, identificar os outros objetos que estão a uma distância máxima “Eps”: Olog2N caso médio.. Portanto, na média:

Ainda para complementar o que os sujeitos mencionaram acerca do contato com os participantes da comissão e também quanto à determinação dos papéis os quais se incumbe, um

Todos os pontos da figura original são deslocados da mesma forma e todos os segmentos de reta que formam a figura original são transformados em segmentos de reta paralelos e com