47
Cap.8: ´ Arvores B - Parte II Departamento de Ciˆ encia da Computa¸c˜ ao Instituto de Ciˆ encias Exatas Universidade de Bras´ ılia 1 / 47

Cap8 parte2

Embed Size (px)

Citation preview

Page 1: Cap8 parte2

Cap.8: Arvores B - Parte II

Departamento de Ciencia da ComputacaoInstituto de Ciencias Exatas

Universidade de Brasılia

1 / 47

Page 2: Cap8 parte2

Sumario

Arvores B

1 Arvores Binarias.

2 Arvores AVL.

3 Arvores Paginadas.

4 Arvores B.

2 / 47

Page 3: Cap8 parte2

Arvore-B

Proposta por Bayer e McCreight em 1972.

3 / 47

Page 4: Cap8 parte2

Arvore-B

O melhor modo de lidar com buscas em situacoes dinamicas e usar arvorespaginadas balanceadas.

Colocar muitas chaves por no, aumenta o fator de ramificacao e reduz a altura daarvore, diminuıdo o esforco de busca.

Tais arvores foram denominadas Arvore-B.

B de Boeing, balanceada, broad (larga), Bayer ou bushy?

4 / 47

Page 5: Cap8 parte2

Arvore-B

Implementacao dos Indices

Hoje a estrutura de dados mais comum para indexacao de arquivos e chamadaarvore-B.

Arvore-B e uma generalizacao de arvore de pesquisa binaria balanceada.

Enquanto a arvore binaria tem no maximo dois filhos em cada no, a Arvore-B temum grande numero de filhos. O no de uma arvore-B e projetado para ocupar umbloco inteiro de disco.

Assim, uma busca em Arvore-B raramente envolve mais que tres nıveis.

5 / 47

Page 6: Cap8 parte2

Arvore-B

Arvore-B

Mesma ideia de paginas: para explorar armazenagem em disco e paginar grandestabelas de dados.

Cada pagina e uma sequencia de m− 1 chaves e m ponteiros para outras paginas.m representa a ordem da arvore.

m representa a ordem da arvore.

A arvore pode representar o arquivo ındice ou o proprio arquivo basico.

Nao ha uma representacao explıcita de arvore em uma pagina. Cada paginacontem uma lista ordenada de chaves e ponteiros.

6 / 47

Page 7: Cap8 parte2

Arvore-B

As arvores-B representam uma mudanca de paradigma na construcao de arvores.

Passam a ser construıdas de baixo para cima (Construcao bottom-up no lugar detop-down ).

Borbulha para a pagina raiz as chaves mais adequadas:

o Resultado da inclusao em uma pagina lotada:

A chave de valor medio na pagina lotada (+ chave nova) sobe para a pagina pai.

A pagina lotada e dividida em duas.

Assim, os elementos da raiz emergem das paginas filhas (da base).

7 / 47

Page 8: Cap8 parte2

Arvore-B

Numa arvore-B , cada pagina tem a seguinte forma:

Onde:

j ≤ m− 1.

pi, 0 ≤ i ≤ j, sao ponteiros para paginas filhas (cada pagina aponta para no maximom paginas filhas).

chi, 1 ≤ i ≤ j, sao as chaves armazenadas na pagina (cada pagina armazena m− 1chaves).

8 / 47

Page 9: Cap8 parte2

Arvore-B

Nas folhas, cada pi e nulo.

Uma representacao computacional para cada no pode ser:

Um registro com:

contador:inteiro.

chave: vetor [0..m− 2] do tipo chave.

prr: vetor [0..m− 2] de inteiros.

filho: vetor [0..m− 1] de inteiros.

9 / 47

Page 10: Cap8 parte2

Arvore-B

Exemplo: Arvore-B de ordem m− 8

A pagina inicial contem 8 ponteiros e 7 chaves.

Ponteiros para as paginas com * indicam vazio.

Nao estao representados os ponteiros para as chaves

10 / 47

Page 11: Cap8 parte2

Arvores-B

Operacoes Basicas em uma Arvore-B

Insercoes

Divisoes (Splitting)

Promocao

Eliminacao

11 / 47

Page 12: Cap8 parte2

Arvores-B

Insercao

A insercao ocorre normalmente enquanto existe espaco dentro de uma pagina:

Mantem as chaves ordenadas.

Insercao das chaves C e D, no inıcio:

Insercao das chaves G, A, F, B, E:

As chaves sao copiadas para a memoria onde as inclusoes ocorrem.

12 / 47

Page 13: Cap8 parte2

Arvore-B

Insercao

Insercao de uma chave em uma folha cheia:

Ocorre uma divisao que consiste na criacao de uma nova pagina, dividindo-se aschaves existentes entre as paginas.

A chave que e o melhor separador e promovida para o nıvel superior.

Um bom separador divide as chaves de forma uniforme.

13 / 47

Page 14: Cap8 parte2

Arvore-B

Considere a insercao da chave J nesta pagina:

Dividimos a pagina em duas outras paginas:

Promovemos a chave E (ela sobe um nıvel).

14 / 47

Page 15: Cap8 parte2

Arvore-B

Para manter a estrutura da arvore, cria-se uma nova raiz:

15 / 47

Page 16: Cap8 parte2

Arvore-B

Vamos ilustrar a insercao das seguintes chaves em uma arvore-B de ordem 4.

A construcao se da de baixo para cima.

As paginas sao de tamanho fixo.

16 / 47

Page 17: Cap8 parte2

Arvore-B

Insercao de C S D dentro da pagina inicial:

Insercao de T forca a divisao/promocao de S:

17 / 47

Page 18: Cap8 parte2

Arvore-B

Insercao de A ocorre normalmente:

Insercao de M forca outra divisao e promocao de D (sem gerar um no novo raiz)

18 / 47

Page 19: Cap8 parte2

Arvore-B

Insercao de P, I, B e W nas paginas existentes:

19 / 47

Page 20: Cap8 parte2

Arvore-B

Insercao de N precisa de outra divisao seguida de promocao de N. As chaves G, U eR sao inseridas em paginas ja existentes.

20 / 47

Page 21: Cap8 parte2

Arvore-B

Insercao de K resulta na divisao e promocao de K, que por sua vez forca a divisao epromocao do N. Insercao de E e normal.

21 / 47

Page 22: Cap8 parte2

Arvore-B

Insercao de H resulta em divisao do no folha. H e promovido. O, L e J sao inseridosa seguir.

22 / 47

Page 23: Cap8 parte2

Arvore-B

Insercao de Y e Q forcam mais duas divisoes nos nos folhas. As letras restantes saoadicionadas

23 / 47

Page 24: Cap8 parte2

Arvore-B como Indice

24 / 47

Page 25: Cap8 parte2

Arvore-B

Insercao, Splitting (divisao) e Promocao

Comeca com uma busca que procede top-down para o nıvel das folhas, buscando achave ou a folha para inserı-la (se a chave ja estiver na arvore retorna msg deerro/chave duplicada).

Depois de encontrar o local de insercao no nıvel das folhas, o trabalho de insercao,divisao, e promocao procede de baixo para cima (bottom-up), no mesmo caminhofeito durante a busca.

25 / 47

Page 26: Cap8 parte2

Arvore-B

Propriedades de uma Arvore-B

Considere uma arvore-B de ordem m.

1 Uma pagina possui no maximo m (paginas) descendentes.

2 Toda pagina, exceto a raiz e as folhas, tem no mınimo dm2e (paginas) descendentes.

3 A raiz tem no mınimo 2 descendentes, a menos que seja uma folha.

4 Todas as folhas aparecem no mesmo nıvel.

5 Uma pagina que nao e folha e possui m (paginas) descendentes, contem m− 1chaves.

6 Uma pagina folha contem no mınimo dm2e − 1 e no maximo m− 1 chaves.

26 / 47

Page 27: Cap8 parte2

Arvore-B

Essas propriedades garantem um numero mınimo de chaves em cada pagina e aescolha correta das chaves da raiz.

Isso elimina os problemas encontrados na paginacao de arvores construıdas com aabordagem top-down.

27 / 47

Page 28: Cap8 parte2

Arvore-B

E importante um entendimento quantitativo da relacao entre:

O tamanho da pagina da arvore-B.

O numero de chaves a serem armazenadas na arvore.

O numero de nıveis que a arvore pode ser expandida.

Por exemplo: Para armazenar 1000000 de chaves usando uma arvore-B de ordem512 (max 511 chaves por pagina).

No pior caso, qual o numero maximo de acessos a disco necessario para localizaruma chave na arvore? (E o mesmo que perguntar quao profunda sera a arvore.)

28 / 47

Page 29: Cap8 parte2

Arvore-B

Profundidade da Arvore

A profundidade da arvore esta diretamente relacionada com o numero maximo deseeks para encontrar uma determinada chave.

Os fatores que influenciam a profundidade da arvore sao:

Fator de ramificacao (ordem da arvore).

Numero efetivo de chaves em cada pagina.

Quantidade de chaves (total).

Polıtica de carga mınima (quando dividir a pagina).

29 / 47

Page 30: Cap8 parte2

Arvore-B

O numero de descendentes em qualquer nıvel da arvore-B e o numero de chavescontidas naquele nıvel e nıveis acima + 1.

30 / 47

Page 31: Cap8 parte2

Arvore-B

O pior caso de profundidade da arvore ocorre quando cada pagina da arvore (no)tem o numero mınimo de filhos (descendentes).

Nıvel Mınimo numero de chaves (filhos)1 (raiz) 22 2dm

2e

3 2dm2edm

2e = 2dm

2e2

4 2dm2e3

......

d 2dm2ed−1

31 / 47

Page 32: Cap8 parte2

Arvore-B

Sabemos que uma arvore com N chaves tem N + 1 descendentes a partir do seunıvel das folhas.

Vamos chamar a profundidade da arvore no nıvel das folhas de d.

Entao, se nos temos um total de N chaves ate o nıvel d : N ≥ 2dm2ed−1

32 / 47

Page 33: Cap8 parte2

Arvore-B

N ≥ 2⌈m2

⌉d−1

(1)

De (1), concluımos (2):

d ≤ 1 + logm2

(N

2

)(2)

Para N = 1.000.000 e ordem m = 512, temos:

d ≤ 1 + log256 500000

d ≤ 3.37

Existem no maximo 3 nıveis numa arvore-B de ordem 512 contendo 1000000 dechaves.

33 / 47

Page 34: Cap8 parte2

Arvore-B (Eliminacao)

Eliminacao de Chaves

Redistribuicao e Concatenacao

As propriedades da Arvore-B, descritas antes, garantem que haja um numero mınimode elementos em uma pagina

Precisamos manter esta propriedade no processo de eliminacao de uma chave

34 / 47

Page 35: Cap8 parte2

Arvore-B: Eliminacao Simples

Caso 1: a chave esta numa folha, e apos a eliminacao ainda fica um numero mınimode chaves (ex: m = 6 e dm

2e–1 = 2).

Solucao: chave J e retirada sem precisar de reorganizacao.

35 / 47

Page 36: Cap8 parte2

Arvore-B: Troca e Eliminacao

Caso 2: Eliminacao de uma chave que nao esta na folha.

Solucao: trocar a chave M com seu sucessor imediato N que esta numa folha eeliminar a chave (So excluımos chaves de folhas!).

36 / 47

Page 37: Cap8 parte2

Arvore-B: Eliminacao e Redistribuicao

Caso 3: a eliminacao de R viola o mınimo e causa underflow na pagina 7.

Solucao: redistribuicao com uma pagina irma.

37 / 47

Page 38: Cap8 parte2

Arvore-B: Elimina e Concatena

Caso 4: ocorre o underflow e a redistribuicao nao pode ser aplicada com as vizinhas.

Solucao: concatenacao.

38 / 47

Page 39: Cap8 parte2

Arvore-B: Eliminacao Propaga para o Pai

Caso 5: underflow na pagina pai.

Solucao: tenta-se a redistribuicao. Se nao for possıvel, utiliza-se aconcatenacao.

39 / 47

Page 40: Cap8 parte2

Arvore-B: Eliminacao Diminui a Altura

Caso 6: diminuicao na altura da arvore

Consequencia da concatenacao dos filhos do no raiz.

40 / 47

Page 41: Cap8 parte2

Arvore-B

Visao Geral do Algoritmo de Exclusao

1) Se a chave nao estiver numa folha, troque-a com seu sucessor imediato.

2) Elimine a chave da folha.

3) Se a folha continuar com o numero mınimo de chaves, fim.

4) A folha viola o mınimo. Verifique as paginas irmas da esquerda e direita:

4.1) Se uma delas tiver mais que o numero mınimo de chaves, aplique redistribuicao.

4.2) Senao concatene a pagina com uma das irmas e a chave pai.

5) Se ocorreu concatenacao, aplique passos de 3 a 6 para a pagina pai.

6) Se a ultima chave da raiz for removida, a altura da arvore diminui.

41 / 47

Page 42: Cap8 parte2

Arvore-B

Redistribuicao Durante Insercao

A redistribuicao e uma nova ideia (que e o contrario do Splitting).

Tem efeito apenas local.

E entre paginas irmas e o pai.

O balanceamento de paginas:

Pode ser atingido movendo-se apenas uma chave para a pagina onde o underflowocorreu.

Mas, normalmente move-se mais do que uma.

42 / 47

Page 43: Cap8 parte2

Arvore-B

Redistribuicao Durante Insercao

Usada com intuito Mde mlhorar o uso de espaco.

Pode ser usada durante a insercao, como uma maneira de postergar a criacao depaginas (por splitting).

O Utilizando somente Splitting na insercao:

Normalmente o pior caso de uso de espaco e de cerca de 50%.

A media teorica de uso de espaco e cerca de 69% (Yao, 1978).

o Experimentos mostram que com a redistribuicao a utilizacao de espaco aumentoupara 86% [(Davis, 1974) e (Crotzer, 1975)]

43 / 47

Page 44: Cap8 parte2

Arvore-B*

Arvore-B*

Proposta por Donald Knuth em 1973.

As Arvores-B* visam melhor aproveitamento do espaco, fazendo redistribuicaodurante a insercao e incluindo novas regras para o splitting (divisao).

A divisao (splitting) somente ocorre quando duas paginas irmas estiverem cheias. Adivisao e feita redistribuindo as duas paginas irmas.

Dessa forma, as tres paginas resultantes da divisao terao em torno de 2/3 deocupacao, cada uma

44 / 47

Page 45: Cap8 parte2

Arvore-B*: Exemplo

Figura: Exemplo de divisao em Arvore-B*

45 / 47

Page 46: Cap8 parte2

Arvore-B*

Arvore-B*: Propriedades

1 Toda pagina tem no maximo m descendentes.

2 Toda pagina, exceto a raiz e as folhas, tem ao menos d 2m−13e descendentes.

3 A raiz tem pelo menos 2 descendentes (a menos que seja uma folha).

4 Todas as folhas estao no mesmo nıvel

5 Uma pagina nao folha com m descendentes tem m− 1 chaves.

6 Uma folha contem ao menos d 2m−13e chaves e nao mais do que m− 1 chaves, apos

as tres primeiras paginas.

Observacao

As polıticas de manutencao da arvore-B* devem atender as propriedades da mesma.

46 / 47

Page 47: Cap8 parte2

Proxima Aula

Proxima Aula

Outras Organizacoes e Arvores B+.

47 / 47