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

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

Operações de Inserção e Remoção – BTree Resumo Profa. Sandra de Amo BCC - UFU.

Apresentações semelhantes


Apresentação em tema: "Operações de Inserção e Remoção – BTree Resumo Profa. Sandra de Amo BCC - UFU."— Transcrição da apresentação:

1 Operações de Inserção e Remoção – BTree Resumo Profa. Sandra de Amo BCC - UFU

2 Inserção de Registros nas Folhas  Caso a ocupação não fique acima da máxima : insere, não altera nada nos niveis superiores  Caso a ocupação fique acima da máxima  Tenta distribuição com vizinho à direita.  Caso não der: tenta distribuição com vizinho à esquerda  Caso não der: Divide folha com nó inserido, produzindo dois nós N1 e N2.  N2 precisa de um ponteiro vindo do nó acima !

3 Inserção: distribuição nas folhas  Não há aumento no número de folhas  Não há aumento de ponteiros vindo do nivel superior  Não há aumento de registros no nó pai  Não há modificações propagadas para os níveis superiores ao nível do nó pai.  Só há modificação de registro R no nó pai:  R = registro do lado esquerdo do ponteiro apontando para a folha da direita.

4 Inserção: Divisão de 1 folha em 2 folhas F1 e F2  Número de folhas cresce de um.  Número de ponteiros saindo do nó pai cresce de um.  Número de registros no nó pai deve crescer de um. Caso nó pai não tenha ocupação máxima antes da alteração:  Primeiro registro de F2 sobe para nó pai em posição adequada.  Ponteiro à esquerda do novo nó deve apontar para F1  Ponteiro à direita do novo nó deve apontar para F2

5 Inserção: Divisão de 1 folha em 2 folhas F1 e F2 Caso nó pai tenha ocupação máxima antes da alteração:  Subida de registro para o nó pai causa overflow no nó.  Nó pai fica com 2d+1 elementos após “subida”  Solução simples  Divide nó pai em dois nós N1 e N2 com d elementos cada (ocupação mínima)  Elemento do meio M sobe para nó pai do pai.  Ponteiros do nó pai para seus filhos não são alterados !  Ponteiros à esquerda e à direita de M apontam para N1 e N2 respectivamente

6 Remoção de Registros nas Folhas  Caso a ocupação não fique abaixo da mínima : remove, não altera nada nos niveis superiores  Caso a ocupação fique abaixo da minima  Tenta distribuição com vizinho à direita.  Caso não der: tenta distribuição com vizinho à esquerda  Caso não der: Junta folha com nó removido com à direita ou, se não der, com a esquerda.

7 Remoção: distribuição nas folhas  Não há diminuição no número de folhas  Não há diminuição de ponteiros vindo do nivel superior  Não há diminuição de registros no nó pai  Não há modificações propagadas para os níveis superiores ao nível do nó pai.  Só há modificação de registro R no nó pai:  R = registro do lado esquerdo do ponteiro apontando para a folha da direita envolvida na distribuição

8 Remoção: Junção de 2 folhas  Número de folhas decresce de um.  Número de ponteiros decresce de um.  Número de registros no nó pai decresce de um.  Caso nó pai não fique abaixo da ocupação minima  Remove-se registro R à esquerda do ponteiro apontando para o nó do nível inferior, à direita.  Caso nó pai fique abaixo da ocupação minima  Tenta JUNTAR com nó irmão, à direita ou à esquerda.  Caso não der para juntar (pois o resultado teria ocupação maior do que a máxima), DISTRIBUI com um dos nós irmãos (tente primeiro o da direita, se não der, tente o da esquerda).

9 Remoção: Junção de nós N1 e N2 em um nível intermediário I  Há diminuição de nós no nível I.  Porém o número K de ponteiros saindo do nível I deve continuar o mesmo que antes da junção, pois o nível abaixo (I+1) necessita de K ponteiros !  Logo, é necessário que apareça um novo registro no nível I. (1)  Há diminuição de ponteiros vindo do nível I-1 (pois houve diminuição de nós no nível I).  Logo, há diminuição de registros no nível I-1. (2)  De (1) e (2) conclui-se que  um registro do nível I-1 deve descer para o nível I  Qual é este nó que desce ?  Registro R à esquerda do ponteiro apontando para o nó N2 (da direita) DESCE para o novo nó juntado N1+N2.  Este ponteiro da esquerda é eliminado do nível I-1 Modificação se propaga recursivamente para o nível I-1, já que houve diminuição de nós neste nível

10 Remoção: Distribuição de elementos entre nós N1 e N2 em um nível intermediário I  Não há diminuição de nós no nível I.  Não há diminuição de ponteiros vindo do nível I-1.  Não há diminuição de registros no nível I-1

11 Entretanto, as coisas não são tão simples assim... Supondo que o último registro do nó N1 virou primeiro registro do nó N Nó N1 Nó N2 Nível I - 1 Nível I Nível I+1 ≥ 17 < ≤ chave < 22 ≥30 22 ≤ chave < 30 1 nó para 2 ponteiros ?? 1 ponteiro para 2 nós ?? < 22 ≥ 22 O ponteiro vermelho não pode ser eliminado. Logo, o preto será eliminado. O registro 17 deve sumir do nó N1! É preciso mais um registro entre o 20 e o 30 para ganhar um ponteiro ! ???

12 Ajuste final ≥ 17 < ≤ chave < 2222 ≤ chave < 30 ≥30 ≥ 17 < 17 ≥ 13 < 17

13 Exercicio para entregar  Você acha que o ajuste final poderia ser feito “subindo” o 20 e descendo o 22 ao invés de “subir” o 17 e descer o 22 ? Explique sua resposta ! Sugestão: para onde apontariam os ponteiros à direita de 17 e à esquerda de 22 ? E o ponteiro à direita do 22 ? Reveja slides 11, 12 e 13 ? ??

14 Exercicio: Remove 34* *3*5*7*8*14*16*18*19*20*21*22*24*29*27* 33*34* 50


Carregar ppt "Operações de Inserção e Remoção – BTree Resumo Profa. Sandra de Amo BCC - UFU."

Apresentações semelhantes


Anúncios Google