SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Árvores Balanceadas
AVL
Prof: Sergio Souza Costa
Sobre mim
Sérgio Souza Costa
Professor - UFMA
Doutor em Computação Aplicada (INPE)
prof.sergio.costa@gmail.com
https://sites.google.com/site/profsergiocosta/home
https://twitter.com/profsergiocosta
http://gplus.to/sergiosouzacosta
http://www.slideshare.net/skosta/presentations?order=popular
Introdução
● As árvores binárias de busca permitem a
organização da informação com o objetivo a
otimizar as buscas.
Introdução
● As árvores binárias de busca permitem a
organização da informação com o objetivo a
otimizar as buscas.
● Ela permite o acesso mais rapido aos
elementos dado que os elementos estão
organizados na árvore, obedecendo uma
certa propriedade.
■ Esquerda são os menores que a raiz
■ Direita são os maiores que a raiz
Introdução
● As Árvores binárias de busca (ABB)
estudadas têm uma séria desvantagem
que pode afetar o tempo necessário para
recuperar um item armazenado.
Introdução
Insiram os seguintes valores em uma árvore
binária de busca (ABB):
1, 2, 3, 4, 5, 6, 7 4, 6, 2, 5, 1, 7, 3
O que vocês concluem com isso ?
Introdução
A desvantagem é que o desempenho da ABB depende
da ordem em que os elementos são inseridos.
Introdução
A desvantagem é que o desempenho da ABB depende
da ordem em que os elementos são inseridos.
Idealmente, deseja-se que a árvore esteja balanceada,
para qualquer nó p da árvore.
Introdução
A desvantagem é que o desempenho da ABB depende
da ordem em que os elementos são inseridos.
Idealmente, deseja-se que a árvore esteja balanceada,
para qualquer nó p da árvore.
Como saber se a árvore está balanceada ?
Introdução
A desvantagem é que o desempenho da ABB depende
da ordem em que os elementos são inseridos.
Idealmente, deseja-se que a árvore esteja balanceada,
para qualquer nó p da árvore.
Como saber se a árvore está balanceada ?
A altura dos nós
é um importante
dado.
AVL
● O nome AVL vem de seus criadores Adelson Velsky e Landis
(1962).
● Uma árvore binária de pesquisa T é denominada AVL se:
○ Para todos nós de T, as alturas de suas duas sub-árvores
diferem no máximo de uma unidade.
20
30
10
40
35
20
30
10
4035
Qual é AVL ? Que nó
esta desbalanceado ?
a) b)
AVL
● Como saber se a árvore está
desbalanceada?
AVL
● Como saber se a árvore está
desbalanceada?
○ Verificando se existe algum nodo “desregulado”.
AVL
● Como saber se a árvore está
desbalanceada?
○ Verificando se existe algum nodo “desbalanceado”.
● Como saber se um nodo está
desbalanceado ?
AVL
● Como saber se a árvore está
desbalanceada?
○ Verificando se existe algum nodo “desbalanceado”.
● Como saber se um nodo está
desbalanceado ?
○ Subtraindo-se as alturas das suas sub-árvores.
Fator de balanceamento
● O fator de balanceamento é dado por:
○ altura (SAE) – altura(SAD)
● Ou,
○ altura (SAD) – altura(SAE)
Fator de balanceamento
● O fator de balanceamento é dado por:
○ altura (SAE) – altura(SAD)
● Ou,
○ altura (SAD) – altura(SAE)
● O fator de balanceamento de um nodo é dado pelo seu
peso em relação a sua sub-árvore.
○ Um nodo pode ter um fator balanceado de 1, 0, ou -1.
○ Um nodo com fator de balanceamento -2 ou 2 (diferença de
2 elementos) é considerado desbalanceado e requer um
balanceamento.
AVL - Calculando o fator
20
30
10
40
35
Coloque as alturas de cada nó
AVL - Calculando o fator
20
30
10
40
35
0
1
Coloque as alturas de cada nó
2
3
0
-1 -1
-1
-1
-1
-1
AVL - Calculando o fator
20
30
10
40
35
0
1
Coloque as alturas de cada nó
Calcule o fator de balanceamento
altura (SAE) - altura (SAD)
2
3
0
-1 -1
-1
-1
-1
-1
AVL - Calculando o fator
20
30
10
40
35
0
1
altura (SAE) - altura (SAD)
2
3
0
-1 -1
-1
-1
-1
-1
0 - 2 = -2
AVL - Calculando o fator
20
30
10
40
35
0
1
altura (SAE) - altura (SAD)
2
3 (-2)
0
-1 -1
-1
-1
-1
-1
0 - 2 = -2
AVL - Calculando o fator
20
30
10
40
35
0
1
altura (SAE) - altura (SAD)
2
3 (-2)
0
-1 -1
-1
-1
-1
-1
-1 - 1 = -2
AVL - Calculando o fator
20
30
10
40
35
0
1
altura (SAE) - altura (SAD)
2 (-2)
3 (-2)
0
-1 -1
-1
-1
-1
-1
-1 - 1 = -2
AVL - Calculando o fator
20
30
10
40
35
0 (0)
1 (1)
altura (SAE) - altura (SAD)
2 (-2)
3 (-2)
0 (0)
-1 -1
-1
-1
-1
-1
AVL - Calculando o fator
20
30
10
40
35
0 (0)
1 (1)
altura (SAE) - altura (SAD)
2 (-2)
3 (-2)
0 (0)
-1 -1
-1
-1
-1
-1
Uma árvore binária de pesquisa T é
denominada AVL se:
○ Para todos nós de T, as alturas de
suas duas sub-árvores diferem no
máximo de uma unidade.
AVL - Calculando o fator
20
30
10
40
35
0 (0)
1 (1)
altura (SAE) - altura (SAD)
2 (-2)
3 (-2)
0 (0)
-1 -1
-1
-1
-1
-1
Uma árvore binária de pesquisa T é
denominada AVL se:
○ Para todos nós de T, as alturas de
suas duas sub-árvores diferem no
máximo de uma unidade.
Atividades
Insira os seguintes valores em uma árvore
binária, coloque os fatores de balanceamento e
diga se é ou não uma AVL e qual nó esta
desbalanceado:
a) [30,15, 50, 5,10, 20]
b) [ 80, 40, 100, 120, 90, 30]
c) [10, 50, 4, 90, 20, 8]
Como balancear ?
Como balancear ?
Através de operações de
rotações!!!!
Rotações
Existem quatro operações de rotações:
Rotação simples à Esquerda
Rotação simples à Direita
Rotação Dupla à Esquerda
Rotação Dupla à Direita
Rotações
Existem quatro operações de rotações:
Rotação simples à Esquerda
Rotação simples à Direita
Rotação Dupla à Esquerda
Rotação Dupla à Direita
As duplas são
derivadas das
simples
Rotações
● Quando usar as Rotações ?
○ Na inserção de um elemento
○ e na remoção de um elemento
● É provado que no máximo uma rotação é
suficiente para realizar o balanceamento de
uma árvore quando é inserido ou removido
um elemento
Rotações e balanceamento
Vamos ver primeiro as operações de rotação e
depois usa-las para balanceamento.
Rotações
Rotação a direita
Rotação a direita
Rotação a esquerda
Rotação a direita
Rotação a direita
30
20
10
Imagine a seguinte
árvore....
Rotação a direita
30
20
10
30
20
10
Imagine a seguinte
árvore....
Rotação a direita
30
20
10
30
20
10
Imagine a seguinte
árvore....
Rotação a direita
Atividades
Insiram os seguintes valores e depois rotacione
para a direita a partir da raiz:
a) [40,30, 20]
b) [40, 30, 20, 35]
c) [40, 50, 30, 20, 35]
Rotação a esquerda
Rotação a esquerda
Atividades
Insiram os seguintes valores e depois rotacione
para a esquerda a partir da raiz:
a)[40, 50, 60]
b) [40, 50, 10, 60]
c) [40, 20, 10, 50, 60, 70]
Rotação dupla a esquerda
Rotação dupla a esquerda
Atividades
Insiram os seguintes valores e depois rotacione
dupla a esquerda a partir da raiz:
a)[20, 40, 30]
b) [20, 40, 30, 50]
c) [20, 10, 40, 30, 50, 12]
Rotação dupla a direita
Rotação dupla a direita
Atividades
Insiram os seguintes valores e depois rotacione
dupla a direita a partir da raiz:
a) [40, 20, 30]
b) [40, 20, 30, 50]
c) [40, 20, 30, 10,50, 80]
Como usar as rotações para
manter uma árvore balanceada, ou
seja, uma AVL ?
Balanceamento
Ao inserir um novo elemento em uma árvore,
pode ser que um dos seus nós ascendentes se
torne desbalanceado, avô, bisavô ...
Balanceamento
Algoritmo:
A cada inserção, checa-se os nós ascedentes.
Balanceamento
Algoritmo:
● Aplica-se, o mesmo algoritmo de inserção
da árvore binária de busca.
● A cada inserção, checa-se os nós
ascedentes.
● Caso o nó esteja desbalanceado, existem
quatro diferentes configurações, como
veremos a seguir.
○ Para cada configração, existe uma rotação indicada.
Exemplo
10
altura (SAE) - altura (SAD)
[10, 20, 30]
Exemplo
10
20
FB: -1 - 0 = -1 OK
altura (SAE) - altura (SAD)
[10, 20, 30]
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
FB: -1 - 0 = -1 OK
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
FB: -1 - 1 = -2 Perigo: desbalanceado
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
FB: -1 - 1 = -2 Perigo: desbalanceado
Qual a rotação indicada
neste caso ?
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
FB: -1 - 1 = -2 Perigo: desbalanceado
Qual a rotação indicada
neste caso ?
Rotação simples a
esquerda.
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30]
30
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40]
30
40
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
40
35
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
40
35
FB: -1 - 1 = -2 Perigo: desbalanceado
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
40
35
FB: -1 - 1 = -2 Perigo: desbalanceado
Qual a rotação indicada
neste caso ?
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
40
35
FB: -1 - 1 = -2 Perigo: desbalanceado
Qual a rotação indicada
neste caso ?
Rotação dupla a
esquerda.
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
40
35
rotação
direita
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
35
40
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
30
35
40
rotação
esquerda
Exemplo
10
20
altura (SAE) - altura (SAD)
[10, 20, 30, 40, 35]
35
30
40
FB: 0 - 1 = -1 OK
continua a checagem com o no
ascendente.
Atividades
A partir de uma árvore AVL, insiram os
seguintes valores:
a) [10, 20,15,45,67,81,91,10]
b) [1, 5,80,20,67,91,8,10]
c) [10,20,30, 50, 5, 15, 30]

Mais conteúdo relacionado

Mais procurados

Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 
Aula 5 - Dicionário de Dados
Aula 5 - Dicionário de DadosAula 5 - Dicionário de Dados
Aula 5 - Dicionário de DadosJanynne Gomes
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Árvores binárias balanceadas
Árvores binárias balanceadasÁrvores binárias balanceadas
Árvores binárias balanceadasrenatopaschoal
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)Vitor Hugo Melo Araújo
 
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010Joeldson Costa Damasceno
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Leinylson Fontinele
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Pacc UAB
 

Mais procurados (20)

Modelação de Dados
Modelação de DadosModelação de Dados
Modelação de Dados
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Modulo 2 nocoes de estatistica
Modulo 2   nocoes de estatisticaModulo 2   nocoes de estatistica
Modulo 2 nocoes de estatistica
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
Aula 5 - Dicionário de Dados
Aula 5 - Dicionário de DadosAula 5 - Dicionário de Dados
Aula 5 - Dicionário de Dados
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Árvores binárias balanceadas
Árvores binárias balanceadasÁrvores binárias balanceadas
Árvores binárias balanceadas
 
Instalação de rede
Instalação de redeInstalação de rede
Instalação de rede
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)Aula 12 – Sistema de Numeração (Conversão de Bases)
Aula 12 – Sistema de Numeração (Conversão de Bases)
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010
Informática Básica - Criação de Tabelas e Gráficos no Microsoft Word 2010
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 

Mais de Sérgio Souza Costa

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasSérgio Souza Costa
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosSérgio Souza Costa
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosSérgio Souza Costa
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaSérgio Souza Costa
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoSérgio Souza Costa
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theoremsSérgio Souza Costa
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsSérgio Souza Costa
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosSérgio Souza Costa
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Sérgio Souza Costa
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)Sérgio Souza Costa
 

Mais de Sérgio Souza Costa (20)

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicas
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficos
 
Modelagem de dados geográficos
Modelagem de dados geográficosModelagem de dados geográficos
Modelagem de dados geográficos
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de abertura
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - Introdução
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theorems
 
Turing e o problema da decisão
Turing e o problema da decisãoTuring e o problema da decisão
Turing e o problema da decisão
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cells
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetos
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)
 
Herança e Encapsulamento
Herança e EncapsulamentoHerança e Encapsulamento
Herança e Encapsulamento
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
Introdução ao Prolog
Introdução ao PrologIntrodução ao Prolog
Introdução ao Prolog
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 

Árvores AVL Balanceadas

  • 2. Sobre mim Sérgio Souza Costa Professor - UFMA Doutor em Computação Aplicada (INPE) prof.sergio.costa@gmail.com https://sites.google.com/site/profsergiocosta/home https://twitter.com/profsergiocosta http://gplus.to/sergiosouzacosta http://www.slideshare.net/skosta/presentations?order=popular
  • 3. Introdução ● As árvores binárias de busca permitem a organização da informação com o objetivo a otimizar as buscas.
  • 4. Introdução ● As árvores binárias de busca permitem a organização da informação com o objetivo a otimizar as buscas. ● Ela permite o acesso mais rapido aos elementos dado que os elementos estão organizados na árvore, obedecendo uma certa propriedade. ■ Esquerda são os menores que a raiz ■ Direita são os maiores que a raiz
  • 5. Introdução ● As Árvores binárias de busca (ABB) estudadas têm uma séria desvantagem que pode afetar o tempo necessário para recuperar um item armazenado.
  • 6. Introdução Insiram os seguintes valores em uma árvore binária de busca (ABB): 1, 2, 3, 4, 5, 6, 7 4, 6, 2, 5, 1, 7, 3 O que vocês concluem com isso ?
  • 7. Introdução A desvantagem é que o desempenho da ABB depende da ordem em que os elementos são inseridos.
  • 8. Introdução A desvantagem é que o desempenho da ABB depende da ordem em que os elementos são inseridos. Idealmente, deseja-se que a árvore esteja balanceada, para qualquer nó p da árvore.
  • 9. Introdução A desvantagem é que o desempenho da ABB depende da ordem em que os elementos são inseridos. Idealmente, deseja-se que a árvore esteja balanceada, para qualquer nó p da árvore. Como saber se a árvore está balanceada ?
  • 10. Introdução A desvantagem é que o desempenho da ABB depende da ordem em que os elementos são inseridos. Idealmente, deseja-se que a árvore esteja balanceada, para qualquer nó p da árvore. Como saber se a árvore está balanceada ? A altura dos nós é um importante dado.
  • 11. AVL ● O nome AVL vem de seus criadores Adelson Velsky e Landis (1962). ● Uma árvore binária de pesquisa T é denominada AVL se: ○ Para todos nós de T, as alturas de suas duas sub-árvores diferem no máximo de uma unidade. 20 30 10 40 35 20 30 10 4035 Qual é AVL ? Que nó esta desbalanceado ? a) b)
  • 12. AVL ● Como saber se a árvore está desbalanceada?
  • 13. AVL ● Como saber se a árvore está desbalanceada? ○ Verificando se existe algum nodo “desregulado”.
  • 14. AVL ● Como saber se a árvore está desbalanceada? ○ Verificando se existe algum nodo “desbalanceado”. ● Como saber se um nodo está desbalanceado ?
  • 15. AVL ● Como saber se a árvore está desbalanceada? ○ Verificando se existe algum nodo “desbalanceado”. ● Como saber se um nodo está desbalanceado ? ○ Subtraindo-se as alturas das suas sub-árvores.
  • 16. Fator de balanceamento ● O fator de balanceamento é dado por: ○ altura (SAE) – altura(SAD) ● Ou, ○ altura (SAD) – altura(SAE)
  • 17. Fator de balanceamento ● O fator de balanceamento é dado por: ○ altura (SAE) – altura(SAD) ● Ou, ○ altura (SAD) – altura(SAE) ● O fator de balanceamento de um nodo é dado pelo seu peso em relação a sua sub-árvore. ○ Um nodo pode ter um fator balanceado de 1, 0, ou -1. ○ Um nodo com fator de balanceamento -2 ou 2 (diferença de 2 elementos) é considerado desbalanceado e requer um balanceamento.
  • 18. AVL - Calculando o fator 20 30 10 40 35 Coloque as alturas de cada nó
  • 19. AVL - Calculando o fator 20 30 10 40 35 0 1 Coloque as alturas de cada nó 2 3 0 -1 -1 -1 -1 -1 -1
  • 20. AVL - Calculando o fator 20 30 10 40 35 0 1 Coloque as alturas de cada nó Calcule o fator de balanceamento altura (SAE) - altura (SAD) 2 3 0 -1 -1 -1 -1 -1 -1
  • 21. AVL - Calculando o fator 20 30 10 40 35 0 1 altura (SAE) - altura (SAD) 2 3 0 -1 -1 -1 -1 -1 -1 0 - 2 = -2
  • 22. AVL - Calculando o fator 20 30 10 40 35 0 1 altura (SAE) - altura (SAD) 2 3 (-2) 0 -1 -1 -1 -1 -1 -1 0 - 2 = -2
  • 23. AVL - Calculando o fator 20 30 10 40 35 0 1 altura (SAE) - altura (SAD) 2 3 (-2) 0 -1 -1 -1 -1 -1 -1 -1 - 1 = -2
  • 24. AVL - Calculando o fator 20 30 10 40 35 0 1 altura (SAE) - altura (SAD) 2 (-2) 3 (-2) 0 -1 -1 -1 -1 -1 -1 -1 - 1 = -2
  • 25. AVL - Calculando o fator 20 30 10 40 35 0 (0) 1 (1) altura (SAE) - altura (SAD) 2 (-2) 3 (-2) 0 (0) -1 -1 -1 -1 -1 -1
  • 26. AVL - Calculando o fator 20 30 10 40 35 0 (0) 1 (1) altura (SAE) - altura (SAD) 2 (-2) 3 (-2) 0 (0) -1 -1 -1 -1 -1 -1 Uma árvore binária de pesquisa T é denominada AVL se: ○ Para todos nós de T, as alturas de suas duas sub-árvores diferem no máximo de uma unidade.
  • 27. AVL - Calculando o fator 20 30 10 40 35 0 (0) 1 (1) altura (SAE) - altura (SAD) 2 (-2) 3 (-2) 0 (0) -1 -1 -1 -1 -1 -1 Uma árvore binária de pesquisa T é denominada AVL se: ○ Para todos nós de T, as alturas de suas duas sub-árvores diferem no máximo de uma unidade.
  • 28. Atividades Insira os seguintes valores em uma árvore binária, coloque os fatores de balanceamento e diga se é ou não uma AVL e qual nó esta desbalanceado: a) [30,15, 50, 5,10, 20] b) [ 80, 40, 100, 120, 90, 30] c) [10, 50, 4, 90, 20, 8]
  • 30. Como balancear ? Através de operações de rotações!!!!
  • 31. Rotações Existem quatro operações de rotações: Rotação simples à Esquerda Rotação simples à Direita Rotação Dupla à Esquerda Rotação Dupla à Direita
  • 32. Rotações Existem quatro operações de rotações: Rotação simples à Esquerda Rotação simples à Direita Rotação Dupla à Esquerda Rotação Dupla à Direita As duplas são derivadas das simples
  • 33. Rotações ● Quando usar as Rotações ? ○ Na inserção de um elemento ○ e na remoção de um elemento ● É provado que no máximo uma rotação é suficiente para realizar o balanceamento de uma árvore quando é inserido ou removido um elemento
  • 34. Rotações e balanceamento Vamos ver primeiro as operações de rotação e depois usa-las para balanceamento.
  • 35. Rotações Rotação a direita Rotação a direita Rotação a esquerda
  • 37. Rotação a direita 30 20 10 Imagine a seguinte árvore....
  • 40. Rotação a direita Atividades Insiram os seguintes valores e depois rotacione para a direita a partir da raiz: a) [40,30, 20] b) [40, 30, 20, 35] c) [40, 50, 30, 20, 35]
  • 42. Rotação a esquerda Atividades Insiram os seguintes valores e depois rotacione para a esquerda a partir da raiz: a)[40, 50, 60] b) [40, 50, 10, 60] c) [40, 20, 10, 50, 60, 70]
  • 43. Rotação dupla a esquerda
  • 44. Rotação dupla a esquerda Atividades Insiram os seguintes valores e depois rotacione dupla a esquerda a partir da raiz: a)[20, 40, 30] b) [20, 40, 30, 50] c) [20, 10, 40, 30, 50, 12]
  • 45. Rotação dupla a direita
  • 46. Rotação dupla a direita Atividades Insiram os seguintes valores e depois rotacione dupla a direita a partir da raiz: a) [40, 20, 30] b) [40, 20, 30, 50] c) [40, 20, 30, 10,50, 80]
  • 47. Como usar as rotações para manter uma árvore balanceada, ou seja, uma AVL ?
  • 48. Balanceamento Ao inserir um novo elemento em uma árvore, pode ser que um dos seus nós ascendentes se torne desbalanceado, avô, bisavô ...
  • 49. Balanceamento Algoritmo: A cada inserção, checa-se os nós ascedentes.
  • 50. Balanceamento Algoritmo: ● Aplica-se, o mesmo algoritmo de inserção da árvore binária de busca. ● A cada inserção, checa-se os nós ascedentes. ● Caso o nó esteja desbalanceado, existem quatro diferentes configurações, como veremos a seguir. ○ Para cada configração, existe uma rotação indicada.
  • 51.
  • 52. Exemplo 10 altura (SAE) - altura (SAD) [10, 20, 30]
  • 53. Exemplo 10 20 FB: -1 - 0 = -1 OK altura (SAE) - altura (SAD) [10, 20, 30]
  • 54. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30
  • 55. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30 FB: -1 - 0 = -1 OK
  • 56. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30 FB: -1 - 1 = -2 Perigo: desbalanceado
  • 57. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30 FB: -1 - 1 = -2 Perigo: desbalanceado Qual a rotação indicada neste caso ?
  • 58. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30 FB: -1 - 1 = -2 Perigo: desbalanceado Qual a rotação indicada neste caso ? Rotação simples a esquerda.
  • 59. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30] 30
  • 60. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40] 30 40
  • 61. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 40 35
  • 62. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 40 35 FB: -1 - 1 = -2 Perigo: desbalanceado
  • 63. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 40 35 FB: -1 - 1 = -2 Perigo: desbalanceado Qual a rotação indicada neste caso ?
  • 64. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 40 35 FB: -1 - 1 = -2 Perigo: desbalanceado Qual a rotação indicada neste caso ? Rotação dupla a esquerda.
  • 65. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 40 35 rotação direita
  • 66. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 35 40
  • 67. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 30 35 40 rotação esquerda
  • 68. Exemplo 10 20 altura (SAE) - altura (SAD) [10, 20, 30, 40, 35] 35 30 40 FB: 0 - 1 = -1 OK continua a checagem com o no ascendente.
  • 69. Atividades A partir de uma árvore AVL, insiram os seguintes valores: a) [10, 20,15,45,67,81,91,10] b) [1, 5,80,20,67,91,8,10] c) [10,20,30, 50, 5, 15, 30]