36
Árvore B

Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Árvore B

Page 2: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Motivação

• Quando os dados são grandes demais para caber na memória, o número de acessos a disco se torna importante

• O acesso a disco é muito caro comparado com acesso à memória– Um acesso a disco é caro comparado com

acesso a memória– Maior parte do tempo gasto com acesso a

disco

Page 3: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Definição de Árvore-B

• Uma árvore B de ordem m é uma árvore m-direcional tal que:– Todas as folhas estão no mesmo nível– Todos os nós internos com exceção da raiz

estão restritos a terem no máximo m filhos não vazios e pelo menos m/2 filhos não vazios

– A raiz deve ter pelo menos m filhos não vazios

Page 4: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Exemplo de uma árvore B

Page 5: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Inserção em uma árvore B

• Adicione a nova chave à folha apropriada• Overflow?

– Divida o nó em dois no mesmo nível– Promova a chave do meio

Page 6: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Inserção em uma árvore B

• Insira a nova entrada na folha apropriada; • nóCorrente = folha; • while (overflow do nóCorrente) • Divida nóCorrente em dois nós no mesmo

nível e promova a chave mediana par o pai do nó corrente

• nóCorrente := parent of nóCorrente ;

Page 7: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Exemplo inserindo H

Page 8: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Inserindo E, K, e Q

Page 9: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Inserção de M requer split(M chave do meio)

.

Page 10: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

F, W, L, e T

Page 11: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Z requer split

Page 12: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

D

Page 13: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Z

Page 14: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Remoção

• Se a entrada a ser removida não está em uma folha, troque-a com seu sucessor (ou predecessor) na ordem natural das chaves. – Aí remova a entrada da folha

• Se a folha contém mais que o número mínimo de entradas então não há mais nenhuma ação

• Caso contrário...

Page 15: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Remoção em uma árvore B

• Se o nó contém o número mínimo de entradas, considere os dois irmãos imediatos do nó: – Se um dos irmão têm mais que o número

mínimo de entradas, então redistribua uma entrada deste irmão para o nó pai e uma entrada do nó pai para o filho “deficiente”.

Page 16: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Exemplo2 – Remover C

Page 17: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Acha sucessor D, move D acima para substituir C. Nó com poucas chaves

Page 18: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Consolida E com A B

Page 19: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

F ficou com poucas chaves, mas irmão tem chaves suficientes. Toma M do

irmão, sobe-a desce J para juntar com F. Nó KL fica religado à direita de J

Page 20: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Diversos• O número máximo de elementos em um nó é

m-1 • O número mínimo de elementos em um nó é

ceil (m/2) -1 • A ordem de uma árvore B é escolhida de

forma que o tamanho de um nó cheio seja menor que o tamanho de bloco de disco, mas o mais próximo que for possível

• Existem diversas variantes de árvore B

Page 21: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Altura de Árvore B

• Qual a maior altura de uma árvore B com N entradas?

• Esta pergunta é importante pois a altura da árvore definirá o limite superior para o número de acesso a discos

Page 22: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Remoção em árvore B

Page 23: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Antes do Merge (irmão a esquerda) Após merge

Antes do Merge (irmão a direita)Após merge

Page 24: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

• Se um valor que está em um nó de transição (não folha) for excluído, ele deverá ser substituído:a ) pelo dado mais à direita de sua subárvore

esquerda; oub ) pelo dado mais à esquerda de sua subárvore

direita.

Page 25: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Excluindo 45

Page 26: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

É substituido pelo 45

Page 27: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Na exclusão de um dado de um nó folha

podem ocorrer duas situações :

1 ) Após a remoção, o nó ainda possui uma quantidade adequada dedados

2 ) Após a remoção, o nó ultrapassou o limite mínimo de dados. Neste caso, pode-se tentar alguma das opções abaixo :

a ) Tente emprestar um nó do irmão IMEDIATAMENTE à esquerda; ou

b ) Se não for possível, tente emprestar do irmão da DIREITA; ou

c ) Se ambas falharem, fazer a fusão do nó com um de seus irmãos

Page 28: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Dada a árvore

Page 29: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Remoção

Remover 110 ( situação 2.a - empresta do irmão da esquerda):

Page 30: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Remover 110 ( situação 2.a - empresta do irmão da esquerda):

Page 31: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas
Page 32: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas
Page 33: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas
Page 34: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Rotação Direita/Esquerda

(

Page 35: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Merge

Page 36: Árvore B - Instituto de Informática (INF)eduardo/ed2/ArvoreB.pdf · Definição de Árvore-B • Uma árvore B de ordem m é uma árvore m-direcional tal que: – Todas as folhas

Encolhendo uma árvore B

Original

Após o merge

Resultado final