Escolar Documentos
Profissional Documentos
Cultura Documentos
rvores Balanceadas
Uma rvore dita balanceada quando as suas subrvores esquerda e direita possuem a mesma altura. Todos os links vazios esto no mesmo nvel, ou seja, que a rvore est completa. A rvore que no est balanceada, define-se como degenerada
d b
b
c d e a
(c) b
f c e g
f a c e g
(b)
a
(a)
rvores Balanceadas
Balanceamento Esttico
O balanceamento esttico de uma rvore binria consiste em construir uma nova verso, reorganizando-a.
rvores AVL
Assim, para cada nodo podemos definir um fator de balanceamento (FB), que vem a ser um nmero inteiro igual a
FB(nodo p) = altura(subrvore direita p) altura(subrvore esquerda p)
O Fator de uma folha sempre Zero (0)
rvores Balanceadas
Exemplos de rvores AVL e rvores no-AVL. Os nmeros nos nodos representam o FB para cada nodo. Para uma rvore ser AVL os fatores de balano devem ser necessariamente -1, 0, ou 1. Exemplos de rvores AVL
rvores AVL
Se quisermos manter a rvore balanceada a cada insero, devemos ter um algoritmo que ajuste os fatores de balanceamento O algoritmo corrige a estrutura atravs de movimentao dos ns, ao que chamamos de rotao.
A rvore acima est balanceada, como podemos observar pelos FB de cada nodo. Os casos possveis de desbalanceamento so 2. Veremos cada um deles.
O nodo 8 fica com o FB -2 e tem um filho com FB +1. Neste caso o balanceamento atingido com duas rotaes, tambm denominada ROTAO DUPLA. Primeiro rotaciona-se o nodo com FB 1 para a esquerda.
A seguir rotaciona-se o nodo que tinha FB -2 na direo oposta (direita neste caso).
Os FB nos nodos voltaram a ficar dentro do esperado das rvores AVL. O caso simtrico ao explicado acima acontece com os sinais de FB trocados, ou seja, um nodo com FB +2 com um filho com FB -1. Tambm utilizariamos uma rotao dupla, mas nos sentidos contrrios, ou seja, o nodo com FB -1 seria rotacionado para a direita e o nodo com FB +2 seria rotacionado para a esquerda.
A insero do nodo 3 produziu um desbalano no nodo 8 verificado pelo FB -2 neste nodo. Neste caso, como os sinais dos FB so os mesmos (nodo 8 com FB -2 e nodo 4 com FB -1) significa que precisamos fazer apenas uma ROTAO SIMPLES direita no nodo com FB -2. No caso simtrico (nodo com FB 2) faramos uma rotao simples esquerda.
Observe que os FB esto dentro do esperado para mantermos a propriedade de balanceamento de rvores AVL.
Exerccios
Exerccio 1
Considere a insero dos seguintes valores (nesta ordem) em uma rvore AVL: 5,3,8,2,4,7,10,1,6,9,11. Para essas inseres nenhuma rotao necessria. Desenhe a rvore AVL resultante e determine o fator de balanceamento de cada n.
Exerccio 2
Construir uma rvore AVL com os seguintes dados: Inserir inicialmente 10, 20, 30 Se necessrio fazer balanceamento Inserir 25 e 27 Se necessrio fazer balanceamento
Resoluo do Exerccio 2
A insero dos 3 primeiros nmeros resulta na seguinte rvore:
10
+2
20
+1 0
30
Aps a insero do elemento 30 a rvore fica desbalanceada. O caso acima do Tipo 2. Fazemos uma rotao para a esquerda no nodo com FB 2. A rvore resultante fica:
20
0
10
30
Resoluo do Exerccio 2
O passo seguinte inserir os nodos 25 e 27. A rvore fica desbalanceada apenas aps a insero do nodo 27 Este caso do Tipo 1. O nodo 30 tem FB -2 e o seu nodo filho tem FB 1. Precisamos efetuar uma rotao dupla, ou seja, uma rotao simples esquerda do nodo 25, resultando:
20
+2
20
+2
10
30
-2
25
+1
27
10
30
-2
27
-1
25
Resoluo do Exerccio 2
seguida de uma rotao simples direita do nodo 30, resultando:
20
+1
10
27
25
30
Exerccio 3
Determinado sistema armazena registros por chaves numricas em uma rvore AVL. Nessa rvore so inseridos os seguintes valores: 20,10,5,30,25,27 e 28 nessa ordem. Apresente passo a passo como a rvore vai sendo construda. Realize as rotaes necessrias e indique qual rotao foi realizada em cada caso.
Resoluo: Exerccio 3
1) Insero das chaves 20 e 10, nessa ordem A rvore ficou pendendo para a esquerda O fator de balanceamento do n cuja chave 20 -1. O fator de uma folha sempre 0 (zero). 2) ...Continuar as inseres
20 10
(0)
(-1)
rvores Multivias
Em uma rvore binria, cada n possui um item de dado e pode ter at dois filhos. Se permitirmos o uso de mais itens de dados e filhos por n, o resultado uma rvore Multivias ou M-vias (multiway tree). Uma Estrutura Multivia com algoritmo eficiente deve considerar:
Tempo de acesso a cada n Balanceamento da rvore.
As rvores 2-3-4, so rvores multivias que podem ter at quatro filhos e trs itens de dados por n.
rvores 2-3-4
rvores 2-3-4 so interessantes por vrias razes:
So rvores balanceadas. Fceis de programar. Servem como uma introduo para rvores B.
rvores 2-3-4
A figura mostra uma pequena rvore 2-3-4. Cada n pode conter um, dois ou trs itens de dados.
50
30
60 70 80
10 20
40
55
62 64 66
75
83 86
rvores 2-3-4
Um n interno deve sempre ter um filho a mais que seus itens de dados. Um n folha, ao contrrio, no possui filhos, mas ele pode conter um, dois ou trs itens de dados. Ns vazios no so permitidos. Devido a uma rvore 2-3-4 possuir ns com at quatro filhos, ela chamada de rvore multivias de ordem 4 (multiway tree of order 4).
rvores 2-3-4
O 2, 3 e 4 no nome rvore 2-3-4 referem-se a quantos links para filhos podem potencialmente estar contidos em um dado n. Para ns internos (no folhas), trs combinaes so possveis: um n com um item de dado sempre possuir dois filhos; um n com dois itens de dados sempre possuir trs filhos; um n com trs itens de dados sempre possuir quatro filhos.
50
30
60 70 80
10 20
40
55
62 64 66
75
83 86
rvores 2-3-4
rvores 2-3-4
Um n com dois links chamado 2-ns, Um n com trs links chamado 3-ns Um n com quatro links chamado 4-ns
25
0 1
40 62
3-ns
2
2-ns
12
33 37
27 33
51 55 59
83
50 75 95
0 1 2 3
4-ns
30 35
55
78
100 105
rvores 2-3-4
todos os itens de dados na sub-rvore enraizada no filho 0, possuem valores menores do que a chave 0; todos os itens de dados na sub-rvore enraizada no filho 1, possuem valores maiores do que a chave 0, mas menores do que a chave1; todos os itens de dados na sub-rvore enraizada no filho 2, possuem valores maiores do que a chave 1, mas menores do que a chave2; todos os itens de dados na sub-rvore enraizada no filho 3, possuem valores maiores do que a chave 2. Valores duplicados geralmente no so permitidos. Deste modo ns no necessitamos nos preocupar com a comparao de chaves iguais.
A
0
N com chaves menores do que A
C
2
N com chaves entre B e C
1
N com chaves entre A e B
3
N com chaves maiores do que C
30
60 70 80
10 20
40
55
62 64 66
75
83 86
do n
a) Antes da insero 11 5 9 13 23 30
28 42
55 74 44 47 63 67 72 97
- O item 23 vai ser deslocado para direita para abrir espao para inserir o item 18.
b) Depois da insero 28 55
11
42
74
13
18
23
30
44
47
63
67
72
97
18 inserido
a) Antes da insero
62
insero do 99
29 A 15 21 47 74 87 89
83
92 B
104 C 97
n a ser dividido
112
Um novo n vazio criado. Ele parente (sibling) do n que est sendo dividido, e colocado a sua direita;
O item de dado C movido para o novo n; O item de dado B movido para o pai do n que est sendo dividido; O item de dado A fica aonde ele est; Os dois filhos mais direita so desconectados do n que est sendo dividido e so conectados no novo n.
b) Aps a insero 62 83 fica no lugar 29 83 A 15 21 47 74 87 89 92 B 92 movido para cima 104 foi p/ direita 104 C 97 99 112 99 inserido
novo n
a) Antes da insero A 9 13 31 35
26
49 B
72 C 52 61
82
o item de dado C movido para o novo n parente; o item de dado B movido para a nova raiz; o item de dado A deixado aonde est; os dois filhos mais a direita do n que est sendo dividido so desconectados dele e conectados no novo n do lado direito.
b) Aps a insero 49 movido p/cima 49 B 26 fica no lugar 26 A 9 13 31 35 41 52 41 inserido 61 72 movido p/ direita 72 C 82 novo n direita novo n raiz
rvores B
rvore B
So rvores de pesquisa balanceadas especialmente projetadas para a pesquisa de informao em discos magnticos e outros meios de armazenamento secundrio. Minimizam o nmero de operaes de movimentao de dados (escrita/leitura) numa pesquisa ou alterao. O grau de um n pode ser alto. Podem ser consideradas como uma generalizao natural das rvores de pesquisa binrias.
rvores B
As rvores so uma boa abordagem para dados em memria. Mas, as rvores trabalham com arquivos?
Elas trabalham, mas um tipo diferente de rvore precisa ser usado para dados externos do que para dados em memria.
A rvore apropriada um rvore mltivias, parecida com uma rvore 2-3-4, mas com muito mais itens de dados por n Ela se chama rvore B (tree-B). As rvores B foram concebidas como estrutura apropriada para armazenamento externo por R. Bayer e E. M. McCreight em 1972. rvores M-Vias permanentemente balanceadas so chamadas de rvore B.
rvores B - Links
Em uma rvore, precisamos tambm armazenar os links para outros ns. Em uma rvore em memria, estas ligaes so referncias (ou ponteiros, em linguagens como Pascal e C) para os ns em outras partes da memria. Para as rvores armazenadas em um arquivo em disco, as ligaes (links) so nmeros de blocos em um arquivo.
rvores B Caractersticas
A raiz tem no mnimo uma chave e dois filhos Uma folha tem no mnimo d chaves e no tem filhos Todas as folhas esto no mesmo nvel (balanceamento)
Pesquisa em rvores B
Primeiro, o bloco contendo a raiz lido. O algoritmo de pesquisa ento inicia a verificao de cada um dos registros (se ele no estiver cheio, tantos quantos o n atualmente armazena) iniciando pelo registro 0. Quando ele encontra um registro com chave maior, ele sabe que deve ir para o filho que reside entre este registro e o precedente. Este processo continua at o n correto ser encontrado. Se uma folha alcanada sem encontrar a chave especfica, a pesquisa no obteve sucesso.
Insero em rvores B
Em uma rvore B importante manter um n to cheio quanto possvel; deste modo cada acesso disco, o qual l uma entrada de um n, pode adquirir o mximo de quantidade de dados.
(a)
20
40
60
80
70
20
40
60
70 80
60 (c) 10 20 30 40 70 80
15 10 15 20 30 40
20 (d) 10 15
60
30
40
70
80
20 (f)
60
80
10
15
30
40
70
75
85
90
10
15
30
40
70
75
85
90
20 (h)
35
60
80
10
15
25
30
40
50
70
75
85
90
10
15
25
30
40
50
70
75
85
90
20 (j)
35
60
80
10
15
22
25
27
30
40
50
70
75
85 90
O prximo item a ser inserido, 32, no causa uma diviso, na realidade, ele causa duas divises. O segundo n filho, est cheio, deste modo, ele dividido, como visto na figura (l). O item 27, promovido a partir da diviso, no foi colocado no seu lugar porque a raiz est cheia. Portanto a raiz tambm precisa ser dividida, resultando no arranjo presente na figura (M).
20 (k) 35 60 80 32 22 25 27 30 32
10
15
22
25
27
30
40
50
70
75
85 90
20 (l) 10 15 22
35
60
80
27 20 27 35 60 80
25
40
50
70
75
85 90
35 (M) 20 27 60 80
10 15
22 25
30 32
40 50
70 75
85 90
Insero:
sempre feita nas folhas Percorrer a rvore em busca da chave Verificar se o n esta cheio: se contm (2T-1) chaves Se o n estiver cheio: Dividir ao meio Colocar chave no n pai Se este tambm estiver cheio repetir o processo
Arvores B+
uma variante da rvore B Os ns internos so indexados para acesso rpido aos dados. As folhas possuem estrutura diferente da rvore B. Elas formam um conjunto de seqncia, de modo que varrer essa lista de folhas resulta nos dados obtidos na ordem ascendente. Ela um ndice implementado como uma rvore B regular mais uma lista ligada de dados.
Arvores B+
Inserir em uma folha que tenha espao, significa colocar a folha em ordem Inserir em uma folha cheia: A folha dividida, o novo n includo no conjunto de seqncias. A primeira chave do nono n copiada (no movida como na rvore B) para o ascendente. Poder exigir reorganizao no nodo ascendente Se o ascendente est cheio, ocorre mesmo processo da rvore B
Exemplo: Insero em B+
Exemplo: Remoo em B+