Sei sulla pagina 1di 64

ACESSO MEMRIA

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 binrias so o caso extremo:


Fator mnimo de ramificao (2)
Mxima profundidade (muitos acessos)

Se os acessos so caros (armazenamento secundrio), o desempenho


cai

rvores

rvore binria com 127 ns em 7 nveis.

rvores

rvore 10-aria com 127 ns em 3 nveis.

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

rvores (paged binary trees)

A diviso de uma rvore binria em pginas ilustrada na figura


acima. Nessa rvore de 9 pginas, quaisquer dos 63 registros pode ser
acessado em, no mximo, 2 acessos.

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.

A rvore acima de ordem 5.

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)

Ns com no mximo 1000 elementos:


~500,000
(500*501*2 + 500*2 + 1)

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

O quinto elemento extrapola o tamanho do n


Assim, quando inserimos o 25 devemos dividir o n em
duas partes e colocar o elemento do meio como nova raiz

rvore B
8

Inserindo o 25 ocorre quebra


da regra de tamanho mximo
1

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).

rvore B (remoo caso 1)


Assumindo uma rvore de
ordem 5.

12 29 52

15 22

Eliminar o 2: H chaves suficientes

31 43

56 69 72

rvore B (remoo caso 1)


12 29 52

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)

Assim, o total de elementos


(1 + m + m2 + m3 + + mh)(m 1) =
[(mh+1 1)/ (m 1)] (m 1) = mh+1 1
Quando m = 5 e h = 2 temos 53 1 = 124

Razes para usar rvores B


Na busca de dados no disco, o custo de cada acesso alto
(mas no depende muito do tempo de transferncia do dado
principalmente se forem consecutivos)
Se usarmos uma rvore B de ordem 101 podemos transferir
cada n para a memria primria com um acesso a disco
Uma rvore B de ordem 101 e altura 3 pode armazenar
(1014 1) chaves (aproximadamente 100 milhes) e
qualquer elemento pode ser acessado com no mximo 3
operaes de leitura (assumindo que a raiz permanece na
memria)
Se tomarmos m = 3, temos uma rvore 2-3, na qual um n no
folha tem 2 ou 3 filhos

Potrebbero piacerti anche