Академический Документы
Профессиональный Документы
Культура Документы
Equipe 2:
Amanda de Paula
Joeline Dutra
Rebeca Nunes
Contedo
Histria
Conceito
Fator de Balanceamento
Aplicao
Estrutura de dados
Rotao
Simples
Dupla
Histria
Foi proposta em 1962.
Os matemticos Georgy Adelson-Velsky e Evgenii Landis so
os seus criadores.
A ideia era de uma rvore binria balanceada dinamicamente.
Ou seja, enquanto o dado est sendo inserido.
Este tipo de rvore ficou conhecida como rvore AVL, pelas
iniciais dos nomes dos seus inventores
Histria
Conceito
O diferencial da rvore AVL que seu balanceamento feito
enquanto se adiciona.
O balanceamento feito por rotaes, que podem ser simples
ou duplas, para a direita ou para a esquerda.
A complexidade da rvore no pior caso de 1,44 log n
Essa complexidade se deve ao fato de que a rvore
balanceada dinamicamente.
Conceito
O fator chave da AVL balanceamento.
Balanceamento relacionado ao equilbrio da rvore.
Se ela est maior para um lado do que para o outro,
dependendo de seu tipo, pode no estar em equilbrio.
Como verificar se uma rvore est balanceada? Com o fator
de balanceamento.
Fator de balanceamento
Enquanto para ns algo visual, a mquina apenas processa
dados. Logo o fator de balanceamento se torna necessrio.
O fator de balanceamento (FB) para uma rvore AVL s pode
ser 1, 0 ou -1.
O fator de balanceamento de uma folha sempre 0.
FB=hD-hE
-1
+1
+1
hE
0
hD
Fator de balanceamento
rvores desbalanceadas:
1
8
3
9
5
7
9
Aplicao
Redes de comunicao:
Na reconstruo de mensagens
Ordenando os pacotes
Descartando os repetidos
Codificao de Huffman:
Compresso e descompresso de arquivos
Estrutura de dados
typedef struct no {
int chave;
int fb;
struct no *Pai; //Opcional
struct no *FilhoEsquerdo
struct no *FilhoDireito
} no;
Rotao
Existem 4 tipos de rotao para a rvore AVL.
Elas so:
a
Insere c
FB(c)=0
FB(b)=+1
FB(a)=+2
Balanceando:
a
b
Rotaciona
c
FB(a)=0
FB(c)=0
FB(b)=0
b
a
Passo a passo
Ap = P;
Af = Ap->FilhoDireito; (F)
Ap->FilhoDireito= Af->FilhoEsquerdo;
Af->FilhoEsquerdo = Ap;
Ap = Af;
F
P
F
c
Insere a
FB(a)=0
FB(b)=-1
FB(c)=-2
b
a
Balanceando:
c
b
a
Rotaciona
a
FB(a)=0
FB(c)=0
FB(b)=0
Passo a passo
Ap = P;
Af = Ap->FilhoEsquerdo; (F)
Ap->FilhoEsquerdo = Af->FilhoDireito;
Af->FilhoDireito = Ap;
Ap = Af;
P
F
F
P
a
Insere b
c
b
FB(b)=0
FB(c)=-1
FB(a)=+2
Balanceando:
Primeiro a sub-rvore
c
b
b
Rotao para
a direita
Resultando
c
FB(c)=0
FB(b)=+1
FB(a)=+2
b
c
a
b
c
Rotao
para a
esquerda
FB(a)=0
FB(c)=0
FB(b)=0
b
a
Passo a passo
Ap = P;
Af = Ap->FilhoDireito; (F)
An = Af->FilhoEsquerdo; (N)
Af->FilhoEsquerdo = An->FilhoDireito;
An->FilhoDireito = Af;
Ap->FilhoDireito = An->FilhoEsquerdo;
An->FilhoEsquerdo = Ap;
Ap = An;
N
P
P
F
N
c
Insere b
FB(b)=0
FB(a)=+1
FB(c)=-2
Balanceando:
Primeiro a sub-rvore
b
a
b
Rotao para
a esquerda
c
Resultando
a
FB(c)=0
FB(b)=-1
FB(a)=-2
c
b
a
Rotao
para a
direita
FB(a)=0
FB(c)=0
FB(b)=0
b
a
Passo a passo
Ap = P;
Af = Ap->FilhoEsquerdo; (F)
An = Af->FilhoDireito; (N)
Af->FilhoDireito = An->FilhoEsquerdo;
An->FilhoEsquerdo = Af;
Ap->FilhoEsquerdo = An->FilhoDireito;
An->FilhoDireito = Ap;
Ap = An;
N
F
F
N
Diferena de altura do n
filho do n desbalanceado
Tipo de rotao
Simples esquerda
-1
-1
Simples direita
-2
Insero
Do mesmo modo que na rvore binria.
Inserir e calcular o FB.
Se FB for diferente de -1, 0 e 1, fazer rotao at que esteja
novamente balanceada.
Exemplo:
Remoo
Remoo normal como em ABB
Rebalanceamento
Dvidas?
Referncias
Geral:
WALKER, Julienne. AVL trees. Disponvel em:
http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut
_avl.aspx
Criadores da AVL:
WIKIPEDIA. Evgenii Landis. Disponvel em:
http://en.wikipedia.org/wiki/Evgenii_Landis
WIKIPEDIA. Georgy Adelson-Velsky. Disponvel em:
http://en.wikipedia.org/wiki/Georgy_Adelson-Velsky
Fator de balanceamento:
rvore AVL. Disponvel em:
http://www.passeidireto.com/arquivo/2536633/arvore-avl
Referncias
Complexidade e aplicao:
TOFFOLO, Tlio. rvores AVL. Disponvel em:
http://www.decom.ufop.br/toffolo/site_media/uploads/20111/bcc202/slides/25._arvores_%28parte_2%29.pdf
Codificao de Huffman:
BORGES, Henrique. Algoritmo de Huffman. Disponvel em:
http://www.youtube.com/watch?v=2yWfo50jZiw
COSTA, Jean. Algoritmo de Huffman. Disponvel em:
http://www.youtube.com/watch?v=MXI4LWgDucA
WIKIPDIA. Codificao de Huffman. Disponvel em:
http://pt.wikipedia.org/wiki/Codifica%C3%A7%C3%A3o_de_Huff
man
Referncias
Estrutura de dados:
DUTRA, Caio. rvore Binria AVL. Disponvel em:
http://www.vivaolinux.com.br/script/Arvore-binaria-AVL
Rotao:
ANDRADE, Lvia. rvores AVL. Disponvel em:
http://www.passeidireto.com/arquivo/1012626/aula-5_arvoreavl
HARGROVE, John. The AVL Tree Rotations Tutorial. Disponvel em:
http://pages.cs.wisc.edu/~paton/readings/liblitVersion/AVL-TreeRotations.pdf
NASCIMENTO, Edson. rvore AVL. Disponvel em:
http://colabweb.ufam.edu.br/pluginfile.php/14107/mod_resourc
e/content/3/aed2_10_Arvore%20AVL.pdf
Referncias
Insero e Remoo:
BUENO, Letcia. rvores AVL. Disponvel em:
http://professor.ufabc.edu.br/~leticia.bueno/classes/aed2/materi
ais/avl.pdf
MORRIS, John. AVL trees. Disponvel em:
https://www.cs.auckland.ac.nz/software/AlgAnim/AVL.html