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

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

Indexação de Arquivos Página de rosto.

Apresentações semelhantes


Apresentação em tema: "Indexação de Arquivos Página de rosto."— Transcrição da apresentação:

1 Indexação de Arquivos Página de rosto

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ó C1 C2 C Cn ≥ Cn < C1 ≥ C1 < C2 ≥ Cn-1 < Cn ≥ C2 < C3

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 P0C1P1C2P2…CkPk, onde Pi é Um ponteiro para outro nó da árvore contendo apenas chaves cujos valores são maiores ou iguais a Ci e menores que Ci –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 Nó raiz é lido Faz-se uma busca binária nas k chaves do nó. 2.1 . Se X for encontrado, o algoritmo termina retornando Verdadeiro 2.2. Senão, X corresponde ao intervalo de algum Pi . 2.2.1 Se Pi é nulo, o algoritmo termina retornando Falso 2.2.2 Senão, o nó apontado por Pi é lido e retorna-se ao passo 2

9 Busca em B-trees - Exemplo
13 4 8 17 20 1 2 5 7 9 12 15 16 18 19 18 19 21 22

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 13 N=4 Ordem de Inserção: 8 5 15 12
` 4 8 5 7 9 12 15 16 1 2 18 19 21 22 17 20 5 7 N=4 Ordem de Inserção: 8 5 15 12 9 12 15 16 1 2 5 7 N=4 Ordem de Inserção: 8 5 15 12 ` 17 19 9 12 1 2 5 7 N=4 Ordem de Inserção: 8 5 15 12 ` 9 12 15 16 1 2 18 19 5 7 N=4 Ordem de Inserção: 8 5 15 12 ` 9 12 15 16 1 2 5 7 N=4 Ordem de Inserção: 8 5 15 12 9 12 8 13 15 16 5 7 N=4 Ordem de Inserção: 8 5 15 12 8 N=4 Ordem de Inserção: 5 8 N=4 Ordem de Inserção: 8 5 N=4 Ordem de Inserção: 8 5 15 N=4 Ordem de Inserção: 8 5 15 12 5 7 N=4 Ordem de Inserção: 8 5 15 12 7 12 15

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 7 13 4 9 10 12 5 8 4 8 17 20 1 2 5 7 5 7 15 16 18 19 21 22

15 Operação de Combinação
Remoção da chave 7 ? Pode ocasionar nó interno com underflow ? Solução é vista a seguir 13 4 4 8 17 20 1 2 5 7 5 7 10 12 15 16 18 19 21 22

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 13 4 9 10 12 4 8 17 20 1 2 5 7 5 7 15 16 18 19 21 22

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 18 19 21 22 1 2 15 16 13 4 4 8 17 20 1 2 5 7 10 12 15 16 18 19 21 22


Carregar ppt "Indexação de Arquivos Página de rosto."

Apresentações semelhantes


Anúncios Google