A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 não são indicados para dados espaciais l Hash: não atendem a consultas de faixa (reange queries) l B-Tree: trata apenas uma dimensão

2 Estrutura de Dados Espaciais §Operação comum com dados espaciais é a pesquisa de objetos que estão numa determinada área l Ex.: Encontre todos os hospitais que estão a no máximo 20KM deste ponto

3 Estrutura de Dados Espaciais §Algumas estruturas de dados propostas: l Grid l quad-trees l k-d-tree l r-tree

4 R-Tree §É uma árvore similar a uma B+-tree, com índices para dados nas folhas §Nós correspondem à páginas de disco §A 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

5 R-Tree § Nós folhas contêm entradas da forma: l (R, TId) l Onde: R contém o retângulo que encobre a área da tupla identificada por TId. l Este retângulo é conhecido por Minimum Bounding Box l Ex.

6 R-Tree § Nós não -folhas contêm entradas da forma: l (R, Filho) l Onde R é o retângulo que envolve todos os retângulos dos descendentes deste nó e Filho é o endereço do nó filho

7 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 l Uma R-tree satisfaz às seguintes propriedades: l P1. Cada nó contém entre M e m entradas, exceto a raiz l 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

8 R-Tree § Definição (cont) l P3. Cada nó tem entre M e m filhos, exceto a raiz l P4. Para cada entrada (R, filho) num nó não folha, T é o menor retângulo que espacialmente contém os retângulos descendentes l P5. O nó raiz tem pelo menos dois filhos a menos que seja um nó folha l P6. Todas as folhas aparecem num mesmo nível

9 R-Tree

10

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

12 R-Tree §Algoritmo 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. l 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) l S2: Se T é folha, verifique todas as entradas E para determinar se E.R sobrepõe S. Se sim, E é um registro do resultado.

13 R-Tree §Algoritmo 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 l I1. Encontre a posição para o novo registro : chamar escolhaFolha() para selecionar o nó folha L que conterá E l 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

14 R-Tree §Algoritmo Inserção l I3. Propagar mudanças para cima: chame ajusteTree() em L, também passando LL se uma divisão foi realizada l 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

15 R-Tree §Algoritmo escolhaFolha() l EF1. Inicialize: N = raiz l EF2. Verifique Folhas: Se N é folha, retorne N l 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) l EF4. Descer até encontrar folha: Faça N ser o nó filho apontado por F.Tid e volte para EF2.

16 R-Tree §Algoritmo ajusteTree() l AT1. Inicialize: N = L. Se L foi dividido faça NN = LL l AT2. Verifique se já finalizou: Se N é raiz, então pare. l 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.

17 R-Tree §Algoritmo ajusteTree() (cont) l 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 l 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.

18 R-Tree §Algoritmo Remoção(): Remove um registro E de uma R-tree l 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 l R2. Remova o registro: remova E de L l R3. Propague as mudanças: chame árvoreDensa(), passando L 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

19 R-Tree §Algoritmo encontreFolha(): Dada uma R-tree cuja raiz é T, encontre a folha contendo a entrada E l 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 l EF2: Pesquise nó folha : Se T é folha verifique cada entrada para ver se casa com E Se E não for encontrada, retornar T

20 R-Tree §Algoritmo 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 l CT1. Inicialize: Faça N =L, Seja Q, o conjunto de nós eliminados inicialmente vazio. l CT2. Encontra a entrada pai Se N é raiz, vá para CT6 Seja P o pai de N, e En a N entrada em P

21 R-Tree §Algoritmo condensaTree (cont) l CT3. Elimine nós underflow: Se N tem menos que m entradas, remova En de P e adicione N ao conjunto Q l CT4. Ajuste retângulo Se N não foi eliminado, ajuste EN.R para conter todas as entradas em N. l CT5. Mova para cima um nível: Faça N=P e repita de CT2 l CT6. Re-insira entradas orfãs Re-insira toras as entradas de nodos do conjunto Q

22 R-Tree §Divisão de Nó l Para adicionar uma nova entrada a um nó cheio é necessário dividir as entradas em dois nós l A divisão deve ser feita de modo que seja improvável que ambos nós sejam examinados em pesquisas subsequentes l 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

23 R-Tree Veja que a área do Bad Split é muito maior do que a área de Good Split

24 Quad trees §Acelera o acesso a dados num plano 2d §Técnica bastante simples §O 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

25 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

26 Quad trees xya 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] xy zt

27 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

28 Quad trees xya 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] xy zt P Exemplo de Consulta Ponto P

29 Quad trees §Inserção em quadtrees l um retângulo será inserido em cada quadrante folha que o sobrepõe l então todos os caminhos que para as folhas que sobrepõem o retângulo a ser inserido são percoridos l a página P associada com cada folha é lida l Se P não está cheio, então insere o novo retângulo

30 Quad trees §Inserção em quadtrees (cont) l Se P estiver cheio, O quadrante deve ser dividido em quatro quadrantes e 3 novas páginas são alocadas l As entradas da página antiga mais a página nova são divididas nas quatro páginas l Uma entrada E é adicionada a toda página cujo quadrante intercepta E.MBR (Minimum Bounding Rectangle)

31 Quad trees xya tz b c d Inserção em Quadtree mn p q Como ficará a árvore após as inserções de 15 e 16?

32 k-d tree §Usado 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

33 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.

34 K-D-Tree

35 A B C D Árvore para figura anterior

36 K-d Tree §Outro Exemplo §Sejam as cidades com coordenadas

37 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

38 K-d Tree §Inserção de Mossoró §Inserção de Natal Mossoró (19,45) Natal (40,50)

39 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

40 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

41 K-d Tree §Inserção de Campina Campina (38,38) Mossoró (19,45) Natal (40,50)

42 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

43 K-d Tree §Inserção de João Pessoa: Campina(38,38) Mossoró (19,45) Natal (40,50) JP(54,40)

44 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

45 K-d Tree §Inserção de Monteiro: Campina(38,38) Mossoró (19,45) Natal (40,50) JP(54,40) Monteiro(4,4)

46 K-d Tree Monteiro Campina Grande João Pessoa Natal Mossoró

47 K-D-Tree A B C D Árvore para figura anterior


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google