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

Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Pacc UAB
 
1.1 o que é computador
1.1 o que é computador1.1 o que é computador
1.1 o que é computadorAline Soares
 
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefRodrigo Kiyoshi Saito
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson 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
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicionalICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicionalFelipe J. R. Vieira
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10LucasMansueto
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Leinylson Fontinele
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 

Mais procurados (20)

Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1
 
1.1 o que é computador
1.1 o que é computador1.1 o que é computador
1.1 o que é computador
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
 
Aula 6 - Cardinalidade
Aula 6 - CardinalidadeAula 6 - Cardinalidade
Aula 6 - Cardinalidade
 
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Pesquisa e Ordenação - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
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
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicionalICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 

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
 

Último

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (8)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Árvores balanceadas - AVL

  • 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]