Classificação e Pesquisa de Dados



Documentos relacionados
Busca em Memória. Secundária

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

INF 1010 Estruturas de Dados Avançadas

Árvores Binárias de Busca

Sistemas de Arquivos. André Luiz da Costa Carvalho

Complexidade de Algoritmos

Prof. Bruno Calegaro

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Introdução. Árvore B. CaracterísMcas. Origem do Nome. Exemplo. Grau. Rohit Gheyi. B vem de balanceamento

INTRODUÇÃO À LINGUAGEM C++

Árvores Binárias Balanceadas

Estruturas de Dados Aula 15: Árvores 17/05/2011

Gerenciamento de memória

PROGRAMAÇÃO II 3. FILA DINÂMICA

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

Prof. Marcelo Nogueira

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Capítulo 4 Gerenciamento de Memória

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Capítulo 4 Gerenciamento de Memória

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

Estruturas de Dados I

MANUAL DE UTILIZAÇÃO DO SISTEMA HERMES

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Organização de Arquivos

Comandos de repetição while

Busca. Pesquisa sequencial

PROGRAMAÇÃO II 4. ÁRVORE

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Algoritmos e Estruturas de Dados 2

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

RECEITA FEDERAL DO BRASIL

Nível da Arquitetura do Conjunto das Instruções

Capítulo 4 Gerenciamento de Memória

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Árvore B, B* e B+ Slides: Profa. Dra. CrisAna Dutra de Aguiar Ciferri. Murilo Gleyson Gazzola. ICMC- USP - Base de Dados

TRABALHO PRÁTICO Nro. 02 (Atualizado em 29/10/2008)

EAD Árvore - representação usando listas ligadas

Especificação do Trabalho

BC Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento

Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

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

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Analisando e comparando as funções do DBNavegator

EAD Árvore árvore binária

Árvores Binárias de Busca

Árvores B* Letícia Rodrigues Bueno

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Manual do Sistema. Página 1/14

FILAS DE PRIORIDADE e HEAPS

Ata da resolução de exercício

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Linguagem C: Árvores Binarias

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

UNIDADE 6 - PROGRAMAÇÃO MODULAR

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Para criar uma nova apresentação: 1.Escolha a opção Apresentação em Branco Clique no botão Ok

3.4 Representação física: alocação encadeada (dinâmica) Ptlista - variável ponteiro externa que indica o início da lista.

INF 1007 Programação II

Arquitetura de Sistemas Operacionais

Mais configuração OptraImage

INF 1007 Programação II

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

4) Abaixo está representado o nó_i do arquivo SO.txt em um sistema UNIX.

Sistemas Operacionais Aula 2

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Algoritmos e Estrutura de Dados III. Árvores

Gerência do Sistema de Arquivos. Adão de Melo Neto

Gerenciamento de memória

Como usar o Scanner na Digitalização de Processos

Para os demais formatos, o relatório será gerado mas virá com configurações incorretas.

Hashing (Tabela de Dispersão)

DAS5102 Fundamentos da Estrutura da Informação

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Programação: Estruturas de seleção

Ter o controle das pastas (Prontuários) armazenadas no "SAME", utilizando-se do recurso do "Volume".

AULA 16 - Sistema de Arquivos

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

PROJETO PILOTO. Setembro 2015

Transcrição:

Classificação e Pesquisa de Dados Aula 20 Árvores B e B+ B-Trees (Árvores B) [Bayer & McCreight 1970] UFRGS INF01124 B-Trees (Árvores B) Árvores de pesquisa balanceadas, projetadas para minimizar o tempo de acesso para buscas, inserções e remoções de registros em grandes arquivos de dados armazenados em disco Cada nodo de uma árvore B pode conter vários nodos filhos Generalização de árvores binárias de pesquisa Outras árvores, como árvores binária de pesquisa e AVL, são muito eficientes quando os dados se encontram armazenados na memória principal Em uma aplicação típica de árvores B, a quantidade de dados manipulados não cabe na memória principal 1

Árvores B (Cont.) Se um nodo x de uma árvore B contém k valores de chaves, então x tem k+1 nodos filhos, e tais valores de chave funcionam como separadores para k+1 intervalos Uma árvore B com n nodos tem altura O(log n), apesar de sua altura ser consideravelmente menor que a de uma árvore binária Algoritmos precisam gerenciar a leitura (gravação) de partes do arquivo de (para) o disco, quando necessário Algoritmos de manipulação de árvores B precisam apenas de um número fixo de páginas (do arquivo) na memória principal em qualquer instante de tempo O tamanho da memória principal não limita o tamanho da árvore B que pode ser manipulada Exemplo de Árvore B chave apontador L T K N R V X < K > K N < > N < R > R < V > V < X > X Figura: gentileza de Clesio S. Santo e Nina Edelweiss 2

Árvores B Propriedades Cada nodo x contém os seguintes campos: Número de chaves atualmente armazenadas (n) As n chaves armazenadas em ordem não decrescente Uma variável booleana que indica se um nodo é folha (leaf) Se x é um nodo interno (i.e., não é folha), ele conterá n+1 ponteiros para os seus nodos filhos Os valores de chave de nodo x separam os filhos de x em intervalos por valores de chaves Todas as folhas se encontram no mesmo nível, que corresponde à altura da árvore Árvores B Propriedades (Cont.) Existe um limite inferior e um limite superior para o número de chaves que cada nodo pode conter Estes limites são definidos em termos de um valor inteiro t, chamado grau mínimo da árvore B Todo nodo interno, exceto a raiz, deve conter pelo menos t 1 chaves. Se a árvore não for vazia, a raiz deve conter pelo menos um valor de chave Todo nodo pode conter no máximo 2t 1 chaves A árvore B mais simples tem t = 2 (conhecida como árvore 2-3-4) 3

Árvores B Número de Nodos Ná prática, valores bem maiores de t são utilizados. Em geral, o tamanho de um nodo em uma árvore B corresponde ao tamanho de uma página (bloco) em disco. Para arquivos grandes, o número de filhos costuma ficar entre 50 e 2000 O número de filhos de um nodo é limitado pelo tamanho das chaves e pelo tamanho da página de disco Uso de fatores de derivação elevados reduz a altura da árvore significativamente, e, como conseqüência, o número de acessos a disco Árvores B Variações Armazenar dados satélite nos nodos junto com suas respectivas chaves Ocupa mais espaço, reduzindo o número de filhos de cada nodo, com consequente aumento na altura da árvore Armazena em cada nodo apenas os valores de chave e ponteiros para a página de disco contendo os dados satélites Meio termo: armazena valores de chave e ponteiros para a página de disco no caso de nodos internos. No caso de nodos folhas, armazena os dados satélites diretamente Árvore B+: os nodos folhas são conectados utilizando uma lista duplamente encadeada Valores de chaves presentes em nodos internos são replicados nas folhas Permite acessar o arquivo sequencialmente (ordenado pelo valor de chave) ou randomicamente (para um dado valor de chave) Utilizado na prática para construção de arquivos de índice 4

bloco bloco bloco bloco Árvore B + Exemplo 200 450 620... C < 200 200 C < 450 80 110 240 300... t = 3 Ordem = 5 17 35 50 71 90 95 100... 05 06 08 15 35 40 45 71 74 76 77 80 83 84 90 50 60 63 67 17 27 30 Dados NÚMERO NOME IDADE SALÁRIO 1000 ADEMAR 25 500 1050 AFONSO 23 700 1075 ANGELA 22 600 1300 1600 1350 CESAR 25 500 1400 CLAUDIA 30 800 1480 DARCI 26 750 1900... 2200 2500 2400 IARA 23 600 2450 LUIS 38 700 2500 MARIA 27 650 2950 SANDRA 25 900 3100 SONIA 28 780 3150 TATIANA 20 1000 5

Pesquisa em Árvores B Procura de um valor k em uma árvore B Inicie lendo a raiz da árvore a partir do disco Procure k dentro do nó lido (pode ser usada pesquisa binária, pois as chaves estão ordenadas dentro do nó). Se encontrou, encerra a busca; caso contrário, continue a busca, lendo o filho correspondente, a partir do disco Continue a busca até que k tenha sido encontrado ou você tenha feito a busca em uma folha da árvore O tempo de busca é proporcional a O(log t n). Mais especificamente: O(t log t n) (no caso de busca sequencial no nodo) ou O(log 2 t log t n) (no caso de busca binária no nodo) Exercício Pesquisar as chaves 84 e 76 na árvore B abaixo: 200 450 620... C < 200 200 C < 450 80 110 240 300... t = 3 Ordem = 5 17 35 50 71 90 95 100... 05 06 08 15 35 40 45 71 74 76 77 80 83 84 90 50 60 63 67 17 27 30 Dados 6

Pesquisa em Árvores B Proc pesquisa_árvore_b ( x, k ); { x : nodo da árvore B } { k: valor de chave procurado } begin i 1; while (i n and k < key i ) /* pesq. sequencial no nodo */ do i i + 1; if (i n and k = key i ) then return (x, i); /* retorna nodo e ordem da chave */ if (leaf) then return nil; /* não encontrou */ else begin DISK-READ(c i ); /* lê nodo filho do disco e prossegue */ return pesquisa_árvore_b (c i, k ); end; Como n < 2t e a árvore tem altura Θ(log t n), o custo do procedimento é O(t log t n). Criação de uma Árvore B vazia Proc cria_árvore_b_vazia ( T ); { T : arvore } begin x alloca_nodo(); leaf TRUE; n 0; DISK-WRITE(x); root[t] x; end; O custo do procedimento é O(1). 7

Inserção em Árvores B Procedimento mais elaborado do que em árvores binárias de pesquisa Use o algoritmo de busca para determinar em que nó (folha) deve ser feita a inserção Garante que nenhum nodo conterá mais que 2t-1 chaves Se a inserção da nova chave resultar em um número de chaves naquele nó menor ou igual a 2t-1, então simplesmente grave o nó no disco e encerre Caso o nodo y que deverá receber o novo valor de chave já esteja cheio (2t-1 chaves), este deverá ser subdividido (em torno do valor mediano) em dois nodos antes que a chave possa ser inserida Particionamento de Nodos Aloque um novo nodo z O novo nodo z adota os t-1 maiores valores de chave do nodo cheio (y), o qual mantém apenas os t-1 menores valores O valor mediano é transferido para o nodo pai (x) do nodo subdividido (y) Caso o nodo pai já se encontre cheio, o particionamento deve ser propagado para os nodos ancestrais, eventualmente chegando-se a raiz Caso a raiz já se encontre cheia e tenha que receber mais um valor, um novo nodo é criado para armazenar o valor mediano da raiz. Este nodo se torna a nova raiz da árvore A subdivisão do nodo raiz é a única forma de aumentar a altura de uma árvore B 8

Exemplo de Particionamento Particionamento de um nodo não raiz y = c i x Key i-1 Key i N W P Q R S T U V y = c i x P Q R Key i-1 Key i N S W Key i+1 z = c i+1 T U V T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 Exemplo de Particionamento Particionamento do nodo raiz Raiz[T] Raiz[T] S P Q R S T U V P Q R T U V T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 9

Exemplos de Inserção Árvore inicial G M P X A C D E J K N O R S T U V Y Z Inserção de B G M P X A B C D E J K N O R S T U V Y Z Inserção de Q G M P T X A B C D E J K N O Q R S U V Y Z Exemplos de Inserção Inserção de Q G M P T X A B C D E J K N O Q R S U V Y Z Inserção de F P C G M T X A B D E F J K N O Q R S U V Y Z 1 0

Remoção em Árvores B Garante que nenhum nodo, exceto a raiz, conterá menos que t-1 nodos Se a remoção de uma chave resultar em um número de chaves maior que t-1, então remove o nó, grava o resultado no disco e encerre Caso o nodo interno x (não raiz) que deverá ter a chave k removida já contenha apenas t-1 chaves: (1) Caso o filho de x que precede/sucede k tenha pelo menos t chaves, substitui k pelo seu precessor/sucessor (2) Caso os nodos y e z, contendo o predecessor e o sucessor de k, respectivamente, contenham apenas t-1 chaves, remove-se k do nodo x e funde-se y e z em um único nodo Caso x seja um nodo folha (3) Se um dos irmãos vizinhos (esquerda ou direita) de x contiver pelo menos t chaves, transfere-se uma chave do pai de x para x, e transfere-se o predecessor (se irmão da esquerda) ou sucessor (se irmão da direita) da chave transferida para seu lugar no nodo x Caso ambos os irmãos vizinhos tenham apenas t-1 chaves, procede-se um fusão Exemplos de Remoção Árvore inicial G M P X A B C D E J K N O R S T U V Y Z Remoção de B G M P X A C D E J K N O R S T U V Y Z Remoção de G (Caso (1)) E M P X A C D J K N O R S T U V Y Z 1 1

Exemplos de Remoção Remoção de G (Caso (1)) E M P X A C D J K N O R S T U V Y Z Remoção de M (Caso (2)) E P X A C D J K N O R S T U V Y Z Remoção de Y (Caso (3)) E P V A C D J K N O R S T U X Z 1 2