Árvores de pesquisa (parte ii) - decom-ufop · • algoritmos para balanceamentos. ... de nós...
TRANSCRIPT
![Page 1: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/1.jpg)
Árvores de Pesquisa (Parte II) Prof. Túlio Toffolo http://www.toffolo.com.br
BCC202 – Aula 22
Algoritmos e Estruturas de Dados I
![Page 2: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/2.jpg)
Inserindo os nós 30, 20, 40, 10, 25, 35 e 50 nesta ordem, teremos:
Árvores Binárias de Pesquisa
30
20
10 25
40
35 50
![Page 3: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/3.jpg)
Inserindo os nós 10, 20, 30, 40 e 50 nesta ordem, teremos:
Árvores Binárias de Pesquisa
10
20
30
40
50
![Page 4: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/4.jpg)
• Existem ordens de inserção de nós que
conservam o balanceamento de uma árvore binária.
• Na prática é impossível prever essa ordem ou até alterá-la.
• Algoritmos para balanceamentos.
Árvores Binárias Balanceadas
![Page 5: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/5.jpg)
• A vantagem de uma árvore balanceada com relação a uma degenerada está em sua eficiência.
• Por exemplo: numa árvore binária degenerada de 10.000 nós são necessárias, em média, 5.000 comparações (semelhança com arrays ordenados e listas encadeadas).
• Numa árvore balanceada com o mesmo número de nós essa média reduz-se a 14 comparações.
Árvores Binárias Balanceadas
![Page 6: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/6.jpg)
PROGRAMAÇÃO DE TRIPULAÇÕES ÁRVORE AVL
![Page 7: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/7.jpg)
Árvore AVL
n Árvore binária de busca tal que, para qualquer nó interno v, a diferença das alturas dos filhos de v é no máximo 1.
n Árvores AVL são balanceadas
88
44
17 78
32 50
48 62
2
4
1
1
2
3
1
1
Exemplo: números próximo dos nós são suas alturas.
![Page 8: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/8.jpg)
• Algoritmo de balanceamento de árvores
binárias. • A origem da denominação AVL vem dos seus
dois criadores: Adel’son-Vel’skii e Landis. • Ano de divulgação: 1962.
AVL
![Page 9: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/9.jpg)
TAD-Árvore AVL n Estrutura de dados: typedef long TipoChave; typedef struct Registro { TipoChave Chave; /* outros componentes */} Registro; typedef Struct No { Registro Reg; TNo *pEsq, *pDir;} No;typedef TNo * TipoDicionario;
![Page 10: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/10.jpg)
• Uma árvore binária balanceada é aquela na qual, para cada nó, as alturas de suas sub-árvores esquerda e direita diferem de, no máximo, 1.
• Fator de balanceamento (FB) de um nó é a diferença entre a altura da sub-árvore esquerda em relação à sub-árvore direita. FB(p) = altura(sub-árvore esquerda de p)
- altura(sub-árvore direita de p) • Em uma árvore binária balanceada todos os FB de
todos os nós estão no intervalo -1 ≤ FB ≤ 1
Árvores AVL
![Page 11: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/11.jpg)
FB e Altura
int FB (TNo* pRaiz){ if (pRaiz == NULL) return 0; return Altura(pRaiz->pEsq) - Altura(pRaiz->pDir);}
int Altura(TNo* pRaiz){ int iEsq,iDir; if (pRaiz == NULL) return 0; iEsq = Altura(pRaiz->pEsq); iDir = Altura(pRaiz->pDir); if ( iEsq > iDir ) return iEsq + 1; else return iDir + 1;}
![Page 12: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/12.jpg)
• Inicialmente inserimos um novo nó na árvore
normalmente. • A inserção deste pode degenerar a árvore. • A restauração do balanceamento é feita através
de rotações na árvore no nó “pivô”. • Nó “pivô” é aquele que após a inserção possui
Fator de Balanceamento fora do intervalo.
AVL
![Page 13: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/13.jpg)
• Primeiro caso: (rotação simples para a direita)
• FB > 1 (subárvore esquerda maior que subárvore direita) • E a subárvore esquerda desta subárvore esquerda é maior
que a subárvore direita dela • Então realizar uma rotação simples para a direita.
AVL
3
2
1
![Page 14: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/14.jpg)
AVL
• Primeiro caso: (rotação simples para a direita)
3
2
1
2
1 3
![Page 15: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/15.jpg)
• Segundo caso: (rotação simples para a esquerda)
• FB < -1 (subárvore esquerda menor que subárvore direita) • E a subárvore direita desta subárvore direita é maior que a
subárvore esquerda dela • Então realizar uma rotação simples para a esquerda.
AVL
1
2
3
![Page 16: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/16.jpg)
• Segundo caso: (rotação simples para a esquerda)
AVL
1
2
3
2
1 3
![Page 17: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/17.jpg)
• Terceiro caso: (rotação dupla para a direita)
• FB > 1 (subárvore esquerda maior que subárvore direita) • E a subárvore esquerda desta subárvore esquerda é
menor ou igual que a subárvore direita dela • Então realizar uma rotação dupla para a direita.
AVL
1
3
2
![Page 18: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/18.jpg)
• Terceiro caso: (rotação dupla para a direita)
AVL
1
3
2
2
1 3
3
2
1
![Page 19: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/19.jpg)
• Quarto caso: (rotação dupla para a esquerda)
• FB < -1 (subárvore esquerda menor que subárvore direita) • E a subárvore direita desta subárvore direita é menor que
a subárvore esquerda dela • Então realizar uma rotação dupla para a esquerda.
AVL
1
3
2
![Page 20: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/20.jpg)
• Quarto caso: (rotação dupla para a esquerda)
AVL
1
3
2
1
2
3
2
1 3
![Page 21: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/21.jpg)
Rotações Simples
T 0 T 1
T T 3
c = x b = y
a = z The image cannot be displayed. Your computer may not
T 0 T 1 T 2 T 3
c = x b = y
a = z Rotação Simples
2
The image cannot be displayed. Your co
T 3 T 2
T 1 T 0
a = x b = y
c = z The image cannot be displayed. Your co
T 3 T 2 T 1 T 0
a = x b = y
c = z Rotação Simples
![Page 22: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/22.jpg)
Rotações Simples void RSE(TNo** ppRaiz){ TNo *pAux; pAux = (*ppRaiz)->pDir; (*ppRaiz)->pDir = pAux->pEsq; pAux->pEsq = (*ppRaiz); (*ppRaiz) = pAux;}void RSD(TNo** ppRaiz){ TNo *pAux; pAux = (*ppRaiz)->pEsq; (*ppRaiz)->pEsq = pAux->pDir; pAux->pDir = (*ppRaiz); (*ppRaiz) = pAux;}
![Page 23: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/23.jpg)
Rotações Duplas
The image cannot be displayed. Your co
The image cannot be displayed. Your co
Rotação Dupla c = z
b = x a = y
T 0 T 2
T 1 T 3 T 0
T 2 T 3 T 1
c = z b = x
a = y
T 1
The image cannot be displayed. Your computer may not have enough
The image cannot be displayed. Your computer may not have enough
Rotação Dupla a = z
b = x c = y
T 0 T 2 T 3 T 0
T 2 T 3 T 1
a = z b = x
c = y
![Page 24: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/24.jpg)
Rotações Duplas
int BalancaEsquerda(TNo** ppRaiz){ int fbe = FB ( (*ppRaiz)->pEsq ); if ( fbe > 0 ) { RSD(ppRaiz); return 1; } else if (fbe < 0 ) { /* Rotação Dupla Direita */ RSE( &((*ppRaiz)->pEsq) ); RSD( ppRaiz ); /* &(*ppRaiz) */ return 1; } return 0;}
int BalancaDireita(TNo** ppRaiz){ int fbd = FB( (*ppRaiz)->pDir); if ( fbd < 0 ) { RSE (ppRaiz); return 1; } else if (fbd > 0 ) { /* Rotação Dupla Esquerda */ RSD( &((*ppRaiz)->pDir) ); RSE( ppRaiz ); /* &(*ppRaiz) */ return 1; } return 0;}
![Page 25: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/25.jpg)
Balanceamento
int Balanceamento(TNo** ppRaiz){ int fb = FB(*ppRaiz); if ( fb > 1) return BalancaEsquerda(ppRaiz); else if (fb < -1 ) return BalancaDireita(ppRaiz); else return 0;}
![Page 26: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/26.jpg)
Inserção em uma Árvore AVL
n Inserção como em uma árvore binária de pesquisa n Sempre feita expandindo um nó externo. n Exemplo:
44
17 78
32 50 88
48 62
54 w
b=x
a=y
c=z
44
17 78
32 50 88
48 62
antes da inserção depois da inserção
![Page 27: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/27.jpg)
Reestruturação Trinodo
n x, y, z (filho, pai e avô) renomeados como a,b,c (percurso interfixado)
n rotações levam b para o topo
b=y
a=z
c=x T0
T1
T2 T3
b=y
a=z c=x
T0 T1 T2 T3
c=y
b=x
a=z
T0
T1 T2
T3 b=x
c=y a=z
T0 T1 T2 T3 caso 1: rotação simples à esquerda (em torno de a)
caso 2: rotação dupla à esquerda (rotação simples à direita seguida de rotação simples à esquerda)
(outros dois casos são simétricos)
![Page 28: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/28.jpg)
Exemplo de inserção (cont.)
88
44
17 78
32 50
48 62
2
5
1
1
3
4
2
1
541
T0 T2
T3
x
y
z
2
3
4
5
67
1
The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.
88
44
17
78 32 50
48
62 2
4
1 1
2 2
3
1 54 1
T 0 T 1
T 2
T 3
x
y z
desbalanceado
balanceado 1
23
4
5
6
7
T 1
![Page 29: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/29.jpg)
Inserção int Insere(TNo** ppRaiz,Registro* x){ if (*ppRaiz == NULL) { *ppRaiz = (TNo*)malloc(sizeof(TNo)); (*ppRaiz)->Reg = *x; (*ppRaiz)->pEsq = NULL; (*ppRaiz)->pDir = NULL; return 1; } else if ( (*ppRaiz)->Reg.chave > x->chave ) { if ( Insere(&(*ppRaiz)->pEsq,x) ) { if (Balanceamento(ppRaiz)) return 0; else return 1; } }
else if ( (*ppRaiz)->Reg.chave < x->chave ) { if ( Insere(&(*ppRaiz)->pDir,x) ) { if (Balanceamento(ppRaiz)) return 0; else return 1; } else return 0; } else return 0; /* valor jah presente */}
![Page 30: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/30.jpg)
Implementação de Inserção
n Cálculo de fatores de balanceamento q Custo: O(log n) ??
n Como melhorar? q Cada nó:
q Fator de balanceamento q Profundidade x Altura
q Problema: atualizar dados durante rotações
![Page 31: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/31.jpg)
Remoção em uma árvore AVL
n Remoção começa como em uma árvore binária de busca è pode causar desbalanceamento
n Exemplo:
44
17
78 32 50
88 48
62
54
44
17
78 50
88 48
62
54
Antes da remoção de 32 Depois da remoção
![Page 32: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/32.jpg)
Rebalanceamento após uma remoção
n Seja z o primeiro nó desbalanceado encontrado acima de w. Seja y o filho de z com maior altura, e x o filho de y com maior altura.
n Executar restructure(x) para rebalancear z. n Pode ocorrer desbalanceamento de outro nó acima è
continuar verificação de balanceamento até à raiz.
44
17
78 50
88 48
62
54
w
c=x
b=y
a=z
44
17
78
50 88
48
62
54
![Page 33: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/33.jpg)
Remoção int Remove (TNo** ppRaiz,Registro* pX){ if (*ppRaiz == NULL) return 0; else if ( (*ppRaiz)->Reg.chave == pX->chave) { *pX = (*ppRaiz)->Reg; Antecessor(ppRaiz,&((*ppRaiz)->pEsq)); Balanceamento(ppRaiz); return 1; } else if ( (*ppRaiz)->Reg.chave > pX->chave ) { if (Remove((*ppRaiz)->pEsq,pX)) { Balanceamento(ppRaiz); return 1;} else return 0; } else /* código para sub-árvore direita */}
![Page 34: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/34.jpg)
PROGRAMAÇÃO DE TRIPULAÇÕES
ÁRVORE AVL
ANÁLISE
![Page 35: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/35.jpg)
Complexidade de Tempo para árvores AVL
n uma única reestruturação é O(1) q usando uma árvore binária implementada
com estrutura ligada n pesquisa é O(log n)
q altura de árvore é O(log n), não necesita reestruturação n inserir é O(log n)
q busca inicial é O(log n) q reestruturação para manter balanceamento é O(log n)
n remove é O(log n) q busca inicial é O(log n) q reestruturação para manter balanceamento é O(log n)
![Page 36: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/36.jpg)
Verifica se uma árvore é AVL int EhArvoreArvl(TNo* pRaiz){ int fb; if (pRaiz == NULL) return 1; if (!EhArvoreArvl(pRaiz->pEsq)) return 0; if (!EhArvoreArvl(pRaiz->pDir)) return 0; fb = FB (pRaiz); if ( ( fb > 1 ) || ( fb < -1) ) return 0; else return 1;}
![Page 37: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/37.jpg)
PROGRAMAÇÃO DE TRIPULAÇÕES
ÁRVORE BINÁRIA DE PESQUISA
APLICAÇÕES
![Page 38: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/38.jpg)
Aplicações
n Para que servem as Árvores Binárias?
n Exemplos de aplicações: q Redes de Comunicação de Dados
q Envio de pacotes ordenados e/ou redundantes
q Codificação de Huffman q Compressão e Descompressão de arquivos
![Page 39: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/39.jpg)
1) Redes de Comunicação
n A maioria dos protocolos de comunicação fragmenta as mensagens em pacotes que são numerados e enviados através da rede
n Não há garantia da chegada em ordem dos pacotes
n Perdas de pacotes geram novos envios e estes podem causar duplicatas dos mesmos
![Page 40: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/40.jpg)
Reconstrução da Mensagem
n Como reconstruir a mensagem corretamente? q Descartar os pacotes repetidos q Ordenar os pacotes
n Como implementar tal algoritmo? q Utilizando Árvores Binárias
![Page 41: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/41.jpg)
Exemplo:
R
R
R
R R
A B
P3
P1
P2
P3
P1
P2
P3
P1 P1
Ordem de Chegada:
P3 P1 P2
Confirmação de envio: P1 e P3.
P1 Ok
P2 ?
P3 Ok
Reenvio de P2.
P2 P2
Problemas: ordens e redundância dos pacotes
![Page 42: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/42.jpg)
Algoritmo
n O primeiro pacote é colocado na raiz da árvore. Cada pacote sucessivo é comparado com o da raiz
n Se for igual, descarta-se a réplica. Se for menor ou maior, percorre-se os lados esquerdo ou direito da árvore
n Sub-árvore vazia implica inserção do novo pacote
n Sub-árvore não vazia implica comparação dos pacotes com a mesma
![Page 43: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/43.jpg)
Problemas resolvidos?
n Problema da ordenação q A ordenação dos pacotes pode ser feita
trivialmente com apenas uma chamada ao método inOrder() da árvore binária
n Problema da redundância q Solucionado com o algoritmo de inserção na
árvore, visto que o pacote, antes de ser inserido, é comparado com os demais que já se encontram na árvore binária
![Page 44: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/44.jpg)
2) Codificação de Huffman
n Algoritmo utilizado para comprimir arquivos n Todo o algoritmo é baseado na criação de
uma Árvore Binária n Programas como Winzip e WinRAR utilizam
este algoritmo n Criado por David Huffman em 1952
![Page 45: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/45.jpg)
Códigos e Caracteres
n Caracteres são letras, números e símbolos n Códigos são sequências de bits que podem
representar de maneira ÚNICA um caracter n b bits para representar c caracteres: n Exemplos: c = 2 b
ASCII (7 bits) Extended ASCII (8 bits)
2 = 128 caracteres 7 2 = 256 caracteres 8
![Page 46: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/46.jpg)
Como comprimir arquivos?
n No código ASCII, todos os caracteres têm um número fixo de bits
n Números variáveis de bits implica menor capacidade de armazenamento
n Associações com bits variáveis podem comprimir consideravelmente o arquivo
G Como comprimir arquivos desta maneira? C Utilizando a Codificação de Huffman!
![Page 47: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/47.jpg)
Exemplo:
n Freqüências: A = 10; B = 8; C = 6; D = 5; E = 2 n Construção da Árvore Binária n Comparação do número de bits
q Tamanho Fixo (8 bits) à Total = 248 bits q Tamanho Variável à Total = 69 bits
AAAAAAAAAABBBBBBBBCCCCCCDDDDDEE
l Considere o arquivo com o seguinte texto:
![Page 48: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/48.jpg)
Compressão
n Depois da geração da árvore, o arquivo é percorrido novamente e cada caracter do arquivo é substituído pelo código binário contido na árvore, gerando uma cadeia de bits
n Criação da tabela de caracteres e códigos binários
n O que é armazenado? q Cadeia de bits gerada q Tabela de caracteres e códigos
![Page 49: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/49.jpg)
Descompressão
n Regeneração da árvore binária através da tabela de caracteres e códigos
n A cadeia de bits é percorrida e, à medida que uma sub-cadeia é encontrada na tabela de caracteres e códigos, a mesma é substituída pelo caracter correspondente
![Page 50: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/50.jpg)
Conclusões
n As árvores binárias são uma das estruturas de dados mais importantes devido a grande aplicabilidade das mesmas.
n A maioria dos algoritmos das árvores binárias são de simples entendimento, facilitando sobremaneira o desenvolvimento de sistemas.
![Page 51: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/51.jpg)
Perguntas?
![Page 52: Árvores de Pesquisa (Parte II) - DECOM-UFOP · • Algoritmos para balanceamentos. ... de nós essa média reduz-se a 14 comparações. ... " Utilizando Árvores Binárias . Exemplo:](https://reader030.vdocuments.com.br/reader030/viewer/2022020415/5c0bf40e09d3f213228b4647/html5/thumbnails/52.jpg)
Exercício n Mostre (desenhe) uma árvore AVL após a
inserção dos seguintes elementos, em ordem: 10, 20, 5, 8, 12, 22, 23, 24, 11, 13, 18
n Mostre como ficará a árvore acima após a remoção dos seguintes elementos, na ordem abaixo: 22, 11, 5, 10