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

Documentos relacionados
Busca em Memória. Secundária

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

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

Árvores. Exemplo de árvore 2-3-4

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

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

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

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

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. Árvores B. Estrutura de Dados II Jairo Francisco de Souza

Listas Lineares. continuando...

Árvore Binária de Busca. Prof. César Melo

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

(a) todos os nós irmãos da árvore m-ária são interligados; (b) todas as conexões pai-filho são removidas, exceto a primeira de cada grupo.

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

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

ÁRVORE BINÁRIA DE BUSCA

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

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

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Universidade Federal de Mato Grosso Estrutura de Dados II

ACH2024. Aula 16 Árvores B Parte 1. Prof Helton Hideraldo Bíscaro

Árvores AVL e Árvores B. Jeane Melo

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

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

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

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

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

Árvores-B (Parte I) 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. Árvores binárias

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Algoritmos e Estruturas de Dados II IEC013

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

Árvores Binárias de Busca

Prof. Jesus José de Oliveira Neto

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

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

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

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

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

DAINF - Departamento de Informática

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

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

Pesquisa Externa. Pesquisa Externa. Sistema de Paginação. Sistema de Paginação

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

void excluir(tipochave ch, ArvoreB *arvore) { int diminuiu; No *aux; excluiraux(ch, arvore, &diminuiu); if (diminuiu && (*arvore)->numchaves == 0) {

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

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

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

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

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

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

INF 1010 Estruturas de Dados Avançadas

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

Estruturas de dados e algoritmos fundamentais

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11

Listas Lineares Ordenadas

Estrutura de Dados II. Prof. Sérgio Portari

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

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

ÁRVORES. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa

BCC202 - Estrutura de Dados I

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Árvores binárias de busca

Árvores binárias de busca

vazio insercaoemarvoreb (Arvore *arvore, TipoChave K) inicio encontre um nó folha para inserir K; enquanto (1) encontre uma posição apropriada no

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

Árvores & Árvores Binárias

Transformação de Chave. (Hashing)

Acesso Sequencial Indexado

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Estrutura de Dados Listas

vazio insercaoemarvoreb (Arvore *arvore, TipoChave K) inicio encontre um nó folha para inserir K; enquanto (1) encontre uma posição apropriada no

Carlos Eduardo Batista. Centro de Informática - UFPB

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

MCTA001 Algoritmos e Estruturas de Dados I. Aula 08 Árvores (parte 1) Laboratório

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

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

Transformação de Chave - Hashing

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Árvore binária - definição

CHAPTER ONE. Uma árvore B de ordem "m" (máximo de filhos para cada nó) é uma árvore que atende as seguintes propriedades:

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Árvores binárias de busca

Lista com saltos - generalidades

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

UNIVERSIDADE DA BEIRA INTERIOR

Classificação e Pesquisa

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Árvores binárias de busca

- Busca e Ordenação em memória Secundária. Estrutura de Dados II

Transcrição:

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Busca em Memória Secundária e Gomes da Costa yandre@din.uem.br 1 Busca de um item em uma massa de dados que não cabe na memória principal; Procura-se reduzir ao máximo o número de acessos à memória secundária; Por que o tempo de acesso à memória secundária é tão mais lento? 2 Segundo (Drozdek, 2002), o tempo de acesso em memória secundária é dado por: T acesso = T latência + T procura + T transferência T latência : tempo decorrido até que o disco gire para que a cabeça de leitura se posicione sobre o bloco a ser lido; T procura : deslocamento da cabeça de leitura até a trilha a ser lida; T transferência : dado pela taxa de transferência (capacidade do dispositivo); 3 1

Um exemplo: Supondo um acesso à um dispositivo que gira a 3000 rpm em que se pretende transferir 5 kbytes; Neste caso: T latência = 10 ms (tempo de meia volta); Supondo que sejam gastos 40 ms para se localizar a trilha a ser lida: T procura = 40 ms; Considerando um dispositivo com taxa de transferência de 1000 kbytes/s: T transferência = 5 ms; Assim: T acesso = 10 ms + 40 ms + 5 ms = 55 ms 4 O exemplo mostra um tempo de acesso da ordem de ms; O tempo de execução de instruções pela CPU é da ordem de microssegundos, nanossegundos, ou mais rápido; Assim fica clara a necessidade de diminuir acessos em memória secundária; 5 Árvore B (Bayer e McCreight, 1972) Estrutura projetada para diminuir o número de acessos em uma busca; Agrupa vários itens em um só nó, formando um agrupamento conhecido como página; página 6 2

Observe que a ordem da árvore se altera: neste exemplo ela se torna quaternária; Diminuição do número de buscas na estrutura; Um exemplo (Ziviani, 2002): Busca em uma massa com 10 6 (1 milhão) de registros; Em uma ABB: log 2 10 6 20 Na árvore descrita anteriormente: log 4 10 6 10 Se ampliássemos o número de registros por nó para 127, qualquer elemento poderia ser encontrado com, no máximo, 3 buscas na estrutura; 7 Número de registros por página: Segundo (Drozdek, 2002), na prática o número de registros por página deve variar entre 50 e 500; De acordo com (Cormen et al., 2002), este número pode variar entre 50 e 2000; De fato, é interessante que este número seja tal que corresponda aproximadamente ao tamanho de um bloco do disco (aproveita-se melhor o tempo de acesso); 8 Exercícios: Calcule o tempo de acesso de 250 kbytes de dados em um disco que gira a 7200 rpm e que possui taxa de transferência de 2000 kbytes/s. Considere ainda que a cabeça de leitura gasta 70 ms para se deslocar de um extremo ao outro do disco e que, nesta situação, a cabeça se encontra inicialmente em um extremo do disco e a trilha a ser lida encontra-se à uma distância que equivale a 2/3 da distância máxima possível a ser percorrida; Qual é o número médio (aproximado) de buscas realizadas para se encontrar um registro em uma Árvore que possui 63 registros por página e que armazena uma massa de 10 8 registros? 9 3

Definição de Árvore B: Segundo (Ziviani, 2002), uma Árvore B de ordem m * é tal que: Cada página possui, no mínimo m registros (e m+1 descendentes) e no máximo 2m registros (e 2m+1 descendentes), exceto a página raiz, que pode conter entre 1 e 2m registros; Todas as páginas folha aparecem no mesmo nível. * Diverge de outras definições. 10 Relação entre as páginas e suas páginas filhas: chave 1 chave 2... chave 2m pág 1 pág 2 pág 3 pág 2m pág 2m+1 Registros armazenados na página i são menores do que a chave i e maiores do que a chave i-1; 11 Exemplo de Árvore B: 30 10 20 40 50 3 4 8 9 11 13 17 25 28 33 36 45 48 52 55 Ordem m=2 com 3 níveis; Todas as páginas contêm 2, 3 ou 4 registros, exceto a raiz; 12 4

Particularidades de Árvore B: Depois de uma série de inserções e remoções a árvore apresenta taxa de ocupação de 69% (Drozdek, 2002); Crescimento das folhas para a raiz; Inserção de registros: Caso trivial: inserir o registro em uma página com menos de 2m registros; Caso a página já tenha 2m registros, deve-se criar uma nova página; 13 Exemplos de inserção: Seqüência a inserir: 50, 20, 30, 37, 42, 47, 41 e 60; Árvore de ordem m=2; a b c 50 20 50 20 30 50 d 20 30 37 50 14 Criação de nova página: Transfere-se o elemento central da seqüência que provocou o estouro para a página do nível superior e cria-se duas páginas com os demais elementos; Note que, isto também pode provocar estouro na página do nível superior; Ainda resta inserir: 42, 47, 41 e 60; d 20 30 37 50 15 5

Continuando a inserção: Próximo registro: chave 42; d 20 30 37 50 Seqüência ordenada das 2m+1 chaves: 20, 30, 37, 42, 50; A chave central (37) é transferida para o nível superior e cria-se duas páginas com as demais; e 37 20 30 42 50 16 Continuando a inserção: f 37 Inserindo 47 Inserindo 41 20 30 42 47 50 g 37 20 30 41 42 47 50 17 Continuando a inserção: Inserindo 60 h 37 47 20 30 41 42 50 60 Exercício: A partir desta árvore descreva a inserção de uma seqüência de registros com chaves 31, 32,, 44, 61 e 62. 18 6

Árvore obtida: i 37 47 20 30 31 32 41 42 44 50 60 61 62 Exercício: Agora, faça a inserção dos registros com chaves 33 e 45. 19 Árvore obtida: j 31 37 47 20 30 32 33 41 42 44 45 50 60 61 62 Exercício: Agora, faça a inserção dos registro com chave 63. 20 Árvore obtida: k 31 37 20 30 32 33 41 42 44 45 50 60 62 63 21 7

Operação de remoção: Caso trivial 1: Quando o registro a ser removido estiver em uma página folha com pelo menos m+1 registros; Quando o registro a ser removido não estiver numa página folha: Substitui-se o registro por um que contenha uma chave adjacente (antecessora ou sucessora); Caso trivial 2: Quando o substituo estiver originalmente em uma página com, pelo menos, m+1 registros; 22 Exemplo (caso trivial 1) Remover o registro com chave 38 da seguinte árvore: 31 37 20 30 32 33 38 40 41 42 44 45 50 60 62 63 23 Exemplo (caso trivial 2) Remover o registro com chave da seguinte árvore: 31 37 20 30 32 33 40 41 42 44 45 50 60 62 63 24 8

42 31 37 20 30 32 33 40 41 44 45 50 60 62 63 25 E quando, após uma remoção, uma página fica com menos de m registros? Neste caso uma propriedade da Árvore B é violada; Com isto, é necessário tomar emprestado um registro da página vizinha; Nesta situação, duas coisas podem ocorrer: O número de registros da página vizinha é maior que m. Assim, basta tomar um registro emprestado e trazê-lo para a página em questão via página pai. 26 Exemplo Remover o registro com chave 33 da seguinte árvore: 31 37 20 30 32 33 40 41 42 44 45 50 60 62 63 27 9

31 40 20 30 32 37 41 42 44 45 50 60 62 63 28 A segunda possibilidade é a de que a página vizinha também tenha exatamente m registros (neste caso as duas juntas têm 2m-1 registros); Nesta situação as duas páginas devem ser fundidas em uma só; 29 Exemplo: remoção do registro com chave 41 da seguinte árvore: 31 40 20 30 20 30 32 37 41 42 31 32 37 40 42 30 10

Observe que, dependendo do contexto, o processo pode se propagar até a raiz; Exemplo: remover o registro com chave 41 da seguinte árvore: 31 40 20 30 32 37 41 42 44 45 50 60 62 63 31 Etapa 1: 31 20 30 32 37 40 42 44 45 50 60 62 63 32 Etapa 2: 31 20 30 32 37 40 42 44 45 50 60 62 63 33 11

Resultado: 31 20 30 32 37 40 42 44 45 50 60 62 63 34 Eliminação de uma chave em Árvore B: 1. Se a chave não estiver numa folha, troque-a com seu sucessor imediato. 2. Elimine a chave da folha. 3. Se a folha continuar com o número mínimo de chaves, fim. 4. A folha tem uma chave a menos que o mínimo. Verifique as páginas irmãs da esquerda e direita: 4.1.se uma delas tiver mais que o número mínimo de chaves, aplique redistribuição. 4.2.senão concatene a página com uma das irmãs e a chave pai. 5. Se ocorreu concatenação, aplique passos de 3 a 6 para a página pai. 6. Se a última chave da raiz for removida, a altura da árvore diminui. 35 Exercício: Dada a seguinte Árvore B, descreva o estado da mesma após realizar a remoção dos registros com seguintes seqüências de chave; 45, 30 e 28; 50, 8, 10, 4, 20, 40, 55, 17, 33, 11 e 36; 3, 9 e 52. 10 20 30 40 50 3 4 8 9 11 13 17 25 28 33 36 45 48 52 55 36 12

Soluções possíveis: 10 25 40 50 3 4 8 9 11 13 17 20 33 36 48 52 55 13 3 9 25 48 52 13 25 48 37 Uma forma de declarar a estrutura de uma página de ordem 2: const int m = 2; typedef struct no_arvoreb arvoreb; struct no_arvoreb { int num_chaves; int chaves[2*m]; arvoreb *filhos[2*m+1]; bool folha; }; 38 Algoritmo de varredura em ordem: void em_ordem(arvoreb *raiz) { int i; if (raiz!= NULL) { for (i = 0; i < raiz->num_chaves; i++) { em_ordem(raiz->filhos[i]); printf("\n%d", raiz->chaves[i]); } em_ordem(raiz->filhos[i]); } } 39 13

Algoritmo de Busca (busca na página): int busca_binaria(arvoreb *no, int info) { int meio, i, f; i = 0; f = no->num_chaves-1; while (i <= f) { meio = (i + f)/2; if (no->chaves[meio] == info) return(meio); //Encontrou. Retorna a posíção em que a chave está. else if (no->chaves[meio] > info) f = meio - 1; else i = meio + 1; } return(i); //Não encontrou. Retorna a posição do ponteiro para o filho. } 40 Algoritmo de Busca (busca na árvore): bool busca(arvoreb *raiz, int info) { arvoreb *no; int pos; //posição retornada pelo busca binária. no = raiz; while (no!= NULL) { pos = busca_binaria(no, info); if (pos < no->num_chaves && no->chaves[pos] == info) return(true); else no = no->filhos[pos]; } return(false); } 41 Trabalho prático: Implementar em linguagem C as operações de inserção e remoção em uma Árvore B de ordem 2; O trabalho pode ser feito individualmente ou em dupla; A data de entrega é 02/10/2006; O código fonte deverá ser apresentado pela dupla ao professor; A nota será individual, pois dependerá inclusive do desempenho durante a apresentação; Se forem identificados trabalhos copiados, todos os envolvidos terão nota zero. 42 14

Referências Bibliográficas: Cormen, Thomas H. et al. Algoritmos teoria e prática. Rio de Janeiro: Elsevier, 2002; Drozdek, Adam. Estrutura de Dados e Algoritmos em C++. São Paulo: Pioneira Thomsom Learning, 2002; Ziviani, Nivio. Projeto de Algoritmos com implementações em Pascal e C. São Paulo: Pioneira Thomsom Learning, 2002; 15