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

Documentos relacionados
Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F.

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

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

Á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: Remoção. Cristina Dutra de Aguiar Ciferri Thiago A. S. Pardo

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

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

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

Acesso a Arquivos. Árvores B Parte VI. Acesso Seqüencial & Indexado. Questão. Foco 1. Uso de Blocos. Árvores B+ Alternativas (até o momento)

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

Árvores B Partes I e II

INF 1010 Estruturas de Dados Avançadas

Árvores B (Parte III)

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

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

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

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

Árvore-B* Profa. Dra. Cristina Dutra de Aguiar Ciferri

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

Árvore-B + Profa. Dra. Cristina Dutra de Aguiar Ciferri

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

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

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

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios

Árvores-B + Profa. Dra. Cristina Dutra de Aguiar Ciferri. Algoritmos e Estruturas de Dados II Árvore-B +

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

Indexação de Arquivos II:

Árvores-B + SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Cristina Dutra de Aguiar Ciferri

Acesso Sequencial Indexado

Organização de Arquivos. Campos e Registros. Seqüência de Bytes (stream) Seqüência de Bytes (stream) Seqüência de Bytes (stream)

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Manutenção de Arquivos

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

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

Indexação de Arquivos III:

Organização de arquivos para desempenho. Manutenção de Arquivos. Compressão de dados. Compressão. Notação diferenciada. Técnicas

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

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

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

Á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-B + SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Organização de Arquivos. Campos e Registros. Seqüência de Bytes (stream) Seqüência de Bytes (stream) Leandro C. Cintra Maria Cristina F.

Hashing convencional...

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

Ordenação e Busca em Arquivos

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

Chaves. Acesso a Registros. Chaves Primária e Secundária. Chaves Primária e Secundária

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

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

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

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

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

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

HDs. Armazenamento Secundário. HDs. Capacidade do Disco. Organização de Informação em Disco. Organização de Informação em Disco

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Á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:

Estruturas de Dados II

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

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

Árvores Vermelho-Preto

Árvores Vermelho-Preto

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

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

Manutenção de Arquivos

Armazenamento Secundário

Trabalho Prático. Primeira Parte do Trabalho (Parte I): peso 40%

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

Organização de Arquivos. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A. Ciferri

INE5408 Estruturas de Dados

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

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

Árvores binárias de busca

Universidade Federal de Mato Grosso Estrutura de Dados II

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

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

Compactação e Reuso de Espaço

Índices. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

INF 1010 Estruturas de Dados Avançadas

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

INF1010 Lista de Exercícios 2

Aula 13 Árvores Rubro-Negras

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

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

Aula 19 Árvores Rubro-Negras

Prof. Jesus José de Oliveira Neto

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

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

Aula 18 Árvores B e parâmetros de compilação

5. Algoritmos de Ordenação

Hashing externo (II) Graça Nunes. Fonte: Folk & Zoelick, File Structures

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

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

Árvores binárias de busca

Árvores Binárias de Busca

Métodos de Busca Parte 1

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Introdução Métodos de Busca Parte 1

Transcrição:

Algoritmos e Estruturas de Dados II Prof. Debora Medeiros Árvores B Parte IV Algoritmos de Split e Procedimento inicial Eliminação, Redistribuição & Concatenação Adaptado dos Originais de: Ricardo J. G. B. Campello Thiago A. S. Pardo Cristina D. A. Ciferri Leandro C. Cintra Maria Cristina F. de Oliveira Algoritmo: Split Parâmetros chave_a_inserir, filho_dir_chave_a_inserir dados a serem inseridos Pagina página atual chave_promovida, filho_dir_chave_promovida parâmetros de retorno: novos dados promovidos para o nível superior Pagina_nova página criada 2 Algoritmo: Split Algoritmo: Split Tratamento do overflow causado pela inserção de uma chave cria uma nova página (i.e., Pagina_nova) distribui as chaves o mais uniformemente possível entre Pagina e Pagina_nova determina qual chave e qual RRN serão promovidos chave_promovida e filho_dir_chave_promovida 3 SPLIT(chave_a_inserir, filho_dir_chave_a_inserir, Pagina, chave_promovida, filho_dir_chave_promovida, Pagina_nova) copie todas as chaves e ponteiros de Pagina para uma página temporária com um espaço extra para uma nova chave e um novo ponteiro inseria chave_a_inserir e filho_dir_chave_a_inserir no lugar apropriado na página temporária crie Pagina_nova chave_promovida chave do meio da página temporária filho_dir_chave_promovida RRN de Pagina_nova copie as chaves e os ponteiros que precedem chave_promovida na página temporária para Pagina copie as chaves e os ponteiros que seguem chave_promovida na página temporária para Pagina_nova 4 Algoritmo: Split Procedimento inicial Observações somente uma chave é promovida e sai da página de trabalho atual todos os RRN dos nós filhos são transferidos de volta para Pagina e Nova_pagina o RRN promovido é o de Nova_pagina Nova_pagina é a descendente direita da chave promovida Rotina inicializadora e de tratamento da raiz abre ou cria o arquivo de índice (árvore-b) identifica ou cria a página da raiz lê chaves para serem armazenadas na árvore-b e chama função de inserção de forma apropriada cria uma nova raiz quando a função de inserção particionar a raiz atual Note que a função split move os dados! 5 6

Algoritmo: procedimento inicial PROCEDIMENTO INICIAL se arquivo com árvore-b existe abra arquivo senão crie arquivo e coloque a primeira chave na raiz recupere RRN da página raiz leia uma chave enquanto há chaves faça se FUNÇÃO-INSERÇÃO(raiz, chave, chave_promovida, filho_dir_chave_promovida) = HÁ_PROMOÇÃO crie nova página raiz com chave = chave_promovida, filho_esquerdo = raiz, filho_direito = filho_dir_chave_promovida raiz RRN da nova página raiz leia próxima chave escreva no arquivo o RRN de raiz feche arquivo 7 Propriedades Definição Propriedade (No. Mín. de Chaves) A ordem de uma árvore B é dada pelo número máximo de descendentes que uma página/nó, pode possuir Quando uma página é sub-dividida na inserção, as chaves são distribuídas igualmente entre as páginas resultantes: Em uma árvore B de ordem m, o número máximo de chaves em uma página é m 1 Exemplo: Uma árvore B de ordem 8 tem, no máximo, 8 descendentes e 7 chaves por página 9 10 Propriedade (No. Mín. de Chaves) Propriedades Gerais Quando uma página é sub-dividida na inserção, as chaves são distribuídas igualmente entre as páginas resultantes: Deste modo, o número mínimo de chaves em uma página/nó é dado por m/2 1 (exceto para a raiz) Exemplos: árvore B de ordem 8: armazena no máximo 7 chaves por página e no mínimo 3 chaves por página árvore B de ordem 7: armazena no máximo 6 chaves por página e no mínimo 3 chaves por página 11 Para uma árvore B de ordem m: Cada página tem: no máximo, m descendentes no mínimo m/2 descendentes (exceto a raiz e as folhas) A raiz tem, no mínimo, dois descendentes a menos que seja uma folha Todas as folhas estão no mesmo nível Uma página não folha com k descendentes contém k 1 chaves Uma página contém no mínimo m/2 1 chaves (exceto a raiz) e, no máximo, m 1 chaves 12

Altura de Pior Caso Altura de Pior Caso Qual a altura máxima que uma árvore com N chaves e ordem m pode atingir? Pior caso ocorre quando cada página tem apenas o número mínimo de descendentes, e a árvore possui, portanto, altura máxima e largura mínima O número mínimo de descendentes para a raiz é 2 Cada uma das 2 páginas descendentes da raiz possui no mínimo m/2 descendentes Logo, o 2º nível possui no mínimo 2* m/2 descendentes Cada uma das 2* m/2 páginas descendentes do 2º nível possui no mínimo m/2 descendentes Logo, o 3º nível possui no mínimo 2* m/2 2 descendentes Em geral, para um nível d da árvore, o número mínimo de descendentes é dado por 2* m/2 (d 1) 13 14 Altura de Pior Caso Altura de Pior Caso Em Resumo: Altura de pior caso ocorre quando cada página tem apenas o no. mínimo de descendentes O no. mínimo de descendentes para um nível d da árvore de ordem m é dado por 2* m/2 (d 1) Qual o nível mais profundo d de pior caso para uma árvore B com N chaves e ordem m? Qual o nível mais profundo d de pior caso para uma árvore B com N chaves e ordem m? O no. de descendentes que existiriam abaixo do nível d mais profundo (nível das folhas) se a árvore possuísse mais um nível é N + 1, já que a árvore comporta N chaves Mas, no pior caso, sabemos que o no. de descendentes em um dado nível d da árvore é 2* m/2 (d 1) Logo, no pior caso, tem-se 2* m/2 (d 1) N + 1 para o nível d mais profundo, o que resulta: d 1 + log m/2 [ (N+1)/2 ] 15 16 Altura de Pior Caso Eliminação de Chaves Exemplo (m = 512 e N = 1.000.000): d 1 + log 256 (500.000,5) = 3,37 Logo, a árvore terá no máximo 3 níveis No pior caso 3 acessos serão necessários para localizar uma chave dentre 1.000.000 O split garante a manutenção das propriedades da árvore B durante a inserção Essas propriedades precisam ser mantidas, também, durante a eliminação de chaves 17 18

Eliminação: Caso 1 Eliminação: Caso 1 Caso 1: eliminação de uma chave em uma página folha, sendo que o número mínimo de chaves na página é respeitado Solução: chave é retirada e os registros internos à página são reorganizados Remover J (árvore com m = 6) 19 20 Eliminação: Caso 2 Eliminação: Caso 2 Caso 2: eliminação de uma chave que não está em um nó folha Caso 2: eliminação de uma chave que não está em um nó folha Solução: sempre eliminamos de páginas folha para tanto, troca-se a chave com sua sucessora imediata (ou predecessora imediata), que está numa folha. A seguir, elimina-se a chave da folha (Caso 1) sucessora imediata: 1ª chave da folha descendente mais à esquerda da página/nó descendente direito predecessora imediata:...? 21 22 Eliminação: Caso 2 Eliminação: Caso 3 Caso 3: eliminação causa underflow na página no. mín. de m/2 1 chaves em pág. não raiz violado Remover M 23 24

Eliminação: Caso 3 Eliminação: Caso 3 Caso 3: eliminação causa underflow na página no. mín. de m/2 1 chaves em pág. não raiz violado Solução: Redistribuição procura-se uma página irmã direta (mesmo nó pai e chave separadora comum) que contenha mais chaves do que o mínimo: se existir, redistribui-se as chaves entre essas páginas senão, vide Caso 4... Remover R Notas: 1. Redistribuição pode provocar uma alteração na chave separadora, que está no nó pai, mas não se propaga! 2. Redistribuição só pode ser aplicada para solução de underflows em páginas folha 25 26 Eliminação: Caso 4 Eliminação: Caso 4 Caso 4: ocorre underflow e redistribuição não pode ser aplicada implicaria underflow em qualquer das páginas irmãs diretas 27 Caso 4: ocorre underflow e redistribuição não pode ser aplicada implicaria underflow em qualquer das páginas irmãs diretas Solução: Concatenação combina-se o conteúdo da página com o de uma irmã direta e adiciona-se a chave separadora da página pai para formar uma única página concatenação é o inverso do processo de split rebaixamento de chave da página pai ao invés de promoção como conseqüência, pode ocorrer underflow da página pai 28 Eliminação: Caso 4 Eliminação: Caso 5 Caso 5: underflow da página pai Remover A 29 30

Eliminação: Caso 5 Eliminação: Caso 5 Caso 5: underflow da página pai Solução: utiliza-se concatenação novamente 31 32 Eliminação: Caso 6 Eliminação: Caso 6 Caso 6: diminuição da altura da árvore ocorre quando o nó raiz tem uma única chave e aplica-se a concatenação nos seus nós filhos 33 34 Eliminação (Resumo) Eliminação (Nota 1) 1. Se a chave não estiver numa folha, troque-a com sua sucessora 2. Elimine a chave da folha 3. Se a página continuar com o número mínimo de chaves, FIM 4. Senão (underflow): 4.1. Se uma das páginas irmãs diretas (à esquerda ou direita) tiver mais que o número mínimo de chaves, aplique redistribuição e FIM 4.2. Senão: 4.2.1. Concatene a pág. com uma das irmãs e a chave separadora do nó pai 4.2.2. Se nó pai for raiz e sua última chave foi rebaixada, elimine a raiz e FIM 4.2.3. Senão, se nó pai continuar com o número mínimo de chaves, FIM 4.2.4. Senão (underflow no pai), volte ao passo 4.2.1 para o nó pai 35 Embora esta hipótese não esteja contemplada no algoritmo de eliminação anterior, a operação de concatenação pode não apenas causar um underflow na página pai, mas pode também causar um overflow na própria página concatenada Basta que a página irmã já contenha m 1 chaves Exemplo: Árvore com m = 3 e chaves 55, 60, 61, 56, 70, 80, 64, 99, 100 e 66 inseridas nesta ordem Remover chave 100... 36

Eliminação (Nota 1 cont.) Eliminação (Nota 2) Exemplo (m = 3 e chaves 55, 60, 61, 56, 70, 80, 64, 99, 100 e 66) Remover chave 100: rebaixamento de 99 causa underflow rebaixamento de 70 para corrigir underflow (concatenação) causa overflow! 70 60 64 70 60 64 99 Na redistribuição, não existe regra obrigatória: Estritamente, é necessário mover apenas 1 chave para a página com underflow para restabelecer as propriedades da árvore-b Estratégia usual, no entanto, é redistribuir as chaves de forma equilibrada entre as páginas: Balanceamento dos espaços disponíveis 55 56 61 66 80 100 55 56 61 66 80 99 Solução com split (no quadro...)! 37 38 Desempenho de Árvores B Desempenho de Árvores B Qual a complexidade computacional de pior caso para as operações de busca, inserção e remoção de chaves? Sabemos que, no pior caso, a altura da árvore é dada pelo maior inteiro d tal que: d 1 + log m/2 [ (N+1)/2 ] Qual a complexidade computacional de pior caso para as operações de busca, inserção e remoção de chaves? Sabemos que, no pior caso, a altura da árvore é dada pelo maior inteiro d tal que: d 1 + log m/2 [ (N+1)/2 ] Ou seja, a altura é O( log m/2 N ) Logo, no pior caso, uma busca requer O( log m/2 N ) acessos 39 40 Desempenho de Árvores B Desempenho de Árvores B Qual a complexidade computacional de pior caso para as operações de busca, inserção e remoção de chaves? Toda inserção demanda uma busca ( O( log m/2 N ) acessos ) Além disso, pode demandar operações de split Qual a complexidade computacional de pior caso para as operações de busca, inserção e remoção de chaves? Toda remoção demanda uma busca ( O( log m/2 N ) acessos ) Além disso, pode demandar operações de concatenação Cada split opera sobre um número fixo de páginas Cada concatenação opera sobre um número fixo de páginas Logo, cada split demanda O(1) acessos Logo, cada concatenação demanda O(1) acessos No pior caso, overflows se propagarão até a raiz No pior caso, underflows se propagarão até a raiz Nesse caso, teremos O( log m/2 N ) splits com O(1) acessos cada Nesse caso, teremos O( log m/2 N ) concatenações com O(1) acessos cada Logo, no pior caso, uma inserção requer O( log m/2 N ) acessos 41 Logo, no pior caso, uma remoção requer O( log m/2 N ) acessos 42

Exercício Remova as chaves A, B, Q e R da árvore-b de ordem 5 abaixo Bibliografia M. J. Folk and B. Zoellick, File Structures: A Conceptual Toolkit, Addison Wesley, 1987. 43 44