árvore b - WordPress.com

Propaganda
Árvores B
Disciplina de Algoritmos e Estrutura de Dados III
Prof. Marcos Antonio Schreiner
24/04/2015
1
Introdução
●
●
●
Quando trabalhamos com muitos dados nos
obrigamos a utilizar a memória secundária.
O acesso aos dados em memória secundária é
muito lento.
Precisamos de meios eficientes de acesso aos
dados.
Introdução
●
●
Para que serve as Árvores AVL ou Rubro Negras?
Elas são úteis para recuperar dados na memória
principal ou na memória secundária?
Introdução
●
●
●
Por exemplo se usarmos uma AVL para armazenar
dados de motoristas (+/- 20 milhões de registros)
Teríamos uma árvore alta
●
Lg 20.000.000 = 24,25 acessos a disco.
Isso pode ser melhorado?
Introdução
●
Árvores binárias são o caso extremo:
●
●
●
Máxima profundidade.
Se os acessos são caros (armazenamento
secundário) o desempenho cai.
Além disso, cada acesso a disco trás um bloco
de dados, ou seja, um conjunto de bytes.
●
A árvore B é uma alternativa as árvores binárias.
Árvore B
Uma árvore B é uma árvore N-nária de ordem N, que
satisfaz as seguintes condições:
A raíz é uma folha ou tem no mínimo dois filhos;
●
Cada nó tem no máximo N filhos e no mínimo
N div 2 filhos.
●
O número de chaves d é igual ao número de filhos
do nó menos 1.
●
Todas as folhas estão no mesmo nível.
●
A ordem N da árvore deve ser impar.
●
Árvores B - Exemplo
10 20 30 40
d<10
10<d<20
20<d<30
30<d<40
40<d
Árvores B - Exemplo
●
Uma árvore binária pode ser dividida em Páginas.
●
●
No exemplo, cada página contém 9 registros.
Árvore B – Capacidade Máxima
●
Nós com no máximo 1000 elementos:
Árvore com altura 1: 1000
●
Árvore com altura 2: 1000 + 1001*1000 =
1.002.000.
●
Árvore com altura 3: ~1 Bilhão
●
●
Árvore com altura n: ~elementosn
Árvore B – Capacidade Mínima
●
Nós com no máximo 1000 elementos:
Árvore com altura 1: 500
●
Árvore com altura 2: 500 + 501*500 =
251.000.
●
Árvore com altura 3: 500 + 501*500 +
251.001*500 = ~125000000
●
Árvore com altura n: ~elementosn
●
Árvore B – Inserção
1)As chaves são inseridos nos nós folhas.
2)Se o nó ficar cheio, divida a folha em duas partes e
suba o elemento central para o nó pai.
3)Se o pai fique cheio repita o processo, no pior caso
até a raiz.
4)Se necessário o nó raiz deverá ser divido e o
elemento central será transformado em nova raiz.
Árvore B – Inserção - Exemplo
●
●
Vamos construir uma árvore B de ordem 5.
Suponha as chaves devem ser inseridas na seguinte
ordem:
1, 12, 8, 2, 25, 6, 14, 28, 17, 7, 52, 16, 48, 68, 3, 26, 29,
53, 55, 45
●
Os 4 primeiros elementos são simples:
1
2
8
12
O 25 (quinto elemento) estoura o tamanho do nó.
●
O que fazer?
●
Árvore B – Inserção - Exemplo
8
1
2
12
25
25 6 14 28 17 7 52 16 48 68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
Em seguida inserimos 6, 14 e 28 :
8
1
2
6
12 14
25 28
6 14 28 17 7 52 16 48 68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
Adicionando 17 à árvore teremos outro split
8
1
2
6
12 14
25 28
17
17 7 52 16 48 68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
8
1
2
6
17
12
14
25 28
17 7 52 16 48 68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
Continuando com 7, 52, 16 e 48
8 17
1
2 6 7
12 14 16
25 28 48 52
7 52 16 48 68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
E agora, inserindo o 68
8
1
2
6 7
17
12 14 16
25 28 48 52
68
68 3 26 29 53 55 45
Árvore B – Inserção - Exemplo
Quando inserimos o 3 o “split” é na folha mais à esquerda e o 3
sobe.
26, 29, 53, 55 vão para as folhas:
3
1
2
6
7
8 17 48
12 14 16 25 26 28 29
3 26 29 53 55 45
52 53 55 68
Árvore B – Inserção - Exemplo
Por fim o 45:
3
1
2
6
7
8 17 48
12 14 16 25 26 28 29
45
45
52 53 55 68
Árvore B – Inserção - Exemplo
Por fim, quando inserimos o 45, isso forçará com que o 28
suba para a raiz, mas a raiz também esta cheia.
28
3
1
2
6
7
8 17 48
12 14 16 25 26
29 45
52 53 55 68
Árvore B – Inserção - Exemplo
O 17 tem que subir para se tornar a nova raiz.
17
3
1
2
6
7
8
28 48
12 14 16 25 26
29 45 52 53 55 68
Árvore B*
É uma variante da árvore B posterga a divisão de
nós até que as folhas adjacentes estejam
completamente cheias.
●
Redistribuição de chaves.
Árvore B* – Inserção - Exemplo
8
1
6 14 28 17 7
2
12
25
Árvore B* – Inserção - Exemplo
8
1
2
6 14 28 17 7
6
12
14
25
28
Árvore B* – Inserção - Exemplo
REDISTRIBUIÇÃO
8
1
2
6
12
14
25
17
17 7
28
Árvore B* – Inserção - Exemplo
REDISTRIBUIÇÃO
12
1
17 7
2
6
8
14
17
25
28
Árvore B* – Inserção - Exemplo
12
1
2
6
8
7
7
14
17
25
28
Árvore B* – Inserção - Exemplo
7
1
7
2
6
17
8 12
14
25 28
Árvore B – Inserção - Exercício
1) Insira os seguintes números em uma árvore
B e B* de ordem 5:
3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31,
35, 56, 2, 6, 7, 10, 12, 15, 16, 17
Árvore B – Busca
Como é o algoritmo de busca?
17
3
1
2
6
7
8
28 48
12 14 16 25 26
29 45 52 53 55 68
Árvore B – Remoção
●
Na remoção é conveniente sempre remover da folha.
Assim:
1 – Chave está na folha:
●
Se a remoção não faz com que o nó fique com
poucos elementos, remova a chave.
2 – Se a chave não é folha:
●
Seu predecessor ou sucessor está em um folha.
●
Se a remoção do substituto não faz com que o
nó fique com poucos elementos, substitua a
chave.
Árvore B – Remoção
●
Se (1) ou (2) faz com que uma folha tenha um
número menor que o mínimo então temos que
observar os irmãos adjacentes ao nó:
3 - Se um irmão tem número de chaves maior que o
mínimo então:
●
●
Troca-se um chave deste nó com o nó pai
Uma chave do nó pai vai para posição da chave removida.
4 - Se os irmãos têm número de chaves menor que o
mínimo, então:
●
●
Suas chaves devem ser combinadas com a chave do nó
pai.
Este processo é recursivo.
Árvore B – Remoção - Exemplo
Assumindo uma árvore de ordem 5.
Remover o 2:
12 29 52
2
7
9
15 22
31 43
56 69 72
Árvore B – Remoção - Exemplo
Há chaves suficientes
12 29 52
7
9
15 22
31 43
56 69 72
Árvore B – Remoção - Exemplo
Remover o 52
12 29 52
7
9
15 22
31 43
56 69 72
Árvore B – Remoção - Exemplo
Substitui pelo sucessor 56
56
12 29 52
7
9
15 22
31 43
56 69 72
Árvore B – Remoção - Exemplo
Remover o 72
56
12 29 52
7
9
15 22
31 43
69 72
Árvore B – Remoção - Exemplo
Poucas chaves
12 29 56
7
9
15 22
Combina
31 43
69
Árvore B – Remoção - Exemplo
Remover o 22
12 29
7
9
15 22
31 43 56 69
Árvore B – Remoção - Exemplo
Descer chave do nó pai e subir chave na folha
12 29
7
9
15 22
31 43 56 69
Árvore B – Remoção - Exemplo
12 31
7
9
15 29
43 56 69
Árvore B – Remoção - Exercício
2) Seja a árvore produzida pelos seguintes
números do exercício anterior:
3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31,
35, 56, 2, 6, 7, 10, 12, 15, 16, 17
Remova os seguintes números:
1, 3, 2, 7, 8, 9, 10, 15, 16, 17, 23, 24, 25, 31, 35, 45,
56, 5, 6, 11, 12, 4
Árvore B+
Problemas da Árvore B
Como percorrer sequencialmente os índices e
consequentemente os registros em uma árvore B?
17
3
1
2
6
7
8
28 48
12 14 16 25 26
29 45 52 53 55 68
Problemas da Árvore B
Como podemos mudar a estrutura para facilitar o
acesso sequencial?
17
3
1
2
6
7
8
28 48
12 14 16 25 26
29 45 52 53 55 68
Árvore B+
A árvore B+ é uma variação da estrutura básica da
árvore B.
Características:
●
Todas as chaves e endereço dos dados são
mantidas em folhas;
●
As chaves são repetidas em nós não-folha para
formar índices;
●
As folhas são ligadas oferecendo um caminho
sequencial para percorrer as chaves.
Árvore B+ - Exemplo
Árvore B+ - Inserção
Semelhante a inserção em uma árvore B:
- Ocorre sempre em um nó folha.
Passos:
●
Localizar a folha para inserir a chave;
• Inserir a chave;
• Se, após a inserção, a folha estiver completa,
realizar a divisão da página.
Árvore B+ - Inserção - Exemplo
Inclusão do 85, 60, 52 e 70
52 60 85
Árvore B+ - Inserção - Exemplo
Inclusão do 85, 60, 52 e 70
60
52 60
70 85
Árvore B+ - Busca
Como é o algoritmo de busca?
Árvore B+ - Remoção
●
As chaves são sempre removidas nas folhas.
●
●
Os nós internos devem ser atualizados caso
necessário
Se após a remoção o número de chaves for
menor que o mínimo, deve-se:
Redistribuir chaves de folhas adjacentes.
●
Concatenar folhas adjacentes (possuem o mesmo
pai).
●
Árvore B+ - Remoção - Exemplo
Remover o 68, 52, 7, 45
7
2
1
2
6
7
7
26 52
12 14 16 25 26
29 45 52
53 55 68
Árvore B+ - Remoção - Exemplo
Remover o 68, 52, 7, 45
7
2
1
2
6
7
7
26 45
12 14 16 25 26
29 45
52 55
Árvore B+ - Remoção - Exemplo
Remover o 7, 45 (REDISTRIBUIÇÃO)
12
2 12
1
2
6 12
14 16
26 45
25 26
29 45
53 55
Árvore B+ - Remoção - Exemplo
Remover o 45 (CONCATENAÇÃO)
12
2 12
1
2
6 12
14 16
26
25 26
29 52 55
Árvore B+ – Inserção - Exercício
3) Insira os seguintes números em uma árvore
B+ de ordem 5:
3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31,
35, 56, 2, 6, 7, 10, 12, 15, 16, 17
Árvore B+ – Remoção - Exercício
4) Seja a árvore produzida pelos seguintes
números do exercício anterior:
3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31,
35, 56, 2, 6, 7, 10, 12, 15, 16, 17
Remova os seguintes números:
1, 3, 2, 7, 8, 9, 10, 15, 16, 17, 23, 24, 25, 31, 35, 45,
56, 5, 6, 11, 12, 4
Referências
SZWARCFITER, J. L., MARKENZON, L. Estruturas de
Dados e seus Algoritmos. 3a ed. Rio de Janeiro: LTC,
2010.
TENENBAUM, A. M., LANGSAM, Y., AUGENSTEIN, M.
J. Estruturas de Dados Usando C. São Paulo:
Makron, 1995.
LEISERSON, C. E., RIVEST, R. L., CORMEN, T. H.,
STEIN, C. Algoritmos – Teoria e prática. Rio de
Janeiro: Campus, 2002.
Download