Estrutura de Dados
Tema 7: Árvore Multidirecional (Árvore B.)
Definida por Rudolf Bayer em 1971 no Boeing Scientific Research Labs.
Sua definição foi motivada pela necessidade de diminuir o tempo de acesso a dados armazenados em memória
secundária.
O tempo de acesso à memó-ria secundámemó-ria ainda hoje é bem maior que o tempo de acesso à memória principal.
O que é uma árvore B
Árvore B é multidirecional balanceada.
Multidirecional cada nó (ou página) pode armazenar várias k chave (ou elementos) e, assim, apontar parak+1filhos, onde k≥1. Balanceadatodas as
folhas estão no mesmo nível.
Características de uma árvore B
Raiz:o nó inicial da árvore;
Grau:o número de filhos que um nó possui;
Nível ( ou profundidade) :a distância de um nó até a raiz;
Altura:o maior nível encon-trado na árvore. A altura de uma árvore B com nnós é sempre lg(n);
Folha:o nó que não possui filho.
Características de uma árvore B
Ordem: quantidade máxima de filhos que um nó pode conter.
Se a árvore tem ordem n:
poderá ter até n-1chaves k1, ..., knem cada nó.
as chaves dentro de um nó ficam ordenadas. Assim,
k1 ≤ k2 ≤ ... ≤ kn-1.
cada nó poderá ter no máximo nfilhos.
todo nó que possua tchaves (t ≤ n-1) terá t+1filhos.
Altura da árvore é 2 Todos as folhas estão no mesmo nível.
Qtd. máxima de chaves: 3-1
Qtd. mínima de chaves:
M S
E J P
A D T V
X
G L O Q R Z
Raiz
Folha
Organização das chaves
Seja k uma chave pertencente a um nó não folha de uma árvore. Podemos afirmar que:
na sub-árvore à esquerda de ksó existirão chaves menores ou iguais a k;
na sub-árvore à direita de ksó existirão chaves maiores que k.
Organização das chaves
30 60
10 21 45
5 8 88 95
75
15 17 26 32 44 53 62
Buscar uma chave x em uma Árvore B de ordem n
k1 k2 k3 ... Kn-2 Kn-1
Buscar uma chave x em uma Árvore B de ordem n
A busca se inicia pela raiz; Procura-se x no nó atual:
Se x < k1, a busca é repetida em p1;
Se k1< x <k2, a busca se repete em p2; se k2< x < k3, a busca se
repete em p3; ...;
se kn-2 < x < kn-1, a busca se repete em pn-1;
Se x > kn-1, a busca se
repete em pn.
Exemplificando a busca
30 60
10 21 45
5 8 88 95
75
15 17 26 32 44 53 62
#define ordem 10
struct no_arvoreB { int num_chaves; char chaves[ordem-1]; arvoreB *filhos[ordem]; int ehFolha;
};
Continuando
Tema 7: Árvores B.
I nserção em uma Árvore B
As inserções devem acontecer na folha. Buscar a folha correta para a inserção.
Verificar se o limite máximo de chaves será ultrapassado com a nova inserção:
Se não ultrapassar, inserir a nova chave no local apropriado, mantendo a ordenação dos elementos dentro do nó;
Caso contrário realizar uma cisão (quebra do nó)
Cisão de um nó
Ocorre quando se deseja armazenar uma quantidade de chaves maior que o máximo permitido e, assim, o nó se quebra ao meio. 1) A folha se quebra em duas partes; 2) A chave que estiver no
Sendo uma árvore B de ordem 3, inserir os elementos: 84, 17, 63
59
10 21 81 95
I nserção em uma Árvore B
Sendo uma árvore B de ordem 4, inserir os elementos: 62, 27, 82
45 61
7 23 36 58 74 89 95
I nserção em uma Árvore B
Remoção em uma Árvore B
As remoções em uma árvore B devem sempre acontecer em uma folha, pois a retirada de um chave implica a diminuição de um filho.
26 53
Situações envolvendo remoção
1) A chave a ser removida encontra-se em uma folha
A chave é removida sem problemas, já que não há nós descendentes.
Ex: Remover o 84
26 53
7 13 19 34 47 65 84 91
Situações envolvendo remoção
2) A chave a ser removida encontra-se em um nó não folha
A chave é substituída pela chave sucessora (que estará em uma folha). A chave sucessora (que ficou duplicada) será removida.
Ex: Remover o 53.
26 53
7 13 19 34 47 65 84 91
Lembrando: para uma árvore B de ordem n
Máximo de chaves: n-1
Mínimo de chaves:
Após a remoção, o nó poderá tornar-se pequeno demais, ou seja, poderá ficar com quantidade de filhos inferior ao mínimo permitido.
Problemas após a remoção
1) Empréstimo entre nós irmãos
Ocorre quando o nó pequeno demais possui um irmão com mais de chaves.
Resolvendo problemas após a remoção
45 61
7 23 36 58 74 89 95 2 1 n Ordem 5
Ordem 5Máximo: 5 -1=4 e Mínimo:
Resolvendo problemas após a remoção
2 2 1 5
45 74
7 23 36 58 61 89 95 45 61
7 23 36 58 74 89 95
2) Fusão de nós
Quando um nó tornar-se pequeno demais e nenhum irmão puder realizar o empréstimo, deverá ser feita uma fusão de nós.
Exemplo: árvore b de ordem 4.
30 80
10 21 45 60
5 8 95 98
91
15 17 23 29 32 46 53 62 73 78 82 88
Fusão de nós
30 80
10 21 60
5 8 95 98
91
15 17 23 29 32 45 46 53 62 73 78 82 88 30 80
10 21 45 60
5 8 95 98
91
15 17 23 29 32 46 53 62 73 78 82 88
Fusão de nós
30
10 21 60 80 91
5 8 15 17 23 29 32 45 46 53 62 73 78 82 88 95 98 30 80
10 21 60
5 8 95 98
91
15 17 23 29 32 45 46 53 62 73 78 82 88
Agora é sua Vez
Mostre todos os passos executados para inserir os elementos a seguir em uma árvore B de ordem 4.
10; 42; 25; 39; 16; 81; 40; 17; 1; 87; 95
Ordem 4:
máximo: 4-1 = 3
mínimo:
1
2
1
4
10 10 42 10 39 42
25
10 16 39 25 40
42 81 10 16 39 42 81
25 40
10 16 17 39 25 40
42 81 1
10 25 42 39
95
1 39
10 25 40
42 81 87 16 17
1 39
10
42 16 17 87 95
25
40 81
1 39
10 25 40
42 16 17 87 95
Mostre todos os passos executados para remover os elementos a seguir em uma árvore B de ordem 5.
73; 60; 10
Ordem 5:
máximo: 5-1 = 4
mínimo:
2
2
1
5
30
10 21 60 82
5 8 15 17 23 29 32 45 46 53 62 73 78 95 98
30
10 21 60 82
5 8 15 17 23 29 32 45 46 53 62 78 95 98 Remover o 73
30
10 21 60 82
5 8 15 17 23 29 32 45 46 53 62 78 95 98 Remover o 60
30
10 21 62 82
30
10 21 53 82
5 8 15 17 23 29 32 45 46 62 78 95 98 Remover o 60
Remover o 10
30
10 21 53 82
5 8 15 17 23 29 32 45 46 62 78 95 98
Remover o 10
Remover o 10
30
15 21 53 82
5 8 17 23 29 32 45 46 62 78 95 98
30
15 21 53 82
5 8 17 23 29 32 45 46 62 78 95 98
Remover o 10
Remover o 10
30
21 53 82
5 8 15 17 23 29 32 45 46 62 78 95 98
30
21 53 82
Remover o 10
21 30 53 82
5 8 15 17 23 29 32 45 46 62 78 95 98
Finalizando
Tema 7: Árvores B.
Buscas em Árvore B
Uma árvore B possui ordenação semelhante à existente em uma árvore binária de busca. Sejakuma chave qualquer.
Todos os elementos menores que Kestão a sua esquerda.
Buscas em Árvore B
As sub-árvores de uma árvore B possuem as mesmas características de uma árvore B inteira. Assim, a busca pode ser feita recursivamente.
30 60
10 21 45
5 8 88 95
75
15 17 26 32 44 53 62
Buscas em Árvore B
M S
E J P
A D T V
X
G L O Q R Z
I mportância da Árvore B
Árvore B é um tipo de estrutura hierárquica desenvolvida para auxiliar a aplicações que precisam manipular dados que, em função do grande volume, ficam gravados em disco.
As árvores carregam para a memória parte destes dados, para facilitar a
Conceitos básicos de uma árvore B
Todas as folhas têm a mesma altura;
A quantidade máxima de filhos que os nós podem ter determina a ordem da árvore;
Para uma árvore de ordem n cada nó poderá ter, no máximo,n-1
chaves e, no mínimo, chaves.
Se um nó possuirtchaves, possuirát+1filhos.
2
1
n
Operações básicas em uma árvore B
Inserção
Busca
Remoção
Cuidados na inserção
Deve-se ter cuidado com a possibilidade do nó onde ocorreu a inserção ultrapassar o limite máximo de chaves (ficar grande demais). Nestas situações ocorrerá a cisão (split) do nó.
Cuidados na remoção
Deve-se ter cuidado com a possibilidade do nó onde ocorreu a remoção ultrapassar o limite mínimo (ficar pequeno demais).
Nestas situações poderá ocorrer:
▫Empréstimo entre irmãos
▫Fusão de nós