Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach

Documentos relacionados
Dados Espaciais e Indexação

Instituto de Ciências Matemáticas e de Computação

Árvores AVL e Árvores B. Jeane Melo

Banco de Dados Espaciais

Universidade Federal de São Carlos - UFSCar Departamento de Computação - DC Programa de Pós-Graduação em Ciência da Computação - PPGCC

R+ -Tree THE R+-TREE: A DYNAMIC INDEX FOR MULTI-DIMENSIONAL OBJECTS

Dados espaciais Árvores R

São Carlos, 01 de outubro 2010 THE R* - TREE : AN EFFICIENT AND ROBUST ACCESS METHOD FOR POINTS AND RECTANGLES+

Árvores-B (Parte Ib) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Árvores Rubro-Negra IFRN

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Algoritmos e estruturas espaciais

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de:

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Árvores B. Definição: Seja t a ordem da árvore B. Uma árvore B de ordem t é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Hashing convencional...

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Universidade Federal de Mato Grosso Estrutura de Dados II

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Seja d um número natural. Uma árvore B de ordem d é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores-B (Parte II) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Árvores B. Prof. Leandro C. Fernandes. Estruturas de Dados. Adaptado de: Leandro C. Cintra e M.C.F. de Oliveira

Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores B. Prof. Flávio Humberto Cabral Nunes

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de:

Árvores-B (Parte Ia) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Busca em Regiões Ortogonais

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

HASHING HASHING 6/10/2008

Árvores B. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Árvores-B: Remoção. Cristina Dutra de Aguiar Ciferri Thiago A. S. Pardo

Construção de árvores-b. Árvores-B (Parte II) Características Gerais. Características Gerais. Leandro C. Cintra M.C.F. de Oliveira

Algoritmos de bulk-loading para o método de acesso métrico Onion-tree

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Árvores Binárias de Busca

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Aula 19 Árvores Rubro-Negras

Árvores Genéricas de Busca

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Métodos de acesso espaciais e indexação espacial

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Algoritmo: Split. Árvores B Parte IV. Algoritmo: Split. Algoritmo: Split. Algoritmo: Split. Procedimento inicial. Parâmetros

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Abordagens automáticas

Prova Substitutiva PMR3201 1o. semestre 2018 Prof. Thiago Martins

ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Modelo Relacional. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Busca em Memória Secundária. Busca em Memória Secundária

Aula 13 Árvores Rubro-Negras

Árvores binárias de busca

ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

HASHING Hashing Motivação - Acesso Direto:

Árvores B Partes I e II

Dicionários. TAD Orientado a conteúdo

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

Árvores B. Árvores B Parte II. Características. Características. Construção Bottom-Up. Leandro C. Cintra Maria Cristina F. de Oliveira.

Árvores Binárias de Busca

Árvores B Parte IV. Revisão de Inserção. Organização. Variantes. Leandro C. Cintra Maria Cristina F. de Oliveira

INF 1010 Estruturas de Dados Avançadas

Endereçamento Aberto

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão)

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

ÁRVORE AVL. Problema do balanceamento

Aula 19 Conjuntos disjuntos (Union-find)

Árvores Binárias Balanceadas

Matrizes esparsas: definição

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

INE5408 Estruturas de Dados

Pesquisa em Memória Secundária. Prof. Jonas Potros

3 Extração de Regras Simbólicas a partir de Máquinas de Vetores Suporte 3.1 Introdução

Árvores Binárias de Busca

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Buscas Informadas ou Heurísticas - Parte II

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

Programação Inteira. Solução com o método Branch-and-Bound

Árvores Binárias de Busca

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Acesso Sequencial Indexado

Transcrição:

CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach

Introdução É o método de acesso espacial mais referenciado na literatura É o mais importante dentre os métodos que aplicam o conceito de MBR (Minimum Bounding Rectangle, ou retângulo limítrofe mínimo)

Estrutura de dados A é uma estrutura em árvore balanceada em função da altura As folhas contém ponteiros para os atributos não espaciais dos objetos. Os nós correspondem as páginas de disco

Estrutura de dados Folhas Cada folha contém entradas do tipo (I, Tid) Tid se refere (pode ser um ponteiro) a uma tupla na base de dados, contendo os atributos não espaciais do objeto I corresponde ao MBR do objeto descrito por Tid

Estrutura de dados Nós Cada nó interno contém entradas do tipo (I, Cid) Cid é um ponteiro para algum filho I corresponde ao MBR que cobre todas as regiões descritas pelos MBR dos nós inferiores Sendo M o número máximo de entradas em um nó, m M/2 especifica o número mínimo de entradas em um nó

Estrutura de dados

Estrutura de dados

Estrutura de dados Propriedades Toda folha contém entre m e M entradas, exceto a raiz Todo nó interno tem entre m e M filhos, a menos que seja a raiz A raiz tem no mínimo dois filhos, a menos que seja uma folha Todas as folhas aparecem no mesmo nível

Estrutura de dados Propriedades A altura de uma com N registros é no máximo logmn -1, porque o número mínimo de entradas por nó é m O número máximo de nós é [N/m] + [N/m2]+...+1 A pior taxa de ocupação para todos os nós, exceto para raiz, é m/m Os nós tendem a ter mais do que m entradas, o que irá diminuir a altura da árvore e melhorar a taxa de ocupação

Para os algoritmos a serem demonstrados: Considere E.I como sendo o MBR referente à entrada E Considere E.p como sendo um Tid (identificador da tupla) ou Cid (identificador de um ponteiro para o nó abaixo)

Consulta A consulta na é similar à feita na B-Tree. Pode ser necessário percorrer mais do que uma sub-árvore de um determinado nó aumentando o custo da consulta Os algoritmos de inserção e particionamento devem ser projetados de forma a minimizar este aumento do custo

Consulta Encontrar todas as entradas cujos MBRs coincidem com a janela de consulta S, a partir da cuja raiz é indicada por T 1. Se T é um nó interno, percorra todas as suas entradas E para verificar se E.I faz interseção com S. Para todas as entradas que fazem interseção, execute este passo novamente, considerando T como sendo a sub-árvore apontada por E.p 2. Se T é uma folha, percorra todas as entradas E para verificar se E.I faz interseção com S. Se as entradas fazem interseção, então compõem o conjunto resposta

Inserção Inserção na é similar à feita na B-Tree, sendo que novas entradas são acrescentadas nas folhas, e os nós que ultrapassam a capacidade máxima de entradas (M) são particionados O particionamento é, então, propagado para os pais

Inserção Os algoritmos de inserção e particionamento devem ser projetados de forma a minimizar este aumento do custo nos algorítmos de consulta

Inserção A ramificação do percurso inicial pode ser aumentada caso a JC intersecte o MBB de um grande número de entradas de um nó interno Isso pode acontecer em três condições: a. Sobreposição entre MBBs das entradas de um nó interno b. Armazenamento de MBBs grandes c. Escolha de uma JC abrangente

Inserção Ramificação do percurso pela sobreposição de MBB das entradas de um nó interno janela de consulta E 2 E 1 E 3

Inserção Ramificação do percurso pelo armazenamento de MBB grandes E 1 E 3 Entradas (MBB) JC Janela de Consulta Extent E 2

Inserção Ramificação do percurso pela escolha de uma JC abrangente E 1 E 3 Entradas (MBB) Janela de Consulta Extent JC E 2

Inserção Insere uma nova entrada E em uma 1. Use EscolheFolha para obter a folha L onde E deve ser incluído 2. Se L tem espaço para mais uma entrada, insira E. Caso contrário, use ParticionaNo para obter L e LL contendo E e as antigas entradas de L 3. Use AjustarÁrvore passando L como parâmetro para propagar as mudanças necessárias árvore acima. Se L foi particionado, passe LL também 4. Se a propagação do particionamento ao longo da árvore provocou o particionamento da raiz, crie uma nova raiz tendo os dois nós gerados como filhos

EscolheFolha Seleciona a folha em que E será inserida 1. Faça N corresponder à raiz 2. Se N é uma folha, retorne N 3. Senão, faça F corresponder à entrada de N cujo MBR F.I necessita de menor expansão para englobar E.I. No caso de empate, escolha a entrada com MBR de menor área 4. Faça N corresponder ao filho de F referenciado por F.p. Retorne ao passo 2

AjustaArvore Percorre a árvore acima, ajustando os MBRs e propagando os particionamentos 1. Faça N = L. Se L foi particionado anteriormente, faça NN corresponder ao nó resultante do particionamento 2. Se N é a raiz, encerre 3. Considere P como sendo o pai de N e En como sendo a entrada de P referente a N. Ajuste En.I para englobar todos os MBRs de N 4. Se NN foi gerado, crie uma nova entrada Enn, com Enn.p referenciando NN e Enn.I englobando todos os MBRs de NN. Se houver espaço em P, insira Enn. Caso contrário, use ParticionaNo para obter P e PP contendo Enn e as antigas entradas de P 5. Faça N = P. Se N foi particionado, faça NN = PP. Retorne ao passo 2

Remoção Remove uma entrada E de uma 1. Use EncontraFolha para obter a folha L que contém E. Se a entrada E não foi encontrada, encerre 2. Remova E de L 3. Execute CondensaArvore, passando L como parâmetro 4. Se a raiz ficou com apenas um filho após o passo anterior, transforme este filho na nova raiz

EncontraFolha Encontra a folha que contém a entrada E, a partir da cuja raiz é indicada por T 1. Se T é um nó interno, percorra todas as suas entradas F para verificar se F.I faz interseção com E.I. Para cada entrada que faz interseção, execute este passo novamente considerando T como sendo a sub-árvore apontada por F.p, até que E seja encontrado ou que todas as sub-árvores tenham sido checadas 2. Se T é uma folha, percorra cada entrada para verificar se corresponde à entrada E. Se E for encontrado, retorne T

CondensaArvore Dada uma folha L, da qual uma entrada foi removida: Eliminar esta folha caso tenha um número de entradas menor do que o mínimo m, e re-inserir suas entradas Propagar a eliminação desta folha, se necessário Ajustar todos os MBRs árvore acima

CondensaArvore 1. Faça N = L. Considere Q como sendo um conjunto que irá conter os nós eliminados, inicialmente vazio 2. Se N é a raiz, vá para o passo 6. Caso contrário, considere P como sendo o pai de N e En como sendo a entrada a entrada de P referente a N 3. Se N tem menos do que m entradas, elimine En de P e insira em Q 4. Se N não foi eliminado, ajuste En.I de forma a englobar todos os MBRs de N 5. Faça N = P. Retorne ao passo 2

CondensaArvore 6. Re-insira todas as entradas existentes em Q. As entradas que faziam parte de folhas, são re-inseridas em folhas, da mesma forma que no Algoritmo 5 (Inserção). Mas, entradas que faziam parte de nós internos têm que ser re-inseridas no mesmo nível em que se encontravam, de forma que as folhas das sub-árvores referentes às suas entradas fiquem no mesmo nível que as outras folhas da árvore principal

Particionamento O particionamento deve ser feito de forma a evitar que os dois nós gerados tenham sempre de ser percorridos na execução de uma consulta Um nó deve ou não ser percorrido, conforme o seu MBR total faça ou não interseção com o intervalo de consulta Para tanto, a área total dos MBRs de cada um dos nós gerados a partir do particionamento, deve ser a menor possível

Particionamento Algoritmo Exaustivo A forma mais direta de se encontrar os dois nós de áreas mínimas é testar todas as possibilidades de agrupamento das M+1 entradas e escolher a melhor O número de possibilidades é aproximadamente 2M-1 Um valor razoável para M é 50, e assim o número de agrupamentos possíveis é consideravelmente grande

Particionamento Algoritmo Quadrático Encontrar uma combinação de entradas com área pequena Não se garante, que seja esta a melhor combinação possível O custo é quadrático em relação a M e linear em relação ao número de dimensões

Particionamento Algoritmo Quadrático Obter duas entradas (dentre as M+1) como sementes (primeira entrada) para compor os dois grupos que serão gerados após o particionamento Calcula-se a ineficiência de agrupamento para todos os pares de entrada, o qual consiste na área de dead space no MBB gerado por ambas entradas quando alocadas conjuntamente Escolhe-se o par com o maior desperdício de área As entradas restantes são escolhidas e inseridas como descrito a seguir

Particionamento Algoritmo Quadrático Dividir um grupo de M+1 entradas em dois grupos: 1. Execute ObtémSementes para escolher as duas primeiras entradas e inclua uma em cada grupo 2. Se todas as entradas já foram inseridas, encerre. Popule os grupos que não possuam o número mínimo de entradas. Caso já se tenha inserido todas as entradas encerre.

Particionamento Algoritmo Quadrático 3. Execute ObtémPróximaEntrada para obter a próxima entrada a ser inserida. Insira conforme a prioridade abaixo: I. Grupo cujo MBR total terá que ser menos expandido após a II. III. IV. inserção. Na ocorrência de empate, a inserção é feita naquele de menor área total. Naquele com menor número de entradas No que apresenta os dois casos. 4. Retorne ao passo 2.

Particionamento - ObtémSementes Algoritmo Quadrático Seleciona duas entradas para serem as primeiras de cada grupo: 1. Para cada par de entradas, E1 e E2, componha um MBR J que engloba E1.I e E2.I. Calcule: d = área(j) - área(e1.i) - área(e2.i) 2. Escolha o nó que apresenta o maior valor de d

Particionamento - ObtémPróximaEntrada Algoritmo Quadrático Escolhe uma entrada, dentre as que restam, para ser testada em um grupo: 1. Para cada entrada E que ainda não foi inserida em um dos grupos, calcule d1 = aumento necessário à área do MBR total do primeiro grupo para incluir E.I. Para o segundo grupo, calcule d2 da mesma forma 2. Escolha qualquer entrada que apresente a máxima diferença entre d1 e d2

Particionamento Algoritmo Linear Este algoritmo apresenta custo linear em relação a M e ao número de dimensões. É basicamente idêntico ao anterior, mas usa uma versão diferente do Algoritmo ObtémSementes Além disto, o Algoritmo ObtémPróximaEntrada, escolhe qualquer entrada dentre as que ainda restam

Particionamento ObtémSementesLinear Algoritmo Linear Seleciona duas entradas para serem as primeiras de cada grupo 1. Ao longo de cada dimensão, encontre a entrada cujo MBR tem o lado inferior mais alto e a que tem o lado superior mais baixo. Armazene a distância entre eles 2. Normalize as distâncias dividindo pelo tamanho de todo o conjunto ao longo da dimensão correspondente 3. Escolha o par com a maior distância normalizada, dentre todas as dimensões

Particionamento ObtémSementesLinear Algoritmo Linear Cálculo da distância com relação á dimensão x y mais baixo lado superior mais alto lado inferior x