O que é uma árvore B

16 

Full text

(1)

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. Balanceadatodas as

folhas estão no mesmo nível.

(2)

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

(3)

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

(4)

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;

};

(5)

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

(6)

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

(7)

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

    

(8)

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 5Má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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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.

(14)

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

(15)

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ó.

(16)

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

Figure

Updating...

References

Updating...

Download now (16 pages)