rvore bin ria avl n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Árvore Binária & AVL PowerPoint Presentation
Download Presentation
Árvore Binária & AVL

Loading in 2 Seconds...

play fullscreen
1 / 45

Árvore Binária & AVL - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

Árvore Binária & AVL. Equipe: Felipe Pontes Gustavo Márcio Márcio de Medeiros. Árvore Binária & AVL. Sumário Introdução Conceitos Básicos Algoritmos Árvores Binárias Balanceadas e AVL Aplicações . Introdução. Inserir em Array Ordenado: Achar o Local da inserção: O(log N);

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Árvore Binária & AVL' - wilson


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
rvore bin ria avl
Árvore Binária & AVL

Equipe:

  • Felipe Pontes
  • Gustavo Márcio
  • Márcio de Medeiros
rvore bin ria avl1
Árvore Binária & AVL

Sumário

  • Introdução
  • Conceitos Básicos
  • Algoritmos
  • Árvores Binárias Balanceadas e AVL
  • Aplicações
introdu o
Introdução
  • Inserir em Array Ordenado:
    • Achar o Local da inserção: O(log N);
    • Inserir: Mover os elementos para frente (N/2 movimentos);
  • Procurar em Lista Encadeada:
    • Comparar cada elemento da lista: N/2 comparações;
    • Tempo necessário: O(N);
  • Solução para os problemas?
    • SIM!!

 ÁRVORE BINÁRIA

rvore bin ria avl2
Árvore Binária & AVL

Sumário

  • Introdução
  • Conceitos Básicos
  • Algoritmos
  • Árvores Binárias Balanceadas e AVL
  • Aplicações
conceitos b sicos
Conceitos Básicos
  • Raiz;
  • Caminho;
  • Nó;
  • Folha;
  • Pai e Filho;
  • Sub-árvore;
  • Níveis;
  • Árvores Binárias.
rvore bin ria avl3
Árvore Binária & AVL

Sumário

  • Introdução
  • Conceitos Básicos
  • Algoritmos
  • Árvores Binárias Balanceadas e AVL
  • Aplicativos e Aplicações
algoritmos
Algoritmos

Inserção

Função Insere ( Elemento , Árvore )  Árvore

começar

se EvaziaArv ( Árvore )

devolver CriarArv (Árvore, NULL, NULL )

senão

começar

se ( Elemento < No ( Árvore ))

devolver CriarArv ( No ( Árvore ), Insere ( Elemento, fe ( Árvore )), fd ( Árvore))

senão

devolver CriarArv ( No ( Árvore ), fe ( Árvore ), Insere ( Elemento, fd ( Árvore ))

acabar

acabar

algoritmos1
Algoritmos

Deleção

Função eliminar (Elemento, Árvore)  Árvore;

começar

se EvaziaArv ( Árvore )

eliminar = NULL

senão

começar

se No ( Árvore )=x

começar

se EvaziaArv (fd(a))

eliminar=fe(a)

senão

se EvaziaArv (fe(a))

eliminar=fd(a)

senão

eliminar = CriarArv (min(fd(a)),fe(a),eliminar(min(fd(a))),fd(a))

acabar

senão

começar

Se x < No(Árvore)

eliminar = CriarArv (no(a),eliminar(x,fe(a),fd(a));

senão

elimina = CriarArv (no(a),fe(a),eliminar(x,fd(a));

acabar

acabar

devolver Árvore

acabar

algoritmos2
Algoritmos

Busca

O algoritmo de busca é idêntico ao algoritmo de inserção, com pequenas modificações:

Função Busca (Elemento, Árvore)  Árvore

começa

enquanto (Nó(Árvore) != Elemento)

se (Nó (Árvore) = NULL)

devolva NULL

se (Elemento < Nó (Árvore))

Busca (Elemento, fe(Árvore))

senão

começa

se (Elemento > Nó(Árvore))

Busca (Elemento, fd(Árvore))

Senão

começa

se (Elemento = Nó(Árvore))

devolve Nó(Árvore)

acaba

acaba

acaba_enquanto

acaba

algoritmos3
Algoritmos

Percurso - InOrder

  • O percurso InOrder fará com que todos os nós sejam visitados na ordem ascendente, baseada em seus valores chaves

Algoritmo Simplificado

  • Chama a si mesmo para percorrer a subárvore esquerda do nó;
  • Visita o nó;
  • Chama a si mesmo para percorrer a subárvore a direita do nó.
algoritmos4
Algoritmos

Percurso - PreOrder

  • O percurso PreOrder fará com que todos os nós sejam visitados de modo a gerar uma expressão algebrica prefixa.

Algoritmo Simplificado

  • Visita o nó;
  • Chama a si mesmo para percorrer a subárvore esquerda do nó;
  • Chama a si mesmo para percorrer a subárvore a direita do nó.
algoritmos5
Algoritmos

Percurso - PostOrder

  • O percurso PostOrder fará com que todos os nós sejam visitados de modo a gerar uma expressão algebrica posfixa.

Algoritmo Simplificado

  • Chama a si mesmo para percorrer a subárvore esquerda do nó;
  • Chama a si mesmo para percorrer a subárvore a direita do nó.
  • Visita o nó;
a b c

*

+

A

C

B

A * (B + C)

Infixa: A*(B+C)

Posfixa: ABC+*

Prefixa: *A+BC

rvore bin ria avl4
Árvore Binária & AVL

Sumário

  • Introdução
  • Conceitos Básicos
  • Algoritmos
  • Árvores Binárias Balanceadas e AVL
  • Aplicativos e Aplicações
rvores bin rias balanceadas e avl

20

40

10

25

35

50

Árvores Binárias Balanceadas e AVL

Inserindo os nós 30, 20, 40, 10, 25, 35 e 50 nesta ordem, teremos:

30

rvores bin rias balanceadas e avl1

20

30

40

50

Árvores Binárias Balanceadas e AVL

Inserindo os nós 10, 20, 30, 40 e 50 nesta ordem, teremos:

10

rvores bin rias balanceadas
Árvores Binárias Balanceadas
  • 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 balanceadas1
Árvores Binárias Balanceadas
  • 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 balanceadas2
Árvores Binárias Balanceadas
  • 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 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 p) - altura(sub-árvore direita p)

  • Em uma árvore binária balanceada todos os Fatores de Balanceamento de todos os nós estão no intervalo -1 <= FB <= 1
slide20
AVL
  • Algoritmo de balanceamento de árvores binárias.
  • A origem da denominação AVL vem dos seus criadores: Adel’son-Vel’skii e Landis.
  • Ano de divulgação: 1962.
slide21
AVL
  • 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.
slide22

3

2

1

AVL
  • Primeiro caso:
      • 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.
slide23

3

2

2

3

1

1

AVL
  • Primeiro caso:
slide24

1

2

3

AVL
  • Segundo caso:
      • 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.
slide25

1

2

3

1

2

3

AVL
  • Segundo caso:
slide26

1

3

2

AVL
  • Terceiro caso:
      • 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.
slide27

2

1

3

1

1

3

3

2

2

AVL
  • Terceiro caso:
slide28

3

1

2

AVL
  • Quarto caso:
      • 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.
slide29

2

3

2

3

1

3

1

1

2

AVL
  • Quarto caso:
rvore bin ria avl5
Árvore Binária & AVL

Sumário

  • Introdução
  • Conceitos Básicos
  • Algoritmos
  • Árvores Binárias Balanceadas e AVL
  • Aplicações
aplica es
Aplicações
  • Para que servem as Árvores Binárias?
  • Exemplos de aplicações:
    • Redes de Comunicação de Dados
      • Envio de pacotes ordenados e/ou redundantes
    • Codificação de Huffman
      • Compressão e Descompressão de arquivos
1 redes de comunica o
1) Redes de Comunicação
  • A maioria dos protocolos de comunicação fragmenta as mensagens em pacotes que são numerados e enviados através da rede
  • Não há garantia da chegada em ordem dos pacotes
  • Perdas de pacotes geram novos envios e estes podem causar duplicatas dos mesmos
reconstru o da mensagem
Reconstrução da Mensagem
  • Como reconstruir a mensagem corretamente?
    • Descartar os pacotes repetidos
    • Ordenar os pacotes
  • Como implementar tal algoritmo?
    • Utilizando Árvores Binárias
exemplo

P3

P3

P3

P2

P2

P2

P1

P1

P2

P1

P1

Exemplo:

R

R

P1 Ok

P2 ?

A

B

P3 Ok

R

R

R

Ordem de Chegada:

Confirmação de envio: P1 e P3.

Reenvio de P2.

P3

P1

P2

Problemas: ordens e redundância dos pacotes

algoritmo
Algoritmo
  • O primeiro pacote é colocado na raiz da árvore. Cada pacote sucessivo é comparado com o da raiz
  • Se for igual, descarta-se a réplica. Se for menor ou maior, percorre-se os lados esquerdo ou direito da árvore
  • Sub-árvore vazia implica inserção do novo pacote
  • Sub-árvore não vazia implica comparação dos pacotes com a mesma
problemas resolvidos
Problemas resolvidos?
  • Problema da ordenação
    • A ordenação dos pacotes pode ser feita trivialmente com apenas uma chamada ao método inOrder() da árvore binária
  • Problema da redundância
    • 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
2 codifica o de huffman
2) Codificação de Huffman
  • Algoritmo utilizado para comprimir arquivos
  • Todo o algoritmo é baseado na criação de uma Árvore Binária
  • Programas como Winzip e WinRAR utilizam este algoritmo
  • Criado por David Huffman em 1952
c digos e caracteres

b

c = 2

ASCII (7 bits)

Extended ASCII (8 bits)

8

7

2 = 256 caracteres

2 = 128 caracteres

Códigos e Caracteres
  • Caracteres são letras, números e símbolos
  • Códigos são seqüências de bits que podem representar de maneira ÚNICA um caracter
  • b bits para representar c caracteres:
  • Exemplos:
como comprimir arquivos
Como comprimir arquivos?
  • No código ASCII, todos os caracteres têm um número fixo de bits
  • Números variáveis de bits implica menor capacidade de armazenamento
  • Associações com bits variáveis podem comprimir consideravelmente o arquivo
  • Como comprimir arquivos desta maneira?
  • Utilizando a Codificação de Huffman!
exemplo1
Exemplo:
  • Freqüências: A = 10; B = 8; C = 6; D = 5; E = 2
  • Construção da Árvore Binária
  • Comparação do número de bits
    • Tamanho Fixo (8 bits)  Total = 248 bits
    • Tamanho Variável  Total = 69 bits
  • Considere o arquivo com o seguinte texto:

AAAAAAAAAABBBBBBBBCCCCCCDDDDDEE

compress o
Compressão
  • 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
  • Criação da tabela de caracteres e códigos binários
  • O que é armazenado?
    • Cadeia de bits gerada
    • Tabela de caracteres e códigos
descompress o
Descompressão
  • Regeneração da árvore binária através da tabela de caracteres e códigos
  • 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
conclus es
Conclusões
  • As árvores binárias são uma das estruturas de dados mais importantes devido a grande aplicabilidade das mesmas.
  • A maioria dos algoritmos das árvores binárias são de simples entendimento, facilitando sobremaneira o desenvolvimento de sistemas.
bibliografia
Bibliografia
  • http://w3.ualg.pt/~hshah/ped/
  • http://www.geocities.com/grupotrees/AVL/avl.htm
  • http://inf.unisinos.br/~anibal/prog2avl.rtf
  • http://www.inf.unisinos.br/~osorio/lab2/lab2-a09b.pdf
  • http://www.howtodothings.com/showarticle.asp?article=313
  • http://www.ppgia.pucpr.br/~laplima/aulas/materia/arvbin_m.html
  • Material disponível em http://www.gmmc.kit.net/bd