estrutura de dados espaciais §necessidade de indexação dos dados espaciais de modo a reduzir o...

47
Estrutura de Dados Espaciais Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo Métodos de indexação tradicionais não são indicados para dados espaciais Hash: não atendem a consultas de faixa (reange queries) B-Tree: trata apenas uma dimensão

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Estrutura de Dados Espaciais

Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo

Métodos de indexação tradicionais não são indicados para dados espaciais Hash: não atendem a consultas de faixa (reange

queries) B-Tree: trata apenas uma dimensão

Page 2: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Estrutura de Dados Espaciais

Operação comum com dados espaciais é a pesquisa de objetos que estão numa determinada área Ex.: Encontre todos os hospitais que estão a no

máximo 20KM deste ponto

Page 3: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Estrutura de Dados Espaciais

Algumas estruturas de dados propostas: Grid quad-trees k-d-tree r-tree

Page 4: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

É uma árvore similar a uma B+-tree, com índices para dados nas folhas

Nós correspondem à páginas de discoA estrutura é projetada de forma que uma

pesquisa espacial requer visitar um número pequeno de nós

Um BD espacial consiste de tuplas representando objetos espaciais, onde cada tupla possui um identificador

Page 5: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Nós folhas contêm entradas da forma: (R, TId) Onde: R contém o retângulo que encobre a área

da tupla identificada por TId. Este retângulo é conhecido por Minimum

Bounding Box Ex.

Page 6: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Nós não -folhas contêm entradas da forma: (R, Filho) Onde R é o retângulo que envolve todos os

retângulos dos descendentes deste nó e Filho é o endereço do nó filho

Page 7: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Definição: Sejam M e m o número máximo e mínimo de entradas de um nó respectivamente, tal que m <= M/2 Uma R-tree satisfaz às seguintes propriedades: P1. Cada nó contém entre M e m entradas, exceto

a raiz P2. Para cada registro de índice (R, TId), R é o

menor retângulo que espacialmente contém os dados n-dimensionais representados pela tupla TId

Page 8: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Definição (cont) P3. Cada nó tem entre M e m filhos, exceto a

raiz P4. Para cada entrada (R, filho) num nó não

folha, T é o menor retângulo que espacialmente contém os retângulos descendentes

P5. O nó raiz tem pelo menos dois filhos a menos que seja um nó folha

P6. Todas as folhas aparecem num mesmo nível

Page 9: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Page 10: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Page 11: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Algoritmo de Busca Inicia-se na raiz de forma similar a uma B-tree Entretanto, mais de uma sub-árvore pode ser

visitada

Page 12: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo Busca: Dada uma R-tree cujo nó raiz é T,

encontre todos os registros de índices cujos retângulos sobrepões (overlap) o retângulo de busca S. S1: Pesquisa Sub-árvores

• Se T não é folha, verifique cada entrada E para determinar se E.R sobrepõe S

• Para todas entradas que sobrepõem, chame Pesquisa(E.Tid) S2: Se T é folha, verifique todas as entradas E para

determinar se E.R sobrepõe S. Se sim, E é um registro do resultado.

Page 13: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo Inserção (similar à inserção em B-

tree: inserção nas folhas, nós que ficam cheios são divididos e divisão se propaga até a raiz):Inserir uma nova entrada E na R-tree I1. Encontre a posição para o novo registro : chamar

escolhaFolha() para selecionar o nó folha L que conterá E

I2. Adicione o registro ao nó folha: Se L tem espaço coloque E, senão chame divideNo() para obter L e LL que conterá E mais as entradas de L

Page 14: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo Inserção

I3. Propagar mudanças para cima: chame ajusteTree() em L, também passando LL se uma divisão foi realizada

I4. Árvore cresce: Se uma propogação de divisão de nó causar a raiz dividir-se, então crie uma nova raiz cujos filhos são os dois nós resultantes

Page 15: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo escolhaFolha()

EF1. Inicialize: N = raiz EF2. Verifique Folhas: Se N é folha, retorne N EF3. Escolha sub-árvore: Se N não é folha, Seja

F a entrada em N cujo retângulo F.R precisa do menor crescimento para incluir E.R (escolhe-se a entrada com retângulo de menor área)

EF4. Descer até encontrar folha: Faça N ser o nó filho apontado por F.Tid e volte para EF2.

Page 16: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo ajusteTree()

AT1. Inicialize: N = L. Se L foi dividido faça NN = LL

AT2. Verifique se já finalizou: Se N é raiz, então pare.

AT3. Ajuste retângulo na entrada pai: Seja P o pai do nó N, e seja En a n-ésima entrada em P. Ajuste En.R de modo que englobe todos os retângulos em N.

Page 17: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo ajusteTree() (cont)

AT4. Propagar divisão de nós para cima: • Se N tem um irmão NN resultante de uma divisão anterior,

crie uma nova entrada ENN com ENN.Tid apontando para NN e ENN.R englobando todos retângulos de NN.

• Adicione ENN a P se existir espaço

• Caso contrário chame divideNo() para produzir P e PP contendo ENN e todas as entradas de P

AT5. Mova para cima para o próximo nível• Faça N=P e NN=PP

• Se uma divisão ocorrer, repita de AT2.

Page 18: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo Remoção(): Remove um registro E de uma

R-tree R1. Encontre o nó contendo o registro:

• Chame encontreFolha() para localizar o nó folha L contendo E• Pare se o registro não foi encontrado

R2. Remova o registro: remova E de L R3. Propague as mudanças: chame árvoreDensa(),

passando L R5. Diminua a árvore: se a raiz tem apenas um filho

depois que a árvore foi ajustadam faça este filho a nova raiz

Page 19: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo encontreFolha():

• Dada uma R-tree cuja raiz é T, encontre a folha contendo a entrada E

EF1: Pesquise Sub-árvores• SE T não é folha, verifique cada entrada F em T para determinar se

F.R sobrepõe E.R• Para cada tal entrada cmae encotreFolha(() na árvore cuja raiz é

apontada por F.Tid até que E seja encontrado ou todas as entradas tenham sido checadas

EF2: Pesquise nó folha : • Se T é folha verifique cada entrada para ver se casa com E• Se E não for encontrada, retornar T

Page 20: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo condensaTree

• Dado um nó folha L que tenha tido uma entrada removida, elimine o nodo se ele tem poucas entradas e realoque suas entradas

• Propague a eliminação do nó para cima quando necesário• Ajuste todos os retângulos no caminho no sentido da raiz,

fazendo-os menores quando possível CT1. Inicialize: Faça N =L, Seja Q, o conjunto de nós

eliminados inicialmente vazio. CT2. Encontra a entrada pai

• Se N é raiz, vá para CT6• Seja P o pai de N, e En a N entrada em P

Page 21: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeAlgoritmo condensaTree (cont)

CT3. Elimine nós underflow: • Se N tem menos que m entradas, remova En de P e adicione N ao

conjunto Q CT4. Ajuste retângulo

• Se N não foi eliminado, ajuste EN.R para conter todas as entradas em N.

CT5. Mova para cima um nível: Faça N=P e repita de CT2 CT6. Re-insira entradas orfãs

• Re-insira toras as entradas de nodos do conjunto Q

Page 22: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-TreeDivisão de Nó

Para adicionar uma nova entrada a um nó cheio é necessário dividir as entradas em dois nós

A divisão deve ser feita de modo que seja improvável que ambos nós sejam examinados em pesquisas subsequentes

Uma vez que a decisão de visitar um nó depende se seu retângulo sobrepões a área sendo pesquisada, a área total dos dois retângulos deve ser minimizada

Page 23: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

R-Tree

Veja que a área do Bad Split é muito maior do que a área de Good Split

Page 24: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

Acelera o acesso a dados num plano 2dTécnica bastante simplesO espaço de busca é recursivamente

decomposto em quadrantes até que o número de retângulos sobrepondo cada quadrante é menor do que a capacidade da página.

Os quadrante são nomeados: Noroeste, Nordeste, Sudeste e Sudoeste

Page 25: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

O índice é representado como uma árvore quaternária (cada nó interno tem 4 filhos, um por quadrante)

Cada folha é associada com uma página de disco

Cada retângulo aparece em todos os quadrantes folhas que o sobrepõem

Page 26: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

R

a[8,11,12,13] [3,4,7] d [9,10,13]

b c d

[1,2,5,6] [5,6,14] [2,3,6] [6]x y z t

Page 27: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad tree

Consulta de ponto (point query) é simples em quad tree.

Um único path (caminho) é percorrido da raiz até a folha

Em cada nível, é escolhido um dos quadrantes que contém o ponto da consulta

Page 28: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

R

a[8,11,12,13] [3,4,7] d [9,10,13]

b c d

[1,2,5,6] [5,6,14] [2,3,6] [6]x y z t

P

Exemplo de Consulta Ponto P

Page 29: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

Inserção em quadtrees um retângulo será inserido em cada quadrante

folha que o sobrepõe então todos os caminhos que para as folhas que

sobrepõem o retângulo a ser inserido são percoridos

a página P associada com cada folha é lida Se P não está cheio, então insere o novo

retângulo

Page 30: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

Inserção em quadtrees (cont) Se P estiver cheio, O quadrante deve ser

dividido em quatro quadrantes e 3 novas páginas são alocadas

As entradas da página antiga mais a página nova são divididas nas quatro páginas

Uma entrada E é adicionada a toda página cujo quadrante intercepta E.MBR (Minimum Bounding Rectangle)

Page 31: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

Inserção em Quadtree

15

16

m n

p q

Como ficará a árvore após as inserções de 15 e 16?

Page 32: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

k-d treeUsado para representar pontosárvore kd particiona o espaço em célulasé uma árvore de busca binária, reside em memória principal, tal que os nós

interiores em cada nível contêm valores referentes a um único eixo, X ou Y, alternadamente

as folhas apontam para páginas físicas

Várias folhas podem apontar para a mesma página física

Page 33: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

k-d tree

o valor armazenado na raiz divide o espaço em dois subespaços através de uma reta perpendicular ao eixo dos X, digamos;

o valor armazenado no filho à esquerda (ou direita) por sua vez divide o subespaço à esquerda (ou direita) em dois subespaços através de uma reta perpendicular ao eixo dos Y ; e assim por diante, alternando as dimensões.

Page 34: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-D-Tree

Page 35: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-D-Tree

A

B

C

D

Árvore para figura anterior

Page 36: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Outro ExemploSejam as cidades com coordenadas

Cidade (X,Y)

Mossoró (19,45)Natal (40,50)Campina Grande (38,38)João Pessoa (54,40)Monteiro (4,4)

Page 37: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 38: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Inserção de Mossoró

Inserção de Natal

Mossoró (19,45)

Mossoró (19,45)

Natal (40,50)

Page 39: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 40: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 41: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Inserção de Campina

Campina (38,38)

Mossoró (19,45)

Natal (40,50)

Page 42: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 43: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Inserção de João Pessoa:

Campina(38,38)

Mossoró (19,45)

Natal (40,50)

JP(54,40)

Page 44: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 45: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Inserção de Monteiro:

Campina(38,38)

Mossoró (19,45)

Natal (40,50)

JP(54,40)

Monteiro(4,4)

Page 46: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 47: Estrutura de Dados Espaciais §Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmo §Métodos de indexação tradicionais

K-D-Tree

A

B

C

D

Árvore para figura anterior