Escolar Documentos
Profissional Documentos
Cultura Documentos
SECUNDRIA - RVORES
ORI Prof. Dr. Ednaldo Pizzolato
rvores
Motivao
Quando no conseguimos trabalhar na
memria principal (ou primria), temos que
usar a memria secundria...
Sabemos que o acesso aos dados em
memria secundria muito lento.
Precisamos de meios eficientes de acesso
aos dados (provavelmente na forma de
ndices)
rvores
Motivao (recordando...):
Assuma que um disco gire a 3600 RPM
Em 1 minuto faz 3.600 rotaes, portanto uma
rotao leva 1/60 de segundo, ou 16.7ms
Na mdia cada acesso gastaria 8ms
Parece ok at nos darmos conta que 120 acessos a
disco consomem um segundo o mesmo que 25
millhes de instrues
Ou seja, um acesso a disco equivalente a 200.000
instrues
rvores
Solues?
rvores... (AVLs, rvores-B,...)
rvores
Para rvores balanceadas com n itens, as
operaes na rvore (insero etc) so
O(log n) porque a altura da rvore
aproximadamente log n.
Exemplos:
binary tree c/ 1000 itens:
h ~= log2 1000 ~= 10
10-ary tree c/ 1000 itens:
h ~= log10 1000 ~= 3
rvores
Assuma que usaremos uma AVL para
armazenar dados de motoristas (+/- 20 milhes
de registros)
Teramos uma rvore bem alta (vrios acessos
a disco);
log2 20.000.000 +/- 24, o que consome +/- 0.2
segundos
A soluo aumentar o nmero de ramificaes
na rvore diminuindo, assim, a altura!
rvores
TRADEOFF
Fator de ramificao
Complexidade de comparaes
Tamanho do n
rvores
rvores
rvores
rvores n-rias
n ponteiros
n-1 chaves
rvores n-rias
10 20 30 40
d<10
10<d<20
20<d<30
30<d<40
40<d
rvore B
class NO_BTree
{
Private:
Tipo
chave[20];
NO_BTree
p[21];
int
Qdade_chaves;
Public:
mtodos
}
rvore B
1
2
rvore B
Uma rvore B de ordem m uma rvore m-way (i.e., uma rvore onde
cada n pode ter at m filhos) e que:
1 .O nmero de chaves em cada n no folha um a menos
que o nmero de filhos e cada filho est organizado
no contexto de rvore de busca;
2. Todas as folhas esto no mesmo nvel;
3. Todas as no-folhas - menos a raz tm no mnimo m / 2
filhos;
4. A raz ou uma folha ou tem de 2 a m filhos;
5. Um n folha no contm mais que m 1 chaves;
6. O nmero m deve ser sempre mpar;
rvore B
Ordem
A definio atual de BTree vincula a ordem de
uma rvore B ao nmero
de descententes de um
n (isto , de ponteiros).
Deste modo, numa rvore
B de ordem m, o nmero
mximo de chaves m-1.
Exemplo:
Uma rvore B de ordem 8
tem um mximo de 7
chaves por pgina.
rvore B
Nmero mnimo de chaves por pgina
Quando uma pgina
dividida
na
insero
(SPLIT), os ns so
divididos igualmente entre
as pginas velha e nova.
Deste modo, o nmero
mnimo de chaves em um
n dado por m/2 - 1
(exceto para a raiz).
rvore B
Nmero mnimo de
chaves por pgina
Exemplo: Uma rvore
B de ordem 8 (que
tem um mximo de 7
chaves por pgina)
ter um mnimo de 3
chaves por pgina.
rvore B
N folha
Os ns folhas so
aqueles alocados
no nvel mais baixo
da rvore.
rvore B
Capacidade Mxima
Ns com no mximo 1000 elementos:
h 0:
1000
h 1:
1000+1001*1000 = 1.002.000
h 2:
~1 Bilho
rvore B
Capacidade Mnima
(para rvore de 2 nveis)
rvore B
Suponha que iniciemos com uma rvore B vazia e 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
Queremos construir uma rvore B de ordem 5
Os 4 primeiros elementos vo para a raz:
1
12
rvore B
8
12
25
12
preciso fazer o
split
25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45
25
rvore B
8
Em seguida colocamos 6, 14 e 28 :
8
12
14
25
28
6 14 28 17 7 52 16 48 68 3 26 29 53 55 45
12
25
rvore B
Adicionando 17 rvore teremos outro split
8
12
14
25
28
17
17 7 52 16 48 68 3 26 29 53 55 45
rvore B
8
17
12
14
25
28
17 7 52 16 48 68 3 26 29 53 55 45
rvore B
Continuandocom7,52,16e48
8
12
17
14
16
25
7 52 16 48 68 3 26 29 53 55 45
28
48
52
rvore B
Eagora,inserindoo68
8
12
17
14
68 3 26 29 53 55 45
16
25
28
48
52
68
rvore B
Adicionando 68 rvore causa um split na folha mais direita,
fazendocomqueo48subaraiz.Quandoinserimoso3osplit
na folha mais esquerda (o 3 sobe); 26, 29, 53, 55 vo para as
folhas:
12
14
17
16
68 3 26 29 53 55 45
48
25
26
28
29
52
53
55
68
rvore B
Porfimo45:
45
12
14
17
16
48
25
26
28
29
52
53
55
68
rvore B
Por fim, quando inserimos o 45, isso forar com que o 28 suba
paraaraizMasaraiztambmestcheia!
17
48
28
1
12
14
16
25
26
29
45
52
53
55
68
rvore B
Por fim, quando inserimos o 45, isso forar com que o 28 suba
paraaraizMasaraiztambmestcheia!
12
14
17
16
28
25
48
26
29
45
52
53
55
68
rvore B
O17temquesubirparasetornaranovaraizlembremsequea
raizpodeterumnicoelemento.
17
12
14
16
28
48
25
26
29
45
52
53
55
68
rvore B
17
28
12
14
16
25
26
29
48
45
52
53
55
68
rvore B
40 35 22 17 64 128 256 79 110 45 20 11 200 419 66 75 318 44
122 350 390 12 -45 14 -4 -10 5 500 100 13 25 32 49 39 93 7 3
-12
rvore B
40
35
40
22
17
22
35
40
35
40
rvore B
64
17
22
35
40
rvore B
35
17
22
40
64
rvore B
35
17
22
40
64
128
256
rvore B
35
17
22
128
40
64
219
256
rvore B
35
17
22
128
40
64
79
110
219
256
rvore B
35
17
22
40
45
64
128
79
110
219
256
rvore B
35
17
20
22
40
45
64
128
79
110
219
256
rvore B
35
11
17
20
22
40
45
64
128
79
110
219
256
rvore B
35
11
17
20
22
40
45
64
128
79
110
200
219
256
rvore B
35
11
17
20
22
40
45
64
128
79
110
200
219
256
419
rvore B
35
11
17
20
22
40
45
64
128
66
79
110
200
219
256
419
rvore B
35
11
17
20
22
40
45
64
128
66
75
79
110
200
219
256
419
rvore B (insero)
Tente inserir a nova chave em um n folha (na posio
adequada)
Se isso fizer com que o n fique cheio, divida a folha em
duas partes e suba o elemento central para o n pai;
Se isso fizer com que o pai fique cheio repita o processo;
A estratgia poder ser repetida at o n raiz;
Se necessrio o n raiz dever ser tambm divido e o
elemento central ser transformado em nova raiz
(fazendo com que a rvore fique mais alta)
rvore B
Insira os seguintes nmeros 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
rvore B (remoo)
Durante a insero, a chave sempre vai para a
folha. Na remoo desejamos remover da folha.
Assim, temos 3 possibilidades:
1 Se a chave j est em um n folha e sua
remoo no faz com que o n fique com
poucos elementos (menos que m / 2 filhos),
ento apenas elimine-a.
2 Se a chave no folha, ento garantido
que seu predecessor ou sucessor esteja em um
n folha e neste caso podemos eliminar a
chave e subir o predecessor ou sucessor para a
posio ocupada pela chave eliminada.
rvore B (remoo)
Se (1) ou (2) ocasionam uma folha a ter um
nmero menor que o mnimo ento temos que
observar os irmos adjacentes ao n em
questo :
3: Se um deles tem nmero de chaves maior que o
mnimo ento pode-se subir uma chave deste n para
o n pai e pegar a chave do n pai para a posio da
chave eliminada;
4: Se ambos irmos no tm nmero de chaves maior
que o mnimo, ento suas chaves devem ser
combinadas com a chave do n pai. Se este passo
fizer com que o n pai fique com menos chaves que o
permitido o processo deve ser repetido at o n raiz
(se necessrio).
12 29 52
15 22
31 43
56 69 72
15 22
31 43
Eliminar o 52
56 69 72
rvore B
(remoo de n no folha)
12 29 56
52
15 22
31 43
Elimina 52
56 69 72
rvore B
(remoo de n no folha)
12 29 56
52
15 22
31 43
Elimina 52
69 72 72
rvore B
(remoo - Poucas chaves nos ns irmos)
12 29 56
Combina
15 22
31 43
69 72
Poucas
Eliminar
o 72
chaves!
rvore B
(remoo - Poucas chaves nos ns irmos)
12 29
15 22
31 43 56 69
Eliminar o 22
rvore B
(remoo - irmo OK)
12 29
Descer chave do n pai e
subir chave na folha
15 22
31 43 56 69
Eliminar o 22
rvore B
(remoo - irmo OK)
12 31
15 29
43 56 69
Animao
http://slady.net/java/bt/view.php?w=600&h=450
Anlise de rvore B
O nmero mximo de elementos em uma rvore B de
ordem m e altura h :
raiz
nivel 1
nivel 2
. . .
nivel h
m1
m(m 1)
m2(m 1)
mh(m 1)