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

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

Indexação de Arquivos. Memória × Disco Acesso a qualquer parte da memória leva o mesmo tempo –(Ignorando fatores como localidade de referência e cache)

Apresentações semelhantes


Apresentação em tema: "Indexação de Arquivos. Memória × Disco Acesso a qualquer parte da memória leva o mesmo tempo –(Ignorando fatores como localidade de referência e cache)"— Transcrição da apresentação:

1 Indexação de Arquivos

2 Memória × Disco Acesso a qualquer parte da memória leva o mesmo tempo –(Ignorando fatores como localidade de referência e cache) Disco: Acesso seqüencial é mais rápido que acesso randômico –Características mecânicas dos dispositivos Mover as cabeças de leitura e gravação é mais lento que o movimento de rotação Acesso a blocos do mesmo cilindro é rápido

3 Um dispositivo de disco típico

4 Estruturas de dados para discos Uso de ponteiros deve ser minimizado Acesso seqüencial é incentivado Se é necessário acessar o disco, então uma boa quantidade de dados deve ser lida ou escrita pra não desperdiçar a viagem –Acesso é feito em blocos de tamanho constante

5 Árvores de Busca n-árias Podemos ver que as árvores binárias de busca não são adequadas para serem usadas em disco (ponteiros demais!) Uma solução é admitir mais de uma chave por nó C 1 C 2 C 3... C n < C 1 C 1 < C 2 C 2 < C 3 C n-1 < C n C n

6 Árvores de busca n-árias balanceadas Idealmente, gostaríamos de empregar árvores de busca n-árias balanceadas –Cada nó deveria ser mantido cheio (para não desperdiçar operações de leitura) –O tempo de busca a uma chave deveria ser logarítmico, isto é, O (log N) Uma estrutura de dados que tem essas qualidades é a B-tree, que nada mais é do que uma ABB n-ária à qual se impõe critérios adicionais

7 Características das B-trees (Árvores-B) Cada nó, exceto o nó raiz, tem entre n/2 e n chaves –O nó raiz pode ter apenas 1 chave (ou nenhuma, se a árvore estiver vazia) Cada nó é da forma P 0 C 1 P 1 C 2 P 2 …C k P k, onde P i é –Um ponteiro para outro nó da árvore contendo apenas chaves cujos valores são maiores ou iguais a C i e menores que C i –1 [se o nó é interno] ou –Um ponteiro nulo [se o nó é folha]

8 Busca em B-trees Algoritmo análogo ao usado em árvores de busca. Seja X o valor buscado 1.Nó raiz é lido 2.Faz-se uma busca binária nas k chaves do nó Se X for encontrado, o algoritmo termina retornando Verdadeiro 2.2. Senão, X corresponde ao intervalo de algum P i Se P i é nulo, o algoritmo termina retornando Falso Senão, o nó apontado por P i é lido e retorna-se ao passo 2

9 Busca em B-trees - Exemplo 13 X =

10 Inserção em B-trees Buscar o nó folha onde o valor X deve ser inserido Se o nó ainda tem lugar, algoritmo termina Senão, dividir as n+1 chaves em três grupos: [1] as n/2 menores chaves, [2] a chave mediana e [3] as n/2 maiores chaves O grupo [1] permanece no nó folha e o grupo [3] vai formar um novo nó folha A chave mediana, é inserida (recursivamente se necessário) no nó pai –Se não existe nó pai, uma nova raiz é criada

11 Inserção em B-trees 8 N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: N=4 Ordem de Inserção: ` N=4 Ordem de Inserção: ` N=4 Ordem de Inserção: ` N=4 Ordem de Inserção: `

12 Remoção em B-trees O algoritmo de exclusão de uma chave é um pouco mais complexo do que o de inserção Há vários casos a serem considerados: –Nó que contém a chave é folha ou interno? –Há risco de underflow (nó fica com chaves de menos) ou não?

13 Remoção em B-trees Se a chave está num nó folha –Se o nó não corre risco de underflow, a chave é removida e o algoritmo termina –Senão, 2 situações são possíveis: O nó vizinho à esquerda ou à direita têm uma chave para emprestar, isto é, não correm o risco de underflow. Neste caso fazer operação de empréstimo Ambos os vizinhos têm o número mínimo de chaves. Neste caso fazer a operação dee combinação do nó com um de seus vizinhos

14 Operação de Empréstimo Remoção da chave

15 Operação de Combinação Remoção da chave ? Pode ocasionar nó interno com underflow ? Solução é vista a seguir

16 Remoção em B-trees Se a chave está num nó interno –Se é possível fazer uma operação de empréstimo entre os nós filhos à esquerda e à direita, então fazê- la e remover a chave do filho que a recebeu

17 Remoção em B-trees Se a chave está num nó interno e não é possível fazer uma operação de empréstimo entre os nós filhos à esquerda e à direita, –Combine-os (junto com a chave) e remova a recursivamente a chave do nó filho resultante –Se o nó interno resultante estiver com underflow, aplicar um empréstimo com um nó vizinho se possível, ou então uma combinação

18 Exemplo de Remoção


Carregar ppt "Indexação de Arquivos. Memória × Disco Acesso a qualquer parte da memória leva o mesmo tempo –(Ignorando fatores como localidade de referência e cache)"

Apresentações semelhantes


Anúncios Google