Você está na página 1de 52

rvores B

Prof. Mrcio Bueno


ed2tarde@marciobueno.com / ed2noite@marciobueno.com

Fonte: Material da Profa Ana Eliza Lopes Moura

Situao Problema

Memria Principal
Voltil e limitada

Aplicaes
Grandes quantidades de informao Armazenamento permanente de informaes

Chaves mantidas em memria secundria


Estrutura de Dados II - Mrcio Bueno 2

Situao Problema

rvores de Busca Binria


Apropriada para memria principal Ineficiente em memria secundria
Acesso: cerca de log2n passos Grande quantidade de acessos a disco Acesso feito em blocos

Estrutura de Dados II - Mrcio Bueno

Situao Problema

Necessidade
Reduzir o nmero de acessos a disco

Soluo
Agrupar vrias chaves dentro de um n
Obter com o mesmo acesso vrias chaves Reduzir o nmero de acessos Diminuir o tempo necessrio para inseres, remoes e pesquisas.

Estrutura de Dados II - Mrcio Bueno

rvores Multivias ou M-Vias

Definio
Uma rvore de busca multivias de ordem M uma rvore n-ria na qual todos os ns tm grau menor ou igual a M. Um n com M descendentes contm M-1 valores de chave.

Estrutura de Dados II - Mrcio Bueno

rvores Multivias ou M-Vias

Exemplo: M = 3
20 40 10 15 25 30 45 50

35

Estrutura de Dados II - Mrcio Bueno

rvores Multivias ou M-Vias

Desempenho da Busca
rvores multivias de N chaves e fator de ramificao S. Caminho mdio de busca: O(logSN) Se N = 106 e S = 100, ento uma busca requer, em mdia, log100106 = 3 passos. rvore de busca binria: log2106 = 20 passos.
Estrutura de Dados II - Mrcio Bueno 7

rvores Multivias ou M-Vias

Problema
Inseres aleatrias de maneira irrestrita Aumento do caminho de busca

Soluo
Balanceamento

Estrutura de Dados II - Mrcio Bueno

rvores B

Definio
Bayer e McCreight em 1970. Uma rvore B de ordem M uma rvore de busca multivias balanceada. Uma rvore B ou est vazia ou possui ns com K apontadores e K-1 chaves. OBS: Um n de uma rvore B chamado de pgina.
Estrutura de Dados II - Mrcio Bueno 9

rvores B

Utilizao
rvores B so utilizadas como forma de armazenamento em diversos sistemas de BD comerciais.

Estrutura de Dados II - Mrcio Bueno

10

rvores B

Caractersticas Estruturais:
Na raiz, K deve ser, no mnimo, 2. Ou seja, a raiz possui no mnimo dois filhos e uma chave. Nos demais ns, K deve ser, no mnimo, M/2. Ou seja, os demais ns possuem, no mnimo, M/2 filhos e M/2-1 chaves; Exceo: Folhas no tm filhos.
Estrutura de Dados II - Mrcio Bueno 11

rvores B

Caractersticas Estruturais (cont.):


O valor mximo de K M
Ou seja, todos os ns tm, no mximo, M-1 chaves e M filhos;

Todas as folhas esto no mesmo nvel (balanceamento).

OBS: M deve ser escolhido de forma que o nmero mximo de chaves nos ns da rvore seja uma potncia de 2
Estrutura de Dados II - Mrcio Bueno 12

rvores B

Caractersticas Estruturais (cont.)


Formato do n: N, A0, (C1A1), (C2A2), ..., (CM-1AM-1) onde:

N, M/2 N M, o nmero de entrada ativas (ocupadas) de um n em um dado momento; Ai, 0 i M-1, um apontador para uma subrvore; Ci, 1 i M-1, um valor de chave e Ci < Ci+1; O par (CiAi) chamado de entrada; O apontador A0 tambm definido como Estrutura de 13 entrada. Dados II - Mrcio Bueno

rvores B

Caractersticas Estruturais (cont.)


Definio do n:
typedef char Tipo; struct no { int n; Tipo chv[M-1]; no* pont[M]; };
Estrutura de Dados II - Mrcio Bueno 14

rvores B

Caractersticas (cont.):
Seja uma pgina com D chaves:
Para qualquer chave y, pertencente pgina apontada por A0, y < C1; Para qualquer chave y, pertencente pgina apontada por Ai, 1 i D-1,
Para qualquer chave y, pertencente pgina apontada por AD, y > CD.
Estrutura de Dados II - Mrcio Bueno 15

Ci < y < Ci+1;

rvores B

Comparao em termos de ns e chaves por nvel entre uma rvore binria e uma rvore B de ordem M de mesma altura.
Nvel Binria rvore B 1 n 0 1 n x M-1 chaves 2 ns M ns x (M-1) chaves 1 4 ns M x M ns x (M-1) chaves 2 8 ns M x M x M ns x (M-1) chaves 3 ... ... ... 2n ns Mn ns x (M-1) chaves n
Estrutura de Dados II - Mrcio Bueno 16

rvores B

Observaes:
A ordem M determina as quantidades mximas e mnimas de chaves dentro de cada n. O nmero mnimo de chaves estabelecido para determinar o percentual mnimo de ocupao dentro de um n. Na rvore B esse percentual de 50% (no considerando a raiz).
Estrutura de Dados II - Mrcio Bueno 17

rvore B

Insero
Em uma rvore B, a insero de uma nova chave ocorre sempre em um n folha. Passos:
Localizar a folha dentro da qual a chave deve ser inserida; Se a folha no estiver completa, inserir chave na ordem correta; Se a folha estiver completa, realizar a ciso da pgina.
Estrutura de Dados II - Mrcio Bueno 18

rvore B

Insero: Exemplo - M = 5
Inserir chave 85
85 | | |
60 | 85 | |

Inserir chave 60
Inserir chave 52

52 | 60 |85 |
52 |60 |70 |85

Inserir chave 70

Inserir chave 58 Realizar ciso

Estrutura de Dados II - Mrcio Bueno

19

rvore B

Insero
Ciso de Pgina O processo de ciso consiste em separar a folha completa em duas: folha esquerda e folha direita.

Estrutura de Dados II - Mrcio Bueno

20

rvore B

Insero -> Ciso de Pgina


As M chaves sero divididas em trs grupos: As (M / 2) chaves menores ficam na folha esquerda; As (M / 2) chaves maiores ficam na folha direita; A chave do meio colocada no n pai, se possvel.

Obs.: A diviso inteira


Estrutura de Dados II - Mrcio Bueno 21

rvore B

Insero (Exemplo - cont.)


Inserir chave 58 (antes) 52 |60 |70 |85 Inserir chave 58 (depois)

60 | | |

52 |58 | |

70 | 85 | |
22

Estrutura de Dados II - Mrcio Bueno

rvore B

Insero (Exemplo - cont.)


Inserir chaves 37, 111, 23, 205
60 | | |

23 |37 |52 |58

70|85|111|205

Inserir chave 5 Realizar ciso


Estrutura de Dados II - Mrcio Bueno 23

rvore B

Insero (Exemplo - cont.)


Inserir chave 5 (depois)
37 | 60 | |

5 | 23 | |

52 |58 | |

70|85|111|205

Inserir chave 97 Realizar ciso


Estrutura de Dados II - Mrcio Bueno 24

rvore B

Insero (Exemplo - cont.)


Inserir chave 97 (depois)
37 | 60 |97 |

5 | 23 | |

52 |58 | |

70 | 85 | |

111|205 | |

Estrutura de Dados II - Mrcio Bueno

25

rvore B

Insero (Exemplo - cont.)


Inserir chaves 64,14, 90, 30
37 | 60 |97 |

5 |14 |23 |30

52 |58 | |

64 |70 |85 |90

111|205 | |

Inserir chave 75 Realizar ciso


Estrutura de Dados II - Mrcio Bueno 26

rvore B

Insero (Exemplo - cont.)


Inserir chave 75 (depois)
37 |60 |75 |97

5 |14 |23 |30

52 |58 | |

64 |70 | |

85 |90 | |

111|205 | |

Inserir chave 25 Realizar ciso


Estrutura de Dados II - Mrcio Bueno 27

rvore B

Insero
A insero da nova entrada no n pai pode acarretar a necessidade de uma nova ciso; A ciso de pginas propagvel, podendo atingir at mesmo a raiz da rvore. Neste caso, surge uma nova raiz, o que implica em alterao da altura da rvore. Aps o processo de insero, a rvore permanece balanceada.
Estrutura de Dados II - Mrcio Bueno 28

rvore B

Insero (Exemplo - cont.)


Inserir chave 25 (depois)
60 | | |

23 | 37 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

52 |58 | |

64 |70 | |

85 |90 | |

111|205| |
29

Estrutura de Dados II - Mrcio Bueno

rvores B

Consulta
Verifica se a chave procurada est na raiz; Caso no esteja, se a chave for menor que a chave Ci, 1 i N-1, ento repetir a pesquisa na subrvore Ai-1; A pesquisa termina quando encontramos a chave ou um apontador Ai igual a nulo.
Estrutura de Dados II - Mrcio Bueno 30

rvore B

Consulta Exemplo:
Procurar chave 52
60 | | |

23 | 37 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

52 |58 | |

64 |70 | |

85 |90 | |

111|205| |
31

Estrutura de Dados II - Mrcio Bueno

rvores B

Consulta Algoritmo:

void BuscaB(Tipo x, no *raiz, no *&pt, bool &f, int &g) { no *p = raiz; pt = null; f = false; while (p != null) { int qtd = p->n, i; i = g = 0; pt = p; while (i < qtd) if (x > p->chv[i]) { i = g = i + 1; } else if (x == p->chv[i]) { f = true; return; } else { p = p->pont[i]; i = qtd + 1; } if (i == qtd) p = p->pont[qtd]; } }
Estrutura de Dados II - Mrcio Bueno 32

rvore B

Consulta - Algoritmo:
Os parmetros pt, f e g fornecem o resultado da busca. Se a chave for encontrada na tabela, f verdadeiro, pt contm o endereo da pgina que contm a chave e g contm a posio da chave dentro da pgina. Se a chave no for encontrada, f continua falso, pt aponta para a ltima pgina examinada e g informa a posio, nesta pgina, onde a chave seria includa.
Estrutura de Dados II - Mrcio Bueno 33

rvore B

Consulta Algoritmo:
A pesquisa dentro de um n seqencial. Se a ordem da rvore for maior que 10, devemos considerar a utilizao de pesquisa binria.

Estrutura de Dados II - Mrcio Bueno

34

rvore B

Remoo de uma chave X


Caso 1: A chave X no se encontra em uma folha
X substituda pela chave Y, imediatamente maior; Y necessariamente pertence a uma folha.

Estrutura de Dados II - Mrcio Bueno

35

rvore B

Remoo (Exemplo)
Caso 1: Remover a chave 37 (antes)
60 | | |

23 | 37 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

52|54|56|58 64 |70 | |

85 |90 | |

111|205| |
36

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo (Exemplo)
Caso 1: Remover a chave 37 (depois)
60 | | |

23 | 52 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

54|56 |58 |

64 |70 | |

85 |90 | |

111|205| |
37

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo
Caso 2: A chave X se encontra em uma folha
A chave simplesmente removida.

Estrutura de Dados II - Mrcio Bueno

38

rvore B

Remoo (Exemplo)
Caso 2: Remover a chave 58 (antes)
60 | | |

23 | 52 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

54|56|58 |

64 |70 | |

85 |90 | |

111|205| |
39

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo (Exemplo)
Caso 2: Remover a chave 58 (depois)
60 | | |

23 | 52 | |

75 | 97 | |

5 | 14 | |

25 |30 | |

54|56| |

64 |70 | |

85 |90 | |

111|205| |
40

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo
Quando uma chave retirada de um n folha, o nmero de chaves restantes pode ser menor que (M-1)/2. Tratamentos:
Concatenao Redistribuio

Estrutura de Dados II - Mrcio Bueno

41

rvore B

Remoo com Concatenao


Duas pginas P e Q so chamada irmos adjacentes se tm o mesmo pai W e so apontadas por ponteiros adjacentes em W. P e Q podem ser concatenadas se so irmos adjacentes e juntas possuem menos de M-1 chaves.

Estrutura de Dados II - Mrcio Bueno

42

rvore B

Remoo com Concatenao


A concatenao agrupa as entradas de duas pginas em uma s; No n pai deixa de existir uma entrada: aquela da chave que se encontra entre os ponteiros para P e Q. Essa chave passa a fazer parte do n concatenado e seu ponteiro desaparece.

Estrutura de Dados II - Mrcio Bueno

43

rvore B

Remoo com Concatenao


Exemplo: Remover a chave 25 (antes)
60 | | |

23 | 52 | |

75 | 97 | |

5 | 14 | |

25|30| |

54|56| |

64 |70 | |

85 |90 | |

111|205| |
44

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo com Concatenao


Exemplo: Remover a chave 25 (depois)
60 | | |

52 | | |

75 | 97 | |

5|14|23|30

54|56| |

64 |70 | |

85 |90 | |

111|205| |
45

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo com Concatenao


Como foi retirada uma chave do n W, caso ele passe a ter menos de (M-1)/2 chaves, o processo se repete; Ou seja, a concatenao um processo propagvel; Se a propagao atingir a raiz, a rvore diminuir de altura.

Estrutura de Dados II - Mrcio Bueno

46

rvore B

Remoo com Concatenao


Exemplo: Remover a chave 25 (cont.) Propagao
60 | | |

52 | | |

75 | 97 | |

5|14|23|30

54|56| |

64 |70 | |

85 |90 | |

111|205| |
47

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo com Concatenao


Exemplo: Remover a chave 25 (cont.) Propagao
52 |60 |75 |97

5|14|23|30

54|56| |

64 |70 | |

85 |90 | |

111|205| |

Estrutura de Dados II - Mrcio Bueno

48

rvore B

Remoo com Redistribuio


Se a pgina P e seu irmo adjacente Q possuem em conjunto M-1 ou mais chaves, estas podem ser equilibradamente distribudas:
Concatena-se P e Q; Efetua-se a ciso da pgina resultante.

Estrutura de Dados II - Mrcio Bueno

49

rvore B

Remoo com Redistribuio


Exemplo: Remoo da chave 30 (antes)
60 | | |

23 | 37 | |

75 | 97 | |

5 | 14 |17 |

25 |30 | | 52|54|56|58 64 |70 | |


Estrutura de Dados II - Mrcio Bueno

85 |90 | |

111|205| |
50

rvore B

Remoo com Redistribuio


Exemplo: Remoo da chave 30 (depois)
60 | | |

23 | 52 | |

75 | 97 | |

5 | 14|17|

25 |37| |

54|56|58|

64 |70 | |

85 |90 | |

111|205| |
51

Estrutura de Dados II - Mrcio Bueno

rvore B

Remoo com Redistribuio


A redistribuio no propagvel; A pgina W, pai de P e Q, modificada, mas seu nmero de chaves permanece o mesmo.

Estrutura de Dados II - Mrcio Bueno

52

Você também pode gostar