You are on page 1of 125

Estruturas de Dados

Espaciais

Processamento Geomtrico
Bancos de Dados Espaciais
Sistemas de Informaes
Geogrficos (GIS)

Claudio Esperana

Objetivos do Curso

O Estruturas de dados para armazenamento, busca e


O
O
O
O

ordenao de dados espaciais


Algoritmos geomtricos fundamentais
Arquitetura de bancos de dados espaciais
Integrao com bancos de dados convencionais
Processamento de consultas (queries) envolvendo
dados espaciais e no-espaciais

Dados Espaciais x Dados Escalares

O
O
O
O
O

Multidimensionais x Unidimensionais
Noo de Forma x pontos ou tuplas
Ordenao parcial x Ordenao total
Relaes geomtricas x Relaes sobre grandeza
Frequentemente, os dois tipos so combinados em:
Sistemas de Informao Geogrficos
CAD
Computao Grfica

Espao de dados

O Qualquer tipo de dado supe um espao onde ele


O
O
O

est imerso
Modelagem de dados requer que se escolha um
espao apropriado
Frequentemente, mais de uma opo possvel
Exemplo: Cidade
Espao de cadeias de caracteres
Cdigo numrico (ex. CEP)
Ponto do planisfrio (Latitude e Longitude)
Conjunto de pontos (ex. delimitado por um
polgono)
Cada espao mais conveniente para um ou outro
tipo de processamento

Dimenso

O Qual a dimenso do espao de cidades?


Como cadeia de caracteres: 1 (existe um
mapeamento 1 para 1 entre o conjunto de
cadeias e o conjunto dos numeros inteiros)
Como ponto no planisfrio: 2
Como conjunto de pontos delimitado por um
polgono: 2
O Qual a dimenso do dado cidade?
Como cadeia de caracteres: 0
Como ponto no planisfrio: 0
Como conjunto de pontos delimitado por um
polgono: 2

Dimenso (cont.)

O Dados escalares (no espaciais) so modelados


como pontos em um espao unidimensional
O Dados espaciais so modelados como pontos ou
conjuntos de pontos em espao multidimensional
O Entre os dois: Conjuntos de pontos em espao
unidimensional (ex., intervalos, sries temporais)

Relaes entre dado e espao

O Localizao
Existe uma cidade chamada So Paulo ?
o
o
Existe uma cidade em 39 2930 S, 65 5020
W?
O Vizinhana
Qual a cidade com nome subsequente a So
Paulo?
Qual a cidade mais prxima de So Paulo?
O Noo de mtrica
O Extenso (Dados Espaciais)
Qual o permetro de So Paulo?
Qual a rea de So Paulo?

Uso de ordenao

O Dados escalares
possvel estabelecer uma ordem total
Ordenao facilita operaes de localizao e
vizinhana
O Dados espaciais
impossvel estabelecer uma ordem total sem
romper com relaes de vizinhana
A imposio de uma ordem total conhecida
como linearizao do espao.Exemplo: ordenar
um conjunto de pontos lexicograficamente
Ordenao parcial, no entanto, pode facilitar
diversas operaes
O Estruturas de dados espelham ordenao

Estruturas de dados para dados escalares

O Visam essencialmente facilitar operaes de


localizao e de vizinhana
O Exemplos:
Tabelas organizadas por clculo de endereo
(Hash Tables)
O Usadas em localizao de dados
Caso mdio: O(1)
Pior caso: O(n)
O Podem ser baseadas em memria ou disco
rvores binrias balanceadas
O Localizao de dados: O(log n)
O Vizinhana: O(log n)
O Primariamente baseadas em memria
principal

Estruturas de dados para dados escalares (cont.)

O rvores B e suas variantes


Localizao de dados: O(log n)
Vizinhana: O(log n)
Otimizadas para utilizao em memria
secundria (disco)
Asseguram alta taxa de utilizao
(garantidamente > 50%)

Idia geral de estruturas de dados espaciais

O Precisam suportar grande nmero de operaes


O No existe estrutura de dados espacial que
garantidamente seja eficiente para atender todos os
tipos de operarao
O Aplicaes em bancos de dados espaciais / GIS:
Utiliza-se estruturas de dados gerais que tm
eficiencia razovel no caso mdio. Ex.: PMRquadtrees, Grid files, R-trees e suas variantes
O Aplicaes em CAD, Computao grfica:
Frequentemente estruturas de dados gerais do
bons resultados
Em casos especificos, estruturas de dados
especializadas podem ser indicadas.: Ex.:
Diagramas de Voronoi

Representao de dados geomtricos 2D

O Valores escalares
Inteiros de preciso fixa
O representao exata
O problema de discretizao (quantizao)
Inteiros de preciso varivel
O utilizam alocao dinmica de memria
O manipulao atravs de biblioteca (lento)
Ponto flutuante (simples / dupla preciso)
O representao inexata de nmeros reais
O sujeitos a problemas de preciso
Nmeros racionais (frao)
O Fraes (espao = 2 inteiros de preciso
fixa/varivel)
O Manipulao atravs de biblioteca
O Problema de unicidade (infinidade de
fraes c/ mesmo valor)

Representao de dados geomtricos 2D (cont.)

O Pontos e vetores
2 valores escalares
No confundir os dois
O Ponto denota posio
O Vetor denota deslocamento
O Usar programao geomtrica
P1
V
P2
V
P3

P1 + V = P2
P2 - P1 = V
P1 + 2V = P3

Representao de dados geomtricos 2D (cont.)

O Retas
Representao implcita
O ax+by+c=0
O 3 valores escalares
O possvel substituir 1 valor por um flag,
mas complica a representao
Representao paramtrica
O (x,y) = P + t V
O t o parmetro que permite caminhar
sobre a reta
O 4 valores escalares
O possvel substituir V por um ngulo, mas
complica a representao
Converso entre representaes
O Exerccio

Representao de dados geomtricos 2D (cont.)

O Segmentos de reta
Dois pontos (extremidades)
Representao paramtrica
O Assumir intervalo t = [0,1]
O Retngulos alinhados com os eixos coordenados
Usados extensivamente em estruturas de dados
espaciais
O Parties do espao
O Caixas Limitantes (bounding boxes)
Pontos extremos (min_x, min_y) (max_x,
max_y)
O max_x >= min_x e max_y >= min_y
Ponto mnimo e vetor extenso (min_x,
min_y)(tam_x,tam_y)
O tam_x e tam_y >= 0

Representao de dados geomtricos 2D (cont.)

O Polgonos
Usados para aproximar regies
Podem ser simples ou complexos
O Simples: topologicamente homeomorfos a
um disco
O Complexos: Podem possuir auto-intersees
e buracos

Simples

Auto-interseo

Buraco

Representao de dados geomtricos 2D (cont.)

O Polgonos (cont)
Lista de vrtices (pontos)
O Muitos algoritmos requerem uma circulao
predeterminada (sentido horrio ou antihorrio)
O Importante garantir (implicita ou
explicitamente) que primeiro vrtice =
ltimo vrtice

v3
v2
v4

v5

v1=v7
(sentido horrio)

v6

Representao de dados geomtricos 2D (cont.)

O Polgonos (cont.)
Polgonos complexos podem ser representados
por listas de vrtices inserindo-se novos vrtices
e/ou arestas
v3

v4

v2=v5

v6
v1=v7

v9

v2=v8
v6
v5

v3=v7
v4
v1=v11

v10

Representao de dados geomtricos 2D (cont.)

O Polgonos (cont.)
Triangulao
O Conjunto de tringulos que se interceptam
apenas segundo arestas e cuja unio
idntica ao polgono
O Poligono c/ N vrtices = N-2 tringulos
O Facilita uma srie de algoritmos
O Polgono pode ser triangulado em O(N)

v2

v5
v4
v3=v10

v6
v8
v7

v1=v9

Operaes com dados geomtricos

O Sejam A e B dois dados geomtricos (ex.: ponto,


segmento de reta, polgono, etc)
O Predicados (A B boolean)
intercepta(A,B): se A e B tm ao menos um
ponto em comum
A B

contm(A,B): se A contm B
A B

adjacente(A,B): se a fronteira de A e a fronteira


de B tm algum ponto em comum, mas o
interior de A e B no se interceptam (A e B tm
que ser conjuntos compactos de dimenso >= 2)
A B A B A B
prximo(A,B,d): se a distncia entre A e B
maior que d
( A, B ) d

Operaes com dados geomtricos (cont.)

O distncia(A,B) ou (,)
depende de uma mtrica (a,b)
( A, B ) =

min

a A,b B

(a , b)

Uma mtrica uma funo que mapeia pares de


pontos em nmeros positivos com as
propriedades:
O (a,b) =0 se e somente se a=b
O (a,b) = (b,a)
O (a,c) (a,b)+ (b,c)
mtricas mais empregadas:
O Euclideana:

E ( a , b) =

(a x b x ) + (a y b y )
2

O Valor absoluto (ou Manhattan)

( a , b ) = |a x b x | + |a y b y |

O Valor mximo (ou Tabuleiro de Xadrez)

( a , b ) = max |a x b x | , |a y b y |

Operaes envolvendo dados geomtricos

O distncia(A,B) (cont.)
lugar geomtrico de todos os pontos mesma
distncia de um dado ponto p caracterstica da
mtrica

Manhattan

Euclideana
p

Tabuleiro
de Xadrez

Operaes com dados geomtricos (cont.)

O Propriedades integrais
Permetro (comprimento da borda)
rea
Volume (3D)
Centro de massa (Centride)
O Operaes morfolgicas
Dilatao
Contrao
O Operaes booleanas
Unio
Interseo
Diferena

Caixas Limitantes

O Caixas limitantes (bounding boxes) servem como


estimativas do lugar geomtrico de dados espaciais
O Certas operaes podem ser aceleradas atravs de
testes preliminares com caixas limitantes
O O tipo mais comum de caixa limitante o retngulo
com lados alinhados com os eixos coordenados (MBR - Minimum Bounding Rectangle)
O Dado um conjunto A, MBR(A) um retngulo
definido por seus dois vrtices extremos, min e
max, tal que, para todo eixo coordenado x
minx= mina(ax)
maxx= maxa(ax)
MBR(A)

Propriedades de caixas limitantes

O Interseo
A B MBR(A) MBR(B)
MBR(A) MBR(B)= A B =
A MBR(B)= A B =
A B MBR(A) MBR(B)
A B A MBR(B)
O Distncia
(,) (MBR(A), MBR(B))
(,)
min aF(MBR(A)), bF(MBR(B)) { max(a,b) },
onde F(MBR(A)) e F(MBR(B)) so faces das
caixas limitantes de A e de B e max (S,T) a
distncia mxima entre os conjuntos S e T:
max (S,T) = max sS,tT { (s,t) }
(propriedade ligada ao fato que toda face de
uma caixa limitante contm ao menos um ponto
do conjunto limitado)

Implementando predicados de interseo

O Regras gerais
Usar testes preliminares contra caixas limitantes
se esses testes forem mais simples do que os
testes de interseo propriamente ditos (ex.
testes entre polgonos)
Procurar discernir entre interseo com o
interior e interseo com a fronteira (predicado
toca(A,B))
Usar classificao de ponto contra semi-espaos
para diagnstico precoce de no-interseo
Usar aritmtica inteira sempre que possvel
Usar estruturas de dados complicadas apenas
como ltimo recurso

Testes de interseo com Pontos

O Ponto
P Q P x = Qx P y = Qy
O Reta
Seja L dado por a . x + b . y + c = 0
P L a . Px + b . Py + c = 0
O Segmento de Reta
Testar P contra a reta de suporte
Seja S dado parametricamente por Q + tV,
onde 0 t 1
Calcular tx ou ty , correspondentes interseo
do segmento com as retas x = Px ou y = Py
tx ou ty ? Escolher baseado no maior entre Vx e
Vy
O Retngulo alinhado c/ eixos
Seja R dado por seus pontos mnimo e mximo
P R Px minx Px maxx
Py miny Py maxy
Para teste contra o interior de R, substituir
por > e por <

Testes de interseo com Pontos (cont.)

O Polgono convexo
Seja G dado por uma lista de vrtices
g1, g2, gN enumerados segundo uma
circulao horria da fronteira de G
Seja a linha de suporte da aresta gi-gi+1 dada por
ai . x + bi . y + ci = 0, de tal forma que para
todos os pontos Q do interior do polgono
a i . Q x + b i . Q y + ci > 0
P R i=1N, ai . Px + bi . Py + ci 0

Testes de interseo com Pontos (cont.)

O Polgono qualquer
Teste da soma de ngulos
O A soma dos angulos formados entre P e
dois vrtices consecutivos gi e gi+1 de G
deve ser de 360

6
5

1
4

2
3

ngulos tomados no mesmo sentido (sentido contrrio)


da circulao do polgono so positivos (negativos)

Testes de interseo com Pontos (cont.)

O Polgono qualquer (cont.)


Teste de paridade
O Reta que atravessa o polgono entra/sai
um nmero par de vezes
O Semi-reta ancorada em P sai vez mais do
que entra

Testes de interseo com Segmentos de reta

O Seja S um segmento de reta


O Interseo com outro segmento de reta T
Computar o ponto de interseo P entre as retas
de suporte de S e T
O forma implcita ax+by+c=0 normalizada de
tal forma que o primeiro coeficiente nao
nulo seja igual a 1
O Se as retas tm a e b idntico, so paralelas
(S e T no se interceptam)
O Se as retas tm a, b e c idnticos, so
coincidentes (S e T se interceptam se e
somente se MBR(S) e MBT(T) se
interceptam)
Testar interseo de P com S e T

Testes de interseo com Segmentos de reta

O Retngulo R alinhado com eixos coordenados


Sejam A e B os dois pontos extremos de S
Classificar A e B para determinar em qual das 9
regies relativas a R eles se encontram:
1

A 0 1 2
B
0
1
2
3
4
5
6
7
8

5 6

7 8
SR=
SR

Testes de interseo com Segmentos de reta


(cont)
Se a classificao das extremidades de S com
relao a R for insuficiente para determinar se S
intercepta R, testar a interseo de S com cada
face de R
O Polgono
Testar S com cada aresta do polgono G
Se S no intercepta a fronteira de G, ento S
intercepta G se e somente se algum ponto de S
est dentro de G
O Teste de interseo de uma das
extremidades de S contra G

Testes de interseo com Retngulos

O Teste de R contra outro retngulo Q


R intercepta Q se e somente se as projees de
R e Q em ambos os eixos coordenados se
interceptam
O max {minRx, minQx } min {maxRx, maxQx }
O max {minRy, minQy } min {maxRy, maxQy }
O Teste de R contra polgono G
Testar todas as arestas de G contra R
Se a fronteira de G no intercepta R, ento h
duas hipteses
O R est contido em G
O R no intercepta G
Testar um ponto de R contra G

Teste de interseo entre dois polgonos

O Algoritmo ingnuo tem pssimo desempenho,


pois envolve testar cada aresta de um polgono (G)
contra todas as arestas do outro polgono (H)
O (|G| . |H|)
O Representaes alternativas para polgonos podem
facilitar a tarefa
Exemplo: Triangulaes
Exemplo: BSP-trees
O Algoritmos mais eficientes so conhecidos na
literatura de Geometria Computacional
Exemplo: Algoritmo de varredura

Mtodos de decomposio do espao

O Visam lidar com a complexidade de distribuies


O
O

espaciais dividindo o espao em subregies. Cada


subregio menos complexa que o todo
Contraposio com mtodos de decomposio ou
agrupamento de objetos com base na proximidade
entre esses objetos
Classificao quanto a hierarquia
Metodos hierrquicos (Quadtrees, k-d-trees)
Mtodos no hierrquicos (grades regulares,
Grid File, EXCELL)
Classificao quanto ao posicionamento das
subdivises
Regular (diviso do espao em partes iguais):
bintrees, quadtrees de regio,
No regular ou adaptativos (diviso no
necessariamente resulta em subdivises
idnticas): k-d trees, quadtrees de pontos, BSPtrees
Classificao quanto a forma das subdivises
Quadrilteros alinhados com os eixos
(quadtrees, bintrees, k-d trees)
Polgonos convexos quaisquer (BSP-trees)

Quadtrees de regio

O Utilizado inicialmente para imagens binrias (preto


O
O
O
O

e branco)
Assume uma imagem quadrada de lado igual a uma
potncia de 2 (2n 2n)
Cada diviso de um quadrado 2i 2i resulta em 4
quadrados 2i-1 2i-1
Critrio de subdiviso: dividir enquanto subregio
contiver pixels brancos e pretos; no subdividir se
subregio for uniformemente preta ou branca
Ns folha so rotulados brancos e pretos; ns
internos so chamados de cinza

Quadtrees de Regio (cont.)

NW

NE

SW

SE

Propriedades da Quadtree de Regio

O Espao de armazenamento:
Se numa rvore completa h K ns-folha, h
um total de
K + K/4 + K/16 + = floor (4 K / 3)
O resultado vale para qualquer rvore com K
ns folha
Pior caso (mximo nmero de ns-folha):
Imagem tipo tabuleiro de xadrez (todos os
quadrantes tm que ser divididos at o nvel de
pixel)

Propriedades da Quadtree de Regio (cont.)

O Espao de armazenamento (cont):


Overhead dos ns internos pode ser aliviado
usando representaes sem ponteiros
O Usar uma lista onde ns so enumerados em
ordem de visita (ex. pos-ordem
NW,NE,SW,SE)
O Usar uma lista de cdigos posicionais das
folhas pretas
Cada n representado por uma
sequncia de dgitos em base 4
acompanhados por um indicador do
nvel do n na rvore.
Espao depende da posio dos pixels pretos
dentro do sistema de referncia da quadtree
O Transladando uma mesma imagem pode-se
obter mais ou menos blocos
Espao linearmente proporcional resoluo
(n) e ao permetro da imagem (p)
#Blocos 24 . n - 19 + 24 . p

Propriedades da Quadtree de Regio

O Complexidade de algoritmos
Localizao de ponto (Cor de um pixel):
O(log n)
Converso de imagem matricial: O (n)
Vizinhana: O(log n)

Converso de Raster em Quadtree de Regio

O Algoritmo ingnuo
Criar uma quadtree trivial (imagem com todos
os pixels brancos)
Rotina PintaPixel:
O Dada a posio (x,y) de um pixel da
imagem e sua cor (c), modificar a quadtree
para refletir a mudana
Chamar a rotina PintaPixel para todos os
pixels da imagem
Independente da ordem em que os pixels so
pintados
Complexidade
O Para imagem n n: O(n2 log n)
O Subrvores podem ser criadas para ser logo
depois deletadas
O Desejvel: O(n2)

Converso de Raster em Quadtree de Regio


(cont.)

O Rotina PintaPixel (detalhes)


Descer na rvore at localizar o n-folha
correspondente ao pixel
Se o n-folha tem cor igual ao pixel, no faa
nada
Caso o n-folha seja de tamanho 1x1 (pixel),
troque sua cor
Caso o n-folha corresponda a mais de 1 pixel,
subdivida-o at o nvel de pixel, localize o nfolha correspondente ao pixel a ser pintado e
troque sua cor.
Subir do n-folha raiz juntando (merging)
sempre que necessrio, isto , se os trs irmos
do n folha tm agora a mesma cor c

Converso de Raster em Quadtree de Regio


(cont.)

O Assumir que toda a imagem cabe na memria


principal
O Algoritmo timo pode criar um n da quadtree
apenas se este for necessrio
O caso de quatro ns-folha irmos com a
mesma cor pode ser eliminado se os pixels da
imagem forem consultados
O Rotina ConstriN
Recebe como parmetro o conjunto de pixels
correspondente regio do n
Se uma regio 1x1, retornar a cor do pixel
Se uma regio contendo mais de um pixel,
chamar ConstriN recursivamente para as 4
subregies
O Se todas as 4 subregies so da mesma cor
c (no cinza) retornar c
O Seno
Construir os ns-folha (filhos)
Construir o n cinza (pai)
Retornar cinza

Converso de Raster em Quadtree de Regio


(cont.)

O Detalhes de implementao
Se a imagem no um quadrado cujo lado
uma potncia de 2,
O Assumir a menor potncia de 2 que contm
a imagem
O Ao acessar um pixel fora da imagem,
assumir cor branca
Ao criar uma representao quadtree com
ponteiros em memria
O no necessrio criar tantos ns brancos e
pretos quantos sejam o nmero de pixels da
imagem, bastam um n branco e um n
preto
O O valor de retorno de ConstroiN um
ponteiro
O ConstriN s constroi ns cinza
O Complexidade
ConstroiNo chamado apenas uma vez por n
O(n2)

Representao sem ponteiros de quadtrees

O Somente os ns folha so representados


O Cada n-folha representado por um nmero em
base 4 (P) e um indicador de altura na rvore (h).
Indicam o caminho desde a raiz at a folha
P=<pn , pn-1 , ... , p1 >, onde apenas os h
primeiros dgitos (da esquerda para a direita)
so significativos
O Se a imagem binria (branco e preto), ns brancos
no precisam ser representados
O Representao apropriada para armazenamento em
disco
Usar uma estrutura para acesso sequencial
indexado (e.g., B-tree)
Ordem das chaves definida por P
No h necessidade de testar h
O Um n preto no pode ser pai de outro
Ordem corresponde curva Z que passa por
todos os ns pretos da quadtree

Quadtree de pontos

O Propriedades gerais
Extenso multidimensional da rvore de busca
binria
Pontos so armazenados em ns internos
Depende da ordem de insero dos pontos
Para N pontos inseridos segundo uma
distribuio randmica uniforme, a altura
esperada da rvore O(log N)
Estrutura prpria para armazenamento em
memria
O Insero de pontos
Algoritmo ingnuo: Semelhante insero
em rvores binrias
Problema de balanceamento: Assegurar altura
logaritmica
Se os pontos so conhecidos de antemo,
orden-los segundo x ou y e escolher as
medianas como razes das subrvores

Quadtrees de pontos (cont.)

O Insero de pontos (cont.)


Verso dinmica de insero balanceada
O rebalancear a rvore sempre que um
critrio de balanceamento falhar
O utiliza a idia do balanceamento esttico
apenas na subrvore que infringiu o critrio
O Deleo de pontos
Idia do algoritmo anlogo em rvores binrias
no pode ser usada: nem sempre existem nsfolha que podem substituir o n sendo deletado
Soluo ingnua: reinserir todos os pontos da
subrvore cuja raiz o n deletado
Soluo melhorada: descobrir um bom nfolha candidato e reinserir apenas os ns que
tornariam a quadtree invlida
ponto
substituto

ponto
deletado

pontos nessa regio


sero reinseridos

Quadtrees de pontos (cont.)

O Deleo de pontos (cont.)


A escolha do ponto substituto
O 4 candidatos naturais (1 em cada quadrante)
O Para achar o candidato do quadrante NW de
P, caminhar sempre para SE do filho NW
de P
O Para escolher Q, o melhor dos 4 candidatos:
Critrio 1: escolhendo Q nenhum dos
outros 3 candidatos precisariam ser
reinseridos
Critrio 2: Q minimiza a rea
sombreada (mtrica Manhattan entre P
e Q). Neste caso, no mximo 1 outro
candidato estaria na rea sombreada
Problema de deleo pode ser aliviado com o
uso de uma pseudo-quadtree
O Pontos so armazenados nas folhas
O Ns internos so pontos que no fazem
parte da massa de dados

Quadtrees de Pontos (cont.)

O Busca
Estrutura apropriada para consultas
envolvendo proximidade
Exemplo: todos os pontos que intersectam um
retngulo R
O As subrvores c/ raiz em filhos de P a
serem pesquisadas dependem da posio de
P com relao a R:
NW

NW e
NE

NW e
SW

todas

SW

SW e
SE

NE
NE e
SE
SE

Exerccio: Como realizar a busca do ponto mais


prximo de um dado ponto de consulta Q?

K-D trees

O Propriedades gerais
K refere-se dimenso do espao de pontos
Cada ponto inserido corta o espao em duas
subregies segundo um hiperplano
perpendicular ao isimo eixo coordenado
(discriminante)
O eixo discriminante varia alternadamente
medida que se desce na rvore (x, y, x, y, etc)
Cada n s necessita de k valores para as as
coordenadas do ponto e mais dois ponteiros
para as subrvores. No necessrio armazenar
o discriminante
Tem caractersticas semelhantes quadtree de
pontos
O Apenas uma comparao necessria para
cada n da rvore
O Desvantajoso em arquiteturas paralelas
(pode-se testar K valores simultaneamente)

K-D trees (cont.)

O Insero de pontos
Algoritmo ingnuo anlogo ao das rvores de
busca binria e ao das quadtrees de pontos
Problema de balanceamento tambm
solucionado de forma anloga
K-D tree adaptativa anloga pseudoquadtree de pontos (massa de dados esttica)
O Pontos so guardados nas folhas
O Ns internos correspondem a hiperplanos
que divide os pontos em subconjuntos de
cardinalidade aproximadamente igual
O Ns internos ocupam espao invariante em
relao a K
O Relaxa-se a alternncia de discriminantes
em favor de uma melhor distribuio
espacial entre os pontos
ex.: escolhe-se o hiperplano
perpendicular ao eixo de maior
dimenso do MBR de todos os pontos

K-D trees (cont.)

O Deleo de pontos
Semelhante deleo em rvores binrias
Se o discriminante do n P a ser deletado x,
devemos substituir P pelo n Q direita de P
tal que Qx mnimo e, finalmente, deletar P
Porque no o n Q esquerda de P com valor
mximo Qx ? Pode haver mais de um, e a
conveno que ns esquerda de P tm
valores estritamente menores que Px
Se a subrvore direita de P vazia, escolhe-se
o n Q esquerda de P com Qx mnimo, trocase P por Q com a subrvore esquerda de P
agora posicionada direita de Q e deleta-se Q
de sua antiga posio recursivamente
P

K-D trees (cont.)

O Deleo de pontos (cont.)


Cuidado na busca de um ponto substituto: ele
pode estar somente em um dos ramos de uma
subrvore se o discriminante desta for x, mas
pode estar em qualquer ramo se o discriminante
for y
Complexidade de buscar um substituto:
O(N1-1/K)
O Busca
Algoritmos semelhantes quadtree de pontos
Range search tem complexidade O(K . N1-1/K)
(no bvio)
O Anlise no leva em conta o custo de
reportar cada ponto, mas apenas o custo de
descer nas subrvores que no esto
inteiramente contidas na regio sendo
buscada

Range Trees

O Visam solucionar em tempo timo o problema de


busca de pontos incluidos num intervalo Ndimensional (Um retngulo em 2-D)
O Uma Range Tree em 1-D simplesmente uma
rvore binria balanceada com os pontos
armazenados nas folhas e encadeados entre si
formando uma lista
60

35

85

50

25

25

35

80

50

60

90

80

85

90

Range Trees (cont.)

O Uma Range Tree em 2D uma Range tree de


Range trees. Cada n interno da RT para (x) contm
uma subrvore que uma RT para (y)

60
HDGBCAFE

35

85
DBCA

HGFE

50

25

80

BA

5,45

25,35

90

DC

C
35,40

D
50,10

F E

E
60,75

F
80,65

HG

G
85,15

H
90,5

Range Trees (cont)

O Algoritmo p/ busca de um intervalo [Lx , Rx][Ly , Ry]


Buscar Na RT (x)
O LXP: o menor n c/ x Lx
O RXP: o maior n c/ x Rx
Se LXP e/ou RXP esto no intervalo, reportar
Encontrar Q, o ancestral comum mais prximo
PATH_LXP o conjunto de ns internos desde
Q (exclusive) at LXP
Analogamente para PATH_RXP
Para todo n P em PATH_LXP tal que
LEFT(P) tambm est em PATH_LXP
O Buscar na RT(y) de RIGHT(P) os ns cujos
y esto no intervalo [Ly , Ry] e reportar
Para todo n P em PATH_RXP tal que
RIGHT(P) tambm est em PATH_RXP
O Buscar na RT(y) de LEFT(P) os ns cujos y
esto no intervalo [Ly , Ry] e reportar

Range Tree (cont.)

O Subrvores RT(y) pesquisadas para um dado


intervalo [Lx,Rx],[Ly,Ry]

Lx

Rx

Priority Search Tree

O Semelhante rvore de busca normal em 1D,


exceto que cada n interno tambm armazena um
ponteiro p/ n folha c/ valor mximo de y entre seus
descendentes, desde que esse valor no tenha
aparecido em um de seus ascendentes
O Prpria para buscas em intervalos [Lx , Rx][Ly , )
E
(75)

60

35
B
25

5,45

25,35

85
C

50

(35)

A
(45)

C
35,40

(40)

D
50,10

(65)

80

E
60,75

()

F
80,65

90

G
85,15

(15)

H
90,5

Priority Search Tree

O Algoritmo de busca p/ intervalo semi-infinito

[Lx , Rx][Ly , )
Descer na rvore buscando Q, ancestral comum
mais prximo de LXP e RXP
O Seja P o n folha associado com o n sendo
examinado (T)
O Terminar se Py< Ly pois no h
descendentes de T com y > Ly
O Terminar se P nulo, pois subrvore j foi
toda examinada e/ou reportada
O Caso contrrio, reporte P se Px contido no
intervalo [Lx , Rx]
Uma vez encontrado Q, determine
recursivamente onde continuar a busca
O RIGHT(T) se T e RIGHT(T) no caminho
direita de Q at LXP
O LEFT(T) se T e LEFT(T) no caminho
esquerda de Q at RXP
O Seno, em ambos RIGHT(T) e LEFT(T)
O (log2 N + F) tempo para buscar N itens e F
respostas

Quadtree de Regio e mtodos afim

O Dividem o espao em regies previamente


preestabelecidas e no estabelecidas por pontos
previamente inseridos la Point Quadtree
O Variantes:
MX-Quadtree:
O Diviso tipo quadtree de regio
O Assume domnio discreto (coordenadas
inteiras entre 0 e 2n) e pontos distintos
O Pontos so sempre armazenados em nsfolha de nvel mais baixo possvel
O No h ns brancos, apenas cinzas e ns
folha contendo pontos
O Insero pode requerer at n subdivises
O Collapsing acontece apenas em
quadrantes de onde foi deletado o ltimo
ponto
O Boa para matrizes esparsas
O Ruim quando o domnio est muito
populado por pontos (um grid melhor)

Quadtrees de regio e mtodos afim (cont.)

O Exemplo: Algoritmo para achar a transposta de uma


MX-quadtree:
Transpose (MX)
O If MX n folha, retornar
O Trocar ponteiro NE com ponteiro SW
O Transpose (filho NW)
O Transpose (filho NE)
O Transpose (filho SW)
O Transpose (filho SE)

Quadtree de Regio e mtodos afim (cont.)

O Variantes (cont.)
PR-quadtree
O Idntica Region quadtree exceto que no
h ns brancos e ns pretos correspondem a
pontos
O Subdiviso ocorre sempre que mais de um
ponto aparece num mesmo quadrante
PR-bintree (tambm chamada PR-k-d-tree)
O Semelhante a PR-quadtree, mas diviso
ocorre de forma binria alternando entre os
eixos
BD-tree (ou BANG file)
O PR-quadtree onde ns cinza com apenas um
filho so comprimidos
O Semelhantemente, uma BD-k-d tree usa
compresso em uma PR-bintree (PR-k-dtree)

Quadtree de Regio e mtodos afim (cont.)

O Exemplo: PR-bintree (PR-k-d-tree)

Quadtree de regio e mtodos afim (cont.)

O BD-bintree (BD-k-d-tree)

Quadtree de regio e mtodos afim (cont.)

O Usando compresso de caminho, as regies no


necessariamente correspondem a hiperretngulos

Tor

Buf

001101
Chi
Den

000

100

Oma

No
001101

Atl
Mob

Mia

Mtodos de repositrios (buckets)

O Estruturas com ponteiros so (geralmente)


ineficientes para armazenamento em disco
ponteiros podem atravessar a fronteira entre um
bloco de disco e outro
O Uma tcnica geral usar repositrios (buckets) para
armazenar os pontos (ou outros tipos de dados
espaciais)
Um repositrio corresponde a um conjunto de
pontos espacialmente prximos e que cabem
num bloco de disco
Exemplo mais simples: grid regular
Problemas fundamentais:
O Como organizar a informao a respeito da
regio do espao correspondente a cada
bucket
O O que fazer quando um bucket transborda
(overflow)
O Como evitar buckets com poucos pontos
(underflow)

Mtodos hierrquicos com repositrios

O Correspondem aos mtodos hierrquicos vistos


anteriormente, porm ocm o critrio de subdiviso
relaxado para que cada subregio contenha c
pontos, no mximo (ao invs de apenas 1)
O Tm o efeito de diminuir a ligao entre a altura da
rvore e a distncia entre pontos individuais
Altura dependente da distncia entre conjuntos
de pontos
Efeito ainda mais pronunciado com BD-trees
til para aplicaes onde deseja-se focalizar
grupos depontos prximos (clusters)
O bucket adaptive k-d tree(Dynamically
Quantized Space -DQS)
O Dynamically Quantized Pyramid
O Mais utilizados em GIS e BD espaciais
R-tree e suas variantes
PMR quadtree (linear)

Mtodos no hierrquicos de repositrios

O Identidade do bucket pode ser determinada por


Uma funo de hash
O Bucket B corresponde aos pontos P tais que
H(P) = B
O medida que o nmerode pontos cresce, o
espao de endereamento tem que ser
aumentado
Reinsero de pontos
O Ex.: linear hashing, spiral hashing
Regio correspondente a uma clula de uma
grade
O grid file
O EXCELL
O Problemas de overflow so geralmente tratados
atravs de buckets auxiliares encadeados ao bucket
principal (apontado pelo diretrio ou funo de
hash)

Linear Hashing

O Esquema de hashing onde o espao de


endereamento cresce um bucket (endereo) por
vez
O Utiliza duas funes de hash para m buckets
0
1

hn(K) = K mod 2n
hn+1(K)

hn+1(K) = K mod 2n+1

m-2n
2n -1

hn(K)

2n
2n <= m < 2n+1
hn+1(K)
m-1

Linear Hashing (cont.)

O Quando m uma potncia de 2, todos os buckets


O

O
O
O

so endereados por hn
Ao se usar linear hashing para armazenar pontos,
preciso utilizar um esquema de linearizao do
espao (bit interleaving, por exemplo), isto ,
K = f(x,y)
A criao de um novo bucket ocorre quando a taxa
de utilizao ultrapassa um limite pr estabelecido
Taxa de utilizao = nmero de pontos / nmero de
entradas vazias (tanto em buckets primrios quanto
em buckets de overflow)
Ao se criar um novo endereo (m), os pontos
residentes no primeiro endereo correspondente a
hn so reinseridos e buckets de overflow que se
tornem desnecessrios so desalocados
Se buckets de overflow so desalocados, a taxa de
utilizao pode crescer novamente e provocar a
criao de um novo endereo

Linear Hashing (cont.)

O Ao se criar um novo endereo, todos os endereos


O
O
O

antigos, exceto um, continuam sendo acessados


pelas mesmas funes de hash
Nota: no h relao entre os buckets que contm
os pontos que sero reinseridos e aqueles que esto
mais cheios
Aps o espao de endereos ser dobrado, todos os
pontos nos buckets anteriormente existentes tero
sido reinseridos
Em se tratando de pontos, as funes de hash
originais so ineficientes em manter pontos
prximos em buckets prximos
Soluo, antes de aplicar a funo de hash,
inverter a ordem dos bits, de maneira que os
mais significativos sero afetados pelo operador
mod
Qual funo de hash deve-se aplicar primeiro?
Resposta: hn+1
Se um dado K satisfaz as condies para as
duas, hn+1 deve ser usada sob pena de K no
mais ser encontrado quando houver entre 2n+1 e
2n+2 endereos

Linear Hashing (cont.)

O Exemplo usando a massa de dados padro com


linearizao usando bit-interleaving
Denver (0,3)
10
Omaha (2,2)
12
Chicago (2,3)
14
Mobile (4,0)
16
Miami
(7,0)
21
Atlanta (6,1)
22
Buffalo (6,5)
54
Toronto (4,6)
56
O Exemplo de clculo:

4
6

38H = 56

0
0

1
1

0 0 1 1

0
1

0
0

1 0 0 0

Linear Hashing (cont)

O Assumir 1 pontos por bucket, utilizao mxima 66%


0

0
chi

0%
0
chi
mob
tor

0
chi
mob

50%
1

0
mob
tor

75%
0
mob
tor

50%

100%
1

50%

2
chi

0
mob
tor

50%
2
chi
buf

2
chi
buf

67%
0
mob
tor

2
chi
buf
den

50%

50%
0
mob
tor
oma

0
chi
mob

2
chi
buf
den

0
mob
tor
oma

58%

2
chi
buf
den
atl

Linear Hashing (cont.)


0
1
mob mia
tor
oma

2
chi
buf
den
atl

0
mob
tor

67%

0
mob
tor

1
mia

2
chi
buf
den
atl

67%

57%

2
chi
buf
den
atl

4
oma

5
mia

4
oma

Grid File

O Mtodo de repositrio
O Espao dividido numa grade cujos hiperplanos
O
O
O

O
O

divisores no precisam ser estar em posies


regulares
Cada clula da grade corresponde a um nico
bucket
Cada bucket pode corresponder a mais de uma
clula, porm a regio definida por todas elas
precisa ser convexa (hiper-retngulo)
Estrutura de acesso composta de dois elementos
Um diretrio (array) que mapeia clulas em
buckets (armazenado em disco)
Escalas lineares (uma para cada dimenso),
onde as cotas dos hiperplanos de partio so
armazenados (mantido em memria)
Buckets armazenam tipicamente de dezenas a
milhares de pontos (um bloco)
Principal virtude
Acesso a cada ponto usando apenas 2 acessos a
disco

Grid file (cont.)


y3
B

B
y2

E
y1

F
y0

x0

x1

x2

x3

y0

y1

y2

y3

Diretrio

Escalas Lineares

Grid File (cont.)

O Algoritmo de insero
Localizar, usando o diretrio e as escalas, a
clula onde o ponto deve ser inserido
Se o bucket apontado pela clula ainda tem
espao, inserir ponto e terminar.
Se o bucket com overflow atravessa alguma
fronteira das escalas lineares, ele
compartilhado por mais de uma clula.
O Criar um novo bucket
O Repartir os pontos entre os dois buckets
O Tentar a insero novamente
Se o bucket com overflow apontado por
somente uma clula
O Criar um novo hiperplano de subdiviso em
um dos eixos coordenados
O Atualizar a escala correspondente
O Partir todas as clulas atravessadas pelo
hiperplano e atualizar o diretrio
O Tentar a insero novamente

Grid file (cont.)

O Exemplo

Grid File (cont.)

O Implementao eficiente do diretrio fundamental


O Inicialmente, comum operaes de insero
requererem o refinamento da grade (hiperplanos)
O Mais tarde, o mais comum haver buckets
compartilhados com varias clulas
O Analogamente, operaes de deleo podem
requerer que buckets sejam desalocados sendo o
contedo repartido com buckets vizinhos
O Deleo tambm pode requerer que hiperplanos
sejam removidos

EXCELL

O Semelhante ao Grid File


O Partio do espao entretanto, regular, la bintree
O No precisa de escalas e acesso ao diretrio mais
fcil
Pode ser usado clculo de endereo
O Operao de splitting pode requerer que o diretrio
seja dobrado
O EXCELL tambm tem semelhana com linear
hashing
Diretrio ao invs de funo de hash
Linear Hash requer mais buckets pois no h
garantia que o bucket que d overflow o que
partido e redistribuido
EXCELL no tem buckets de overflow

R-tree

O rvore balanceada nos moldes da B+-tree


O Cada n (bloco de disco) contm uma coleo de
O

O
O

O
O

pares retngulo/apontador
Ns internos:
apontador para subrvore
retngulo o MBR de todos os objetos na
subrvore
Ns-folha
apontador para dado espacial
retngulo o MBR do objeto espacial
Se M a capacidade de um n (nmero mximo de
entradas), estabelece-se um limite mnimo
m <= M/2 para a ocupao de todos os ns da
rvore, exceto a raiz
Crescimento da rvore se d das folhas para a raiz,
que tem ao menos 2 filhos, a menos que seja um n
folha
Todos os ns-folha esto na mesma altura na rvore

R-trees (cont.)

3
C

F
I

H
1

R-trees (cont.)

O Busca (dado que intercepta um ponto P)


Descer todas as subrvores cujo retngulo
contm P
O Insero de um dado E
Escolher o n folha L onde E ser inserido
O Seja N o n raiz
O [1] Se N folha, retornar N
O Escolher o filho F de N que resulte no
menor crescimento do retngulo de F
Se h empate, escolher o filho com
menor rea
O N F; goto [1]
Se L tem espao suficiente, instale E em L;
seno, divida o n L em dois ns folha L e LL
contendo todos as entradas de L e mais E
Subir na rvore a partir de L ajustando os
retngulos dos ns-pai
Se um segundo n LL foi criado, inserir uma
entrada contendo o MBR de LL e um ponteiro
para LL no n pai de L usando a mesma tcnica
usada para inserir E no n folha

R-trees (cont.)

O Deleo de uma entrada E


Procurar o n folha L contendo E a partir da raiz
O Nota: mais de uma subrvore pode ser visitada
para cada n
Remover E de L
Propagar as mudanas subindo na rvore
O Defina P, um conjunto de ns com underflow
O Inicialize N L
O [1] Se N a raiz da rvore, termine este passo
O Inicialize P pai(N)
O Remova a entrada de N de P
O Se N tem menos de m entradas, inclua N em P;
seno, ajuste o MBR de N em P
O N P; goto [1]
Reinserir todos as entradas de todos os ns em P
O Nota: Tomar cuidado em reinserir entradas em
suas alturas originais na rvore
Se a raiz tiver agora apenas uma entrada, delete-a
e mova o filho nico para a raiz

R-trees (cont.)

O Deleo pode tambm ser feita semelhana do


processo anlogo em B-trees
N com underflow redistribuido em n irmos
O Usar o irmo que ter menor acrscimo em
sua rea
Reinsero mais simples e tem a vantagem de
rearrumar a rvore
Ambas as alternativas podem requerer que ns
tenham que ser divididos
O Algoritmo para diviso de ns
Requerido para insero e deleo
M+1 entradas so repartidas em duas colees
(dois ns) tais que
O ambos tenham entre m e M entradas
O a diviso satisfaa um critrio heurstico
que minimize a complexidade de novas
operaes de busca
critrio de Guttman: MBRs das duas
colees devem ser os menores
possveis (rea mnima)

R-trees (cont.)
O Diviso de Ns (cont.)
Algoritmo exaustivo
O tempo exponencial em M
O imprtico
Algoritmo quadrtico
O Escolher como sementes o par de entradas
(i,j) cujo MBR conjunto desperdia mais
rea com relao aos MBRs individuais
desperdcio = area (MBR (Ri,Rj))-area
area (MBR (Ri))-area(MBR(Rj))
custo = O(M2)
O [1] Escolher entre as entradas restantes a
que exibe maior preferncia por um dos
dois grupos
di = acrescimo de area requerido para
inserir entrada no grupo i.
escolher a entrada para a qual |di-dj|
maximo
O Repetir [1] ate que todas as entradas
estejam distribuidas ou ate que um grupo
esteja to vazio que requeira todas as
entradas restantes

R-trees (cont.)

O Diviso de Ns (cont.)
Algoritmo Linear
O Semelhante ao algoritmo quadratico
O Escolha das sementes: escolher o par a
maior separacao normalizada em qualquer
dos eixos
Ex.: separacao em x.
Assumir xmax(j) < xmin(i)
sep = (xmax(j)-xmin(i)) /
(xmax(i)-xmin(j))
O Escolha da proxima entrada a ser
distribuida em um dos grupos
Escolher qualquer uma
Inserir no grupo que ter menor
incremento de area

R*-trees

O Beckmann et al identificam 4 parmetros de otimizao


para o problema de distribuio de retngulos nos ns
A rea de cada retngulo deve ser mnima
O reduz a rea de desperdicio entre o MBR do n
e o conjunto de retngulos includos no n
A rea de interseo entre retngulos em cada nvel
da rvore deve ser mnima
O reduz a probabilidade de ter que descer em
diversas subrvores durante buscas
O permetro (margem) de cada retngulo deve ser
mnimo
O faz com que os MBRs sejam aprox. quadrados
O quadrados so mais facilmente agrupados que
retngulos
A taxa de utilizao deve ser mxima
O ns cheios levam ao acesso de menos ns
O critrio importante em range queries com
intervalos grandes

R*-trees (cont.)

O Problemas da R-tree de Guttman


O critrio de rea (1) o nico contemplado, o
que leva diminuio das res de interseo
(2), mas no a retngulos approx. quadrados (3)
ou a boas taxas de utilizao (4)
O algoritmo de escolha de sementes privilegia
sementes pequenas
O Leva a retngulos no quadrados
O Uma vez que um dos grupos tem um MBR
grande, provavel que este seja escolhido
novamente para entradas subsequentes, pois
o incremento de rea fica relativamente
pequeno
Se durante a diviso, um grupo escolhido
raramente, a uma certa altura todas as entradas
restantes so atribuidas a ele sem levar em
conta qualquer criterio geomtrico
problemas podem resultar em grupos com
excessiva rea de interseo ou distribuidos
desigualmente (baixa taxa de utilizao)

R*-trees (cont.)
O Algoritmo modificado para escolher a subrvore onde
inserir uma dada entrada
Se o n sendo considerado aponta para ns-folha
O Escolher a folha que resultar em menor
incremento da rea total de interseo no n
pai
O Se empatar escolher a folha que resultar em
menor incremento de rea
O Se empatar escolher a folha com menor rea
Nos outros casos, agir como na R-tree
Algoritmo quadrtico, porm custo pode ser
reduzido se nem todos os retangulos forem
considerados
O ordenar os entradas por incremento de rea
O aplicar o algoritmo apenas s primeiras p
entradas (tipicamente 32)
Experimentos indicam melhor performance para
range queries com retngulos pequenosem massas
de dados com pequenos retngulos ou pontos
Obs.: Clculo da rea de overlap

overlap( E k ) =

area(E

i =1..k ,i k

Ei )

R*-tree(cont.)

O Algoritmo modificado de diviso de ns


Para cada eixo
O ordenar retngulos uma vez pelo valor mnimo e
outra pelo valor mximo
O para cada ordenacao, computar M-2m+2
distribuies. Distribuio k
Grupo 1: as primeiras (m-1)+k entradas
Grupo 2: as entradas restantes
O para cada ordenao computar:
permetro(MBR(Gr.1))+permetro(MBR(Gr.2))
O somar os valores de permetro obtidos para
todas as distribuies
Escolher o eixo que resultar no menor valor total de
permetro e neste eixo computar para cada
distribuio:
area(MBR(Gr.1) MBR(Gr.2))
Escolher a distribuio que resultar em menor rea
de interseo. Se empatar, escolher a que resulte em
area(MBR(Gr.1))+area(MBR(Gr.2))

Colees de Retngulos

O Colees de retngulos so massas de dados


tipicamente usadas no desenho de mscaras VLSI
Processamento desses dados requerem
operaes tais como verificao de proximidade
entre dois caminhos ou de conectividade
eltrica entre dois retngulos
Retngulos se caracterizam por ser finos e
compridos
O Tambm usadas para aproximar a distribuio
espacial de outros dados, isto , cada retngulo o
MBR de um dado espacial. Operaes tpicas
detectar pares de candidatos que podem
satisfazer um determinado predicado num join
espacial
detectar adjacncia entre dados. Por exemplo,
se um mapa poligonal especificado por uma
coleo de segmentos de reta, deseja-se
determinar a conectividade entre esses
segmentos
range search: busca de todos os dados que
intersectam um retngulo

Mtodos de Varredura

O Em ingls: plane sweep


O A idia geral dividir um problema n-dimensional
em diversos problemas (n-1)-dimensionais
O Tal diviso conseguida deslocando-se um
hiperplano (de dimenso n-1) no espao ndimensional e detectando-se quais retngulos
interceptam o plano (retngulos ativos)
O A varredura normalmente precedida por um sort
dos valores mnimos e mximos de cada retngulo
na direo do eixo de varredura. Cada um desses
valores corresponder a um evento de insero ou
deleo do retngulo no hiperplano de varredura
O O plano de varredura representado por uma
estrutura de dados que seja adequada para a
insero e deleo de retngulos. Se os retngulos
originais residem em espao bidimensional, a
estrutura deve ser prpria para representar
intervalos em uma dimenso. Exemplos:
rvores de segmentos (segment trees)
rvores de intervalos (interval trees)

rvores de Segmentos Unitrios

O A rvore de segmentos corresponde a uma


sofisticao da rvore de segmentos unitrios que,
por sua vez nada mais do que uma variao da
quadtree de regio em uma dimenso:
Ns pretos (folhas) so trechos do segmento
Ns pretos no ltimo nvel da rvore (mais
baixo) correspondem a pixels em uma dimenso
Ex: Segmento 3-11

10 11

16

rvores de Segmentos

O A rvore de segmentos unitrios s funciona para

O
O
O
O
O
O

um segmento por vez e requer uma discretizao do


espao. A rvore de segmentos elimina essas
restries
Dados N segmentos, ordena-se as coordenadas de
suas extremidades (at 2.N valores): yo ,y1 ym
Cada n terminal i da rvore corresponde ao
intervalo [yi , yi+1 )
Se um n est contido num intervalo A, mas seu pai
no, ento ele rotulado com A
Todos os rtulos de um dado n so armazenados
numa lista duplamente encadeada
Insero feita de forma anloga da rvore de
segmentos unitrios, exceto que o rtulo tem que
ser inserido na lista encadeada
Deleo requer uma estrutura auxiliar ligando cada
segmento S a cada n da rvore rotulado com S
Um array de listas de ponteiros

rvores de Segmentos

O Espao:O (N log N)
O Tempo para inserir um segmento: O (log N)
O Tempo para deletar um segmento: O (log N)
A: [6:36)
B: [34:38)
C: [21:36)
D: [23:27)
E: [3:8)
F: [15:19)
G: [11:14)

rvores de Segmentos (cont.)

O Procedimento para achar todos as intersees entre


os retngulos
Ao adicionar a borda mnima S = [l,r) de um
retngulo R na estrutura verificar
O [1] Todos os segmentos que comeam antes
de l e terminam depois de l
O [2] Todos os segmentos que comeam entre
ler
Problema [1] pode ser solucionado com rvore
de segmentos em O(logN+F)
O Fazer uma busca do menor segmento
possvel que comea em l, anotando os
rtulos dos segmentos encontrados no
caminho da raiz at a folha
Problema [2] solucionado com rvore de
segmentos em O(N)
O necessario visitar todos os ns folha entre
ler

rvore de Segmentos (cont.)


Problema [2] pode ser resolvido em O (log N)
usando uma range tree (espao O(N))
O Procura-se todos os pontos de incio de
segmento entre l e r
O O problema de deteco de todos as intersees
entre todos os retngulos pode ser resolvido em
tempo O(N.logN+F) e espao O (N) usando-se uma
rvore de intervalos ou uma priority search tree

rvore de intervalos

O Diferentemente da rvore de segmentos, cada


intervalo marcado apenas uma vez na rvore
Segmento S=[l,r) marcado apenas no n
interno que seu ancestral comum mais
prximo
O N interno contm discriminante que um valor
entre a maior folha descendente esquerda e a
menor folha descendente direita

a+b/2
L1R1

a
L1

R1R2

b
R1

L2

R2

rvore de Intervalos (cont.)

O Estrutura secundria:
Cada n interno V aponta para os pontos mnimos (Li)
/ mximos (Ri) de cada segmento I para o qual V o
ancestral mais prximo encadeados em ordem
crescente/decrescente
O Estrutura terciria:
Cada n interno aponta para o n ativo mais prximo
da subrvore esquerda/direita
Um n ativo aquele que possui estrutura secundria
ou seus dois filhos tenham descendentes ativos

rvore de Intervalos (cont.)

O Algoritmo de insero de segmento [L,R):


Buscar V, o n ancestral comum mais prximo
das duas extremidades do segmento e inseri-las
na sua estrutura secundria
O Algoritmo para reportar intersees
1) Comear na raiz e buscar V
2) Comear em V e localizar L na subrvore esq.
3) Comear em V e localizar R na subrvore dir.

Curvas

O Importncia
Caracterizam fronteiras de dados
bidimensionais (ex.: regies)
Dados unidimensionais (ex.: rede de rios,
estradas, ferrovias, etc)
O Representao
exata (algbrica)
O Forma implcita (curva em 2D)
f (x,y) =0
O Forma implcita (curva em 3D)
f (x,y,z)=0
g (x,y,z)=0
O Forma paramtrica (curva em nD)
xi=fi (t)
aproximada
O linhas poligonais
O splines (conjunto de curvas mais simples
emendadas)

Estruturas de dados para curvas

O Usadas em representaes de linhas poligonais e


mapas poligonais
Um mapa poligonal uma diviso de um
espao bidimensional em regies atravs de
linhas poligonais
O Estruturas hierrquicas visam diminuir a
complexidade de certas operaes:
determinar se duas curvas se interceptam
determinar se duas curvas se tocam
realizar a costura de curvas (mapas
poligonais)
O Apanhado de mtodos:
Estruturas especficas para curvas (strip-trees,
arc-trees, bspr trees)
Estruturas baseadas em quadtrees de regio
(edge quadtree, line quadtree, PM- e PMRquadtrees)
Estruturas oriundas da Geometria
Computacional (K-structure, Layered DAG)

Strip Trees

O Curva aproximada por uma rvore binria onde


cada n corresponde a um retngulo limitante (no
alinhado com os eixos) de um trecho da curva
O As folhas correspondem a aproximaes
suficientemente prximas (retngulos finos o
suficiente)
O Retngulos so orientado segundo o segmento de
reta que une o ponto inicial e final da curva ou
trecho de curva
O Curva dividida em trechos nos pontos em que a
curva toca o retngulo envolvente

Folhas
da rvore

Strip trees (cont.)

O Quando existemais de um ponto de diviso,


O
O

escolhe-se o mais afastado das extremidades da


curva
Observar que o retngulo limitante no
necessariamente o de menor rea
Construo bottom-up alternativa:
iniciar com strips correspondentes aos
segmentos de reta
tomar strips dois a dois e formar strips maiores
at ter-se um nico strip
Problemas podem aparecer quando a curva
[1] no toca dois lados opostos do retngulo
fechada
no conexa
Soluo
relaxar o requerimento [1]
iniciar com dois ou mais retngulos
usar um flag para indicar se a strip regular ou
no

Strip trees (cont.)

O Se uma strip tree regular, pode-se detectar pontos


de interseo entre duas curvas em tempo
logaritmico usando as propriedades dos retngulos
limitantes

interseo impossvel

interseo possvel

interseo certa

interseo possvel

Arc Trees

O Semelhante strip-trees, mas curva aproximada


O
O
O
O

por cordas de arcos


Usa uma parametrizao de linha da curva
Se l o comprimento total da curva, a primeira
subdiviso feita no ponto que divide a curva em
dois trechos de comprimento l/2
Se a subdiviso for at o nvel k cada trecho
aproximado tem comprimento l/2k
Determinao do comprimento da curva pode ser
complicado
Solues analticas (podem resultar em
integrais elpticas)
Solues numricas

C2
C2

C1

C0
C1
C2
C2

Arc Trees (cont.)

O A parametrizao por corda de arco permite que se


estime o lugar geomtrico do arco por uma elipse,
j que sabemos de antemo o comprimento do
trecho de curva
O Se a curva na verdade uma linha poligonal, mais
simples fazer a subdiviso em vrtices da linha,
porm cada n ter que incorporar o valor do
comprimento do trecho de curva associado

BSPR trees

O Binary Searchable Polygonal Representation


O Ns so retngulos alinhados com os eixos
O Ns-folhas contm trechos monotnicos em x e y
da curva
O Representao construida bottom-up
levantar trechos monotnicos da curva e
encapsul-los em retngulos
juntar retngulos adjacentes em retngulos
maiores

Line Quadtrees

O Na verdade, apenas uma quadtree de regio


O
O
O

estendida para lidar com um nmero arbitrrio de


cores (regies)
Assume-se fronteiras alinhadas com os eixos
coordenados, isto , cada regio um polgono
ortogonal
Subdiviso processa-se sempre que um quadrante
contm pixels de mais de uma regio
Ns-folha contm, alm do indentificador da regio
qual pertence, um flag para cada aresta do
quadrante, que ligado sempre que tal aresta
corresponde a uma fronteira entre duas regies
Na line quadtree original, ns internos no precisam
conter os flags correspondentes s fronteiras, mas
isso ajuda se formos reconstruir a fronteira de uma
regio
A reconstruo da fronteira de uma regio precisa
utilizar tcnicas de procura de vizinhos (neighbor
finding)

Line quadtrees (cont.)

O Mapa Poligonal

O Line quadtree correspondente

Busca de vizinhos em quadtrees

O Os vizinhos de um n P de uma quadtree no


O
O

O
O

necessriamente so vizinhos na rvore


Dada uma direo I que corresponde a um lado de
P (I.e. N,S,E,W), pode haver mais de um vizinho I
de P. Neste caso, esses vizinhos so menores que P
Dada uma direo I que corresponde a um vrtice
de P (I.e. NW,NE,SW,SE), h no mximo um
vizinho I de P (pode no haver vizinho se P est na
fronteira da quadtree)
Se o vizinho na direo I de P maior que P, ento,
o vizinho na direo oposta a I menor ou igual a P
Se nos restringirmos a vizinhos maiores ou iguais a
P, (possivelmente ns cinza), ento se P no est na
fronteira da quadtree, P tem no mnimo 5 e no
mximo 8 vizinhos

Situaes impossveis de vizinhana

Busca de vizinhos em quadtrees (cont.)


O Algoritmo de busca de vizinhos em quadtrees
semelhante ao de busca de vizinhos em rvores
binrias
O Considere uma rvore binria onde valores esto
armazenados apenas nos ns folha. Para determinar o
vizinho na direo I de P:
Determina-se Q, o n ancestral comum entre o n
e seu vizinho (subir na rvore)
O Iniciar com Q = P
O Fazer Q = pai(Q) at que Q no seja o filho I
de seu pai
Descer na rvore a partir de Q tomando a direo
oposta quela usada na subida na rvore, isto , I
e depois sempre a direo oposta a I
Q

P
Vizinho direita de P

Busca de vizinhos em quadtrees (cont.)

O A adaptao para quadtrees do algoritmo de busca


de vizinhos em rvores binrias divide-se em dois
casos: segundo arestas ou segundo vrtices
O Busca de vizinhos segundo arestas:
Na subida da rvore, o critrio para parada se
o pai de Q no tem nenhum vizinho na direo I
em comum com Q. Por exemplo, se estamos
procurando um vizinho na direo N de Q, e
pai(Q) um filho NW ou NE de seu pai, ento
continuamoa a subir, I.e. fazemos Q=pai(Q),
caso contrrio, pai(Q) o ancestral comum
Na descida da rvore, a direo a ser tomada
aquela correspondente a refletir a direo de
subida segundo a direo I, isto , se I=N e a
subida se deu pelo elo NW, ento devemos
descer pelo elo SW (e vice-versa)

Busca de vizinhos em quadtrees

O exemplo:

Busca de vizinhos em quadtrees (cont.)

O exemplo: para encontrar o vizinho de tamanho igual


ou maior a Este do n 10, segue-se o caminho
A
SW

SE
E

C
NE
D

SE
10

NW

13

Busca de vizinhos em quadtrees (cont.)

O Para a busca de vizinhos em diagonal (segundo


vrtices) preciso distinguir os seguintes casos
durante a subida e descida na rvore. Seja J o elo
entre P e Q:
1) Se J=I, ento subimos na rvore Q para pai(Q)
e, ao descer, usamos a direo diagonalmente
oposta. Ex.: se J=I=NW, descemos pelo elo SE
2) Se J I , e I e J so adjacentes segundo uma
aresta (isto , J no diagonalmente oposto a I),
usamos o algoritmo de vizinhana segundo
aresta para encontrar o vizinho A de Q segundo
a aresta comum entre I e J. Ex.: Se I=NW e
J=SW, temos que localizar o vizinho W de Q.
Uma vez localizado A, a descida se faz usandose o elo de A diagonalmente oposto a I
3) Se J I a direo diagonalmente oposta a I,
ento Q o ancestral comum mais prximo, e
comeamos a descer na rvore pelo elo de Q
diagonalmente oposto a I

Busca de vizinhos em quadtrees (cont.)

O exemplo: vizinho NW do n 15
Busca do vizinho de E
segundo aresta W

A
SE

SW
C

E
SW
F

NE

13
SE

NW
15

10

PM quadtrees

O Visam representar mapas poligonais de forma exata


O Edge quadtrees so inadequadas pois requerem
O

O
O

fronteiras alinhadas com os eixos coordenados


MX quadtrees sao inadequadas pois no podem
representar vrtices de forma exata e requerem que
regies prximas de vrtices sejam muito
subdivididas
Samet apresenta 3 variantes:PM1 , PM2 e PM3quadtrees. A diferena entre elas reside
fundamentalmente na definio de quais arestas se
pode armazenar num mesmo n-folha
Cada n corresponde a uma subregio quadrada do
mapa
Ns-folhas correspondem a um conjunto q-edges,
isto , pedaos de arestas que passam pelos
quadrantes correspondentes. Uma q-edge
normalmente representada por um ponteiro para
uma estrutura de dados que representa a aresta
inteira, isto , coordenadas das duas extremidades e
identificadores para as regies esquerda e direita

PM1 -quadtrees

O Corresponde a uma subdiviso obedecendo os


seguintes critrios
1. Cada n-folha pode conter no mximo um vrtice
2. Se um n-folha contm um vrtice, ele no pode
conter nenhuma q-edge (pedao de aresta) que no
seja incidente nesse vrtice
3. Se um n-folha no contm vrtices, ele s pode
conter uma q-edge
4. A regio de um n-folha mxima
O Observe que os quadrados correspondentes aos ns de
uma PM-quadtree tm seus quatro lados fechados.
Se um vrtice se encontra numa fronteira de um n ele
tambm inserido no(s) n(s) vizinho(s)
O Um n-folha que contm uma coleo de q-edges usa
uma estrutura de dados do tipo lista encadeada. Uma
rvore balanceada seria prefervel, mas na prtica,
dificilmente encontramos mais de 5 arestas incidentes
num mesmo vrtice.

PM1 -quadtrees (cont.)

O Insero feita percorrendo a rvore da raiz para as


folhas (pre-ordem) usando uma rotina recursiva
Se o segmento no intercepta o quadrado,
correspondente ao n, terminar
Se o segmento intercepta o quadrado
correspondente a um n interno, chamar a
rotina recursivamente para inserir o segmento
nos 4 filhos
Se o segmento intercepta o quadrado
correspondente a um n-folha:
O Se o n est vazio, inserir na lista
correspondente
O Se o n contm uma ou mais arestas, testar
se a aresta sendo inserida as demais em um
vrtice comum dentro do quadrado
Caso positivo, inserir na lista
Caso negativo, subdividir o quadrante e
chamar a rotina recursivamente

PM2 -quadtrees

O Na anlise da PM1-quadtree notamos que a altura


da rvore dependente no s da distncia relativa
entre os vrtices, mas tambm da sua posio em
relao s linhas de diviso da quadtree
O Para remediar esta situao, modifica-se o critrio 3
3. Se um n folha no contm vrtices, ento ele
s pode conter arestas que sejam incidentes
num mesmo vrtice comum exterior regio do
quadrante correspondente

A medida que A se aproxima da fronteira direita,


a subdiviso precisa ser
refinada ainda mais.
Numa PM2-quadtree,
esta subdiviso no
necessria

PM3 -quadtrees

O O critrio de subdiviso da PM2-quadtree pode ser


relaxado ainda mais retirando-se a restrio 2
O A subdiviso ento fica idntica a de uma PRquadtree, isto , apenas os vrtices so considerados
O Como resultado, cada n pode agora conter um
nmero arbitrrio de arestas
O Para facilitar operaes do tipo busca de vizinhos,
as arestas so organizadas em 7 grupos: um para
arestas que se encontram num vrtice e 6 para cada
combinao entre pares de lados do quadrante, isto
, NW, NS, NE, EW, SW e SE

PMR-quadtrees

O Adaptao de PM-quadtrees para uso em disco


O

O
O

O
O
O

(buckets)
No h diferena entre vrtices e arestas. A
subdiviso se d visando obter buckets contendo
um nmero de objetos prximo de um limite timo
(ex.: tamanho de um bloco de disco)
Quando um bucket excede sua capacidade, os
objetos nele contidos so reinseridos nos quatro
subquadrantes, mas apenas uma vez
Se a subdiviso no for capaz de reduzir a
populao de um bucket para menos que o limite,
os dados excedentes so colocados em buckets de
overflow
Uma nova subdiviso ser tentada se um novo dado
for inserido naquele n
A regra de subdiviso visa obter uma subdiviso
probabilisticamente tima
A PMR-quadtree pode ser usada para representar
quaisquer objetos, no apenas mapas poligonais

You might also like