Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf ·...

59
Árvores-B (Parte II) SCC-503 Algoritmos e Estruturas de Dados II Modificado por Moacir Ponti Jr, do original de: Thiago A. S. Pardo Cristina D. A. Ciferri Leandro C. Cintra M.C.F. de Oliveira

Transcript of Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf ·...

Page 1: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Árvores-B (Parte II)

SCC-503 Algoritmos e Estruturas de Dados II

Modificado por Moacir Ponti Jr, do original de:

Thiago A. S. Pardo

Cristina D. A. Ciferri

Leandro C. Cintra

M.C.F. de Oliveira

Page 2: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

2

Algoritmo: Inserção

Dois momentos

inicia-se com uma pesquisa que desce até o nível dos nós folhas

uma vez escolhido o nó folha no qual a nova chave deve ser inserida, os processos de inserção, particionamento (split) e promoção (promotion) propagam-se em direção à raiz

construção bottom-up

Page 3: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

3

Algoritmo: Inserção Fases (procedimento recursivo)

1) busca na página pesquisa da página antes da chamada recursiva

2) chamada recursiva move a operação para os níveis inferiores da árvore

3) inserção, split e promotion executados após as chamadas recursivas a propagação destes processos

ocorre nos retornos das chamada recursivas

caminho inverso ao da pesquisa

Page 4: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

4

Procedimento inicial

Rotina inicializadora e de tratamento da raiz

abre ou cria o arquivo de índice (árvore-B)

identifica ou cria a página da raiz

lê chaves para serem armazenadas na árvore-B e chama função de inserção de forma apropriada

cria uma nova raiz quando a função de inserção particionar a raiz atual

Page 5: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Relembrando Inserção

1. Se árvore está vazia, crie a 1ª página (raiz), insira a chave e FIM

2. Senão, localize a página folha que deveria conter a chave

3. Se existe espaço, insira a chave, reordene a página e FIM

4. Senão (overflow):

4.1. Divida a página em duas (split) e redistribua as chaves entre elas

4.2. Se a pág. dividida era raiz, crie nova raiz como pai das duas resultantes

4.3. Promova a menor chave da pág. direita como separadora no nó pai

4.4. Se nó pai não sofreu overflow, FIM.

4.5. Senão, volte ao passo 4.1 para o nó pai.

5

Page 6: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Estrutura de Dados

6

Page 7: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

7

Estrutura de dados Estrutura de dados

determina cada página de disco pode ser implementada de diferentes formas

Implementação adotada contador de ocupação (número de chaves por

página) chaves ponteiros ⇒ campos de referência para as

páginas filhas

Page 8: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Estrutura de dados Possibilidade

#define ordem 8

typedef struct pagina {

int contador;

char chaves[ordem­1]; //assumindo chaves char

int filhos[ordem]; //armazena o RRN dos filhos

bool folha;

} PAGINA;

8

Page 9: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

9

Arquivo da Árvore-B

A B

D

IE

H

C G

K

L5

M0 3

2

8

J

3        D    H      K        0      3      8      5    F

   2        E      G                ­1  ­1    ­1    ­1   T

contador de ocupaçãoPAGINA.CONTADOR

chavesPAGINA.CHAVES[]

ponteiros para os nós filhos 

PAGINA.FILHOS[]

página 2

página 3

Page 10: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

10

contador de 

ocupação

vetor de chaves

Arquivo da Árvore-B Conjunto de registros de tamanho fixo

Cada registro contém uma página de disco

...registro de cabeçalho

0    1     2         3           4  

vetor de 

ponteirosRRN da raiz

Page 11: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Algoritmo – pesquisa

11

Page 12: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

12

Algoritmos

Características gerais dos algoritmos algoritmos recursivos dois estágios de processamento

em páginas inteiras e... dentro das páginas

Page 13: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

13

Algoritmo: Pesquisafunção busca(RRN, //página atual sendo pesquisada chave, //chave sendo procurada RRN_encontrado, //retorna a página que contém a chave pos_encontrada) //retorna posição da chave na página

se (RRN == -1) entãoretorne FALSO //chave de busca não encontrada

senãoleia página P identificada por RRNprocure chave em P, e atribua a POS a posição onde a chave deve ocorrerse (chave_encontrada) então

RRN_encontrado = RRN //RRN atual contém a chavepos_encontrada = POS //POS contém a posição da chave na páginaretorne VERDADEIRO

//se chave não encontrada, recomeça-se busca no filho apropriadosenão

retorne busca(P.filhos[POS], chave, RRN_encontrado, pos_encontrada)

Page 14: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

14

Busca da Chave K

busca(2, K, RRN_encontrado, pos_encontrada)

P = não existe → POS = 1

A B

D

PG

N

C I

S

T1

U0 3

2

4

RM W

D N S

Page 15: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

15

Busca da Chave K

busca(P.filhos[1], K, RRN_encontrado, pos_encontrada)

P = não existe → POS = 2

A B

D

PG

N

C I

S

T1

U0 3

2

4

RM W

G I M

Page 16: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

16

Busca da Chave K

busca(Pag.filhos[2], K, RRN_encontrado, pos_encontrada)

P.filhos[2] = -1 → chave de busca não encontrada

retorna FALSO

A B

D

PG

N

C I

S

T1

U0 3

2

4

RM W

Page 17: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

17

Busca da Chave M

busca(2, M, RRN_encontrado, pos_encontrada)

P = não existe → POS = 1

A B

D

PG

N

C I

S

T1

U0 3

2

4

RM W

D N S

Page 18: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

18

Busca da Chave M

busca(P.filhos[1], M, RRN_encontrado, pos_encontrada)

chave de busca encontradaP = pos_encontrada = 2 RRN_encontrado = 3

retorna VERDADEIRO

A B

D

PG

N

C I

S

T1

U0 3

2

4

RM W

G I M

Page 19: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Exercício Em duplas, para entregar

Implemente em C o percurso em-ordem em uma árvore-B, imprimindo as chaves visitadas

Suponha que ela está em RAM, para facilitar

19

em­ordem(no) {  se (no.esq != NULL) 

em­ordem(no.esq)  print no.value  se (no.dir != NULL) 

em­ordem(no.dir)}

typedef struct pagina {int contador;char chaves[ordem­1];PAGINA *filhos[ordem];

} PAGINA;

Page 20: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Definição e Propriedades de Árvores-B

Page 21: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

21

Relembrando... Ordem de uma árvore-B

Número máximo de descendentes que uma página, ou nó, pode possuir

Em uma árvore-B de ordem m, o número máximo de chaves em uma página é m-1

Exemplo: Uma árvore-B de ordem 8 tem, no máximo, 7 chaves

por página

Page 22: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

22

Propriedades das árvores-B Número mínimo de chaves por página

Quando uma página é particionada na inserção, as chaves são divididas (quase) igualmente entre as páginas velha e nova

o número mínimo de chaves em um nó é dado por m/2-1 (exceto para a raiz)

Exemplo: árvore B de ordem 8, armazena no máximo 7 chaves por página e tem, no mínimo, 3 chaves por página

Page 23: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

23

Propriedades das árvores-B

Para uma árvore-B de ordem m1. Cada página tem:

• no máximo, m descendentes• no mínimo m/2 descendentes (exceto raiz e folhas)

2. A raiz tem, no mínimo, dois descendentes • a menos que seja uma folha

3. Todas as folhas estão no mesmo nível4. Uma página não folha com k descendentes contém k­1 

chaves 5. Uma página folha contém, no mínimo m/2 -1 e, no 

máximo, m­1 chaves 

Page 24: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

24

Busca no pior caso

Profundidade da busca no pior caso Tendo X chaves e um tamanho de página

Y, qual o número de acessos a disco necessário?

Ou “qual a profundidade da árvore”?

Page 25: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

25

Propriedades das árvores-B

Antes de mais nada, é importante observar número de descendentes possíveis de um nível da árvore =

número de chaves até o nível atual + 1

Page 26: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

26

Propriedades das árvores-B

Antes de mais nada, é importante observar número de descendentes possíveis de um nível da árvore =

número de chaves até o nível atual + 1

Nível 1 =2 chaves + 1 =3 descendentes

Page 27: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

27

Propriedades das árvores-B

Antes de mais nada, é importante observar número de descendentes possíveis de um nível da árvore =

número de chaves até o nível atual + 1

Nível 2 =8 chaves + 1 =9 descendentes

Page 28: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

28

Propriedades das árvores-B

Antes de mais nada, é importante observar número de descendentes possíveis de um nível da árvore =

número de chaves até o nível atual + 1

Nível 3 =27 chaves + 1 =28 descendentes

Page 29: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

29

Altura de pior caso

No pior caso, cada nó terá o mínimo de descendentes A árvore terá sua maior altura e menor largura

    ­ Exceto raiz e folhas, há no mínimo m/2 descendentes para cada nó

Para uma árvore de ordem m A raiz (primeiro nível) terá no mínimo 2 descendentes O segundo nível terá somente 2 páginas, tendo cada uma m/2

descendentes, ou seja, há 2 x m/2 descendentes para o segundo nível

O terceiro nível contém 2 x m/2 nós x m/2 descendentes para cada nó, ou seja 2 x m/22 descendentes

O nível d terá ?

Page 30: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

30

Propriedades das árvores-B

O nível d terá 2 x m/2d-1 descendentes

Page 31: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

31

Propriedades das árvores-B Ou seja, o número mínimo de descendentes para um nível d

da árvore é 2 x m/2d-1

Vimos que, no máximo, há N+1 descendentes em um nível da árvore com N chaves

Então, podemos calcular o limite superior da profundidade da árvore (e portanto o número máximo de acessos a disco) em termos do número de chaves nas folhas N e da ordem m

N ≥ 2 x m/2d-1 d ≤ 1 + logm/2(N/2)

ExemploConsiderando que temos 1,000,000 chaves e uma árvore de ordem

512, temos que d ≤ 1 + log256(500,000), ou seja, d ≤ 3.37– Podemos esperar, portanto, não mais do que 3 acessos a disco para

acessar qualquer uma das chaves

Page 32: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Algoritmos – parte 2

32

Page 33: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

33

Eliminação O split garante a manutenção das

propriedades da árvore-B durante a inserção

Essas propriedades precisam ser mantidas, também, durante a eliminação de chaves

Há vários casos para se analisar

Page 34: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

34

Eliminação: Caso 1 Caso 1: eliminação de uma chave em

uma página folha, sendo que o número mínimo de chaves na página é respeitado

Solução: chave é retirada e os registros internos da página são reorganizados

Page 35: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 1

35

A

D

IE

H

C F N O R7

S

Q2

M0

3 4

1

5 6

U

J K P V W8

X Y Z

Eliminando J O que acontece?

Exemplo: árvore-Bde ordem 6

Page 36: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 1

36

A

D

IE

H

C F N O R7

S

Q2

M0

3 4

1

5 6

U

K P V W8

X Y Z

Eliminando J Página 5 observa o número mínimo de elementos

Page 37: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

37

Eliminação: Caso 2 Caso 2: eliminação de uma chave que não

está em uma folha

Solução: sempre eliminamos de páginas folha Se uma chave deve ser eliminada de uma

página que não é folha, trocamos a chave com sua sucessora imediata (ou com a predecessora imediata) que está numa folha

A seguir, eliminamos a chave da folha

Page 38: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 2

38

A

D

IE

H

C F N O R7

S

Q2

M0

3 4

1

5 6

U

K P V W8

X Y Z

Eliminando M O que acontece?

Page 39: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 2

39

A

D

IE

H

C F M O R7

S

Q2

N0

3 4

1

5 6

U

K P V W8

X Y Z

Eliminando M Troca-se M com N, então se elimina M

Page 40: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 2

40

A

D

IE

H

C F O R7

S

Q2

N0

3 4

1

5 6

U

K P V W8

X Y Z

Eliminando M Troca-se M com N, então se elimina M

Page 41: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

41

Eliminação: Caso 3 Caso 3: eliminação causa underflow na

página

Solução: redistribuição Procura-se uma página irmã (mesmo pai) que

contenha mais chaves do que o mínimo: se existir, redistribuem-se as chaves entre essas páginas

A redistribuição pode provocar uma alteração na chave separadora que está no nó pai

Page 42: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 3

42

A

D

IE

H

C F O R7

S

Q2

N0

3 4

1

5 6

U

K P V W8

X Y Z

Eliminando R O que acontece?

Page 43: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 3

43

A

D

IE

H

C F O R7

S

Q2

N0

3 4

1

5 6

W

K P

8

X Y Z

Eliminando R Ocorre underflow em página 7, redistribuem-se

chaves entre páginas 7 e 8 (via página 2)

U V

Page 44: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 3

44

A

D

IE

H

C F O7

S

Q2

N0

3 4

1

5 6

W

K P

8

X Y Z

Eliminando R Ocorre underflow em página 7, redistribuem-se

chaves entre páginas 7 e 8 (via página 2)

U V

Page 45: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

45

Eliminação: Caso 4 Caso 4: ocorre underflow e a redistribuição

não pode ser aplicada Não existem chaves suficientes para dividir entre

as duas páginas irmãs

Solução: concatenação Combina-se o conteúdo das duas páginas e a

chave separadora da página pai para formar uma única página

A concatenação é o inverso do processo de particionamento

Como conseqüência, pode ocorrer underflow da página pai

Page 46: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 4

46

A

D

IE

H

C F O7

S

Q2

N0

3 4

1

5 6

W

K P

8

X Y Z

Eliminando A O que acontece?

U V

Page 47: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 4

47

A

D

IE

H

C F O7

S

Q2

N0

3 4

1

5 6

W

K P

8

X Y Z

Eliminando A Ocorre underflow da página 3, não é possível fazer

redistribuição, concatenam-se páginas 3 e 4, além da chave separadora D

U V

Page 48: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 4

48

C

H

IED F O7

S

Q2

N0

3

1

5 6

W

K P

8

X Y Z

Eliminando A Ocorre underflow da página 3, não é possível fazer

redistribuição, concatenam-se páginas 3 e 4, além da chave separadora D

U V

Page 49: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 4

49

C

H

IED F O7

S

Q2

N0

3

1

5 6

W

K P

8

X Y Z

Eliminando A Ocorre underflow da página 3, não é possível fazer

redistribuição, concatenam-se páginas 3 e 4, além da chave separadora D

U V

Gerou outro problema:underflow da página 1.

Como resolver?

Page 50: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

50

Eliminação: Caso 5 Caso 5: underflow da página pai

Solução: utiliza-se redistribuição ou concatenação novamente

Page 51: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 5

51

C

H

IED F O7

S

Q2

N0

3

1

5 6

W

K P

8

X Y Z

Propagação do underflow O que acontece?

U V

Page 52: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 5

52

C

H

IED F O7

S

Q2

N0

3

1

5 6

W

K P

8

X Y Z

Propagação do underflow Não dá para fazer redistribuição, mas dá para fazer

concatenação

U V

Page 53: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Eliminação: Caso 5

53

C IED F O7

S

Q

1

3 5 6

W

K P

8

X Y Z

Propagação do underflow Não dá para fazer redistribuição, mas dá para fazer

concatenação

U V

NH

Page 54: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

54

Eliminação: Caso 6 Caso 6: diminuição da altura da árvore

Ocorre quando o nó raiz tem uma única chave e aplica-se a concatenação de seus nós filhos

Como ocorreu no exemplo anterior

Page 55: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

55

Eliminação (resumo)

1. Se a chave não estiver numa folha, troque­a com sua sucessora 

2. Elimine a chave da folha

3. Se a folha continuar com o número mínimo de chaves, FIM

4. Senão (underflow) 

  4.1. se uma das páginas irmãs diretas (esquerda ou direita) tiver mais que o mínimo de chaves, aplique redistribuição e FIM

  4.2. senão

   a) concatene a pág. com uma das irmãs e a chave separadora do nó pai

   b) se nó pai for raiz e sua última chave foi rebaixada, elimine a raiz e FIM

   c) senão, se nó pai continuar com o mínimo de chaves, FIM

   d) senão (underflow no pai), volte ao item (a) para o nó pai

Page 56: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Desempenho de Árvores-B  Complexidade computacional para busca, 

inserção e remoção de chaves No pior caso a altura é dada pelo maior inteiro d 

tal que:  A altura é  E portanto no pior caso uma busca 

requer                    acessos

d1log⌈ m /2 ⌉ N /2O log ⌈m /2 ⌉ N

O log ⌈m /2 ⌉ N

Page 57: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Desempenho de Árvores-B  Complexidade computacional para busca, inserção e 

remoção de chaves Toda inserção realiza busca

Além disso pode realizar split

Cada split opera sobre um número fixo de páginas e é portanto constante, ou 

No pior caso, overflows se propagam até a raiz e são realizados                        splits em tempo constante

Assim, no pior caso uma inserção também requer                                      acessos

O 1

O log ⌈m /2 ⌉ N

O log ⌈m /2 ⌉ N

Page 58: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

Desempenho de Árvores-B  Complexidade computacional para busca, inserção e 

remoção de chaves Toda remoção realiza busca

Além disso pode realizar concatenação/redistribuição

Cada concatenação/redistribuição opera sobre um número fixo de páginas e é portanto constante

No pior caso, underflows se propagam até a raiz e são realizados                       operações em tempo constante

Assim, no pior caso uma remoção também requer                                      acessos

O log ⌈m /2 ⌉ N

O log ⌈m /2 ⌉ N

Page 59: Árvores-B (Parte II) - USPwiki.icmc.usp.br/images/6/67/Alg2_16.Arvores_B_parte2.pdf · Propriedades das árvores-B Para uma árvore-B de ordem m 1. Cada página tem: • no máximo,

59

Exercício Usando o algoritmo anterior, remova as

chaves A, B, Q e R da árvore-B de ordem 5 abaixo