Árvore Binária & AVL Equipe: Felipe Pontes Gustavo Márcio

Slides:



Advertisements
Apresentações semelhantes
Árvores Passeios.
Advertisements

AULA 8 Profa. Sandra de Amo GBC053 – BCC
Marco Antonio Montebello Júnior
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Estrutura de Dados e Algoritmos e Programação e Computadores II
Organização e Recuperação da Informação
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
Série de Exercícios.
MC 202 – Estruturas de dados
Árvore Binária de Busca
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

Arquivos Extensíveis.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Pesquisa em Árvores Digitais
Pesquisa em Memória Primária – Árvores AVL
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Árvores AVL.
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação e Pesquisa de Dados
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
CAP-223 Árvore através de uma Árvore Binária A BCDE FGHIJK A BC D E FGHIJK.
Robson Godoi / Sandra Siebra
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Marco Antonio Montebello Júnior
Algorítmos e estrutura de dados III
Árvore Binária de Busca
Árvores binárias de pesquisa com balanceamento
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Algorítmos e estrutura de dados III
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Algoritmos e Estrutura de Dados III
Introdução e Busca Cega
Árvores Balanceadas Liliane Rose Benning Salgado.
Rotação Simples e Dupla Katia Guimarães
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Árvores Splay Estruturas de Dados
Árvore Binária de Busca
Árvores B Obs: Uma árvore 2-3 é uma árvore B de ordem 1.
SISTEMAS DE INFORMAÇÃO
Árvores Prof. Dr. rer. nat. Daniel Duarte Abdala DAS 5102 – Fundamentos da Estrutura da Informação 1.

Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
– Aula 20 Adaptado por Reinaldo Fortes para o curso de
Árvores Vermelho-Preto
Árvores AVL Balanceadas (Árvore Binária Balanceada)
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
PROCESSAMENTO DIGITAL DE IMAGENS

Árvores Rubro-Negras São árvores balanceadas segundo um critério ligeiramente diferente do usado em árvores AVL A todos os nós é associada uma cor que.
Estruturas Avançadas de Dados UNISINOS
Algoritmo de Huffman.
AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
Árvores de Busca Binária
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
28 de outubro de Árvores Binárias e Árvores AVL Parte 2 Katia Guimarães.
Árvores e Árvores Binárias
BANCO DE DADOS II Árvore de Dados. FATEC - GUARATINGUETÁ Professor: Eduardo Barbosa Adiel Lemos Ana Renata Bruno Michael Jéssica Fernanda Layla Monique.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Á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: Procurar em Lista Encadeada: 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 & AVL Sumário Introdução Conceitos Básicos Algoritmos Árvores Binárias Balanceadas e AVL Aplicações

Conceitos Básicos Raiz; Caminho; Nó; Folha; Pai e Filho; Sub-árvore; Níveis; Árvores Binárias.

Árvore Binária & AVL Sumário Introdução Conceitos Básicos Algoritmos Árvores Binárias Balanceadas e AVL Aplicativos e Aplicações

Algoritmos Inserção Função Insere ( Elemento , Árvore )  Árvore começar se EvaziaArv ( Árvore ) devolver CriarArv (Árvore, NULL, NULL ) senão se ( Elemento < No ( Árvore )) devolver CriarArv ( No ( Árvore ), Insere ( Elemento, fe ( Árvore )), fd ( Árvore)) devolver CriarArv ( No ( Árvore ), fe ( Árvore ), Insere ( Elemento, fd ( Árvore )) acabar

Algoritmos Deleção Função eliminar (Elemento, Árvore)  Árvore; começar se EvaziaArv ( Árvore ) eliminar = NULL senão se No ( Árvore )=x se EvaziaArv (fd(a)) eliminar=fe(a) se EvaziaArv (fe(a)) eliminar=fd(a) eliminar = CriarArv (min(fd(a)),fe(a),eliminar(min(fd(a))),fd(a)) acabar Se x < No(Árvore) eliminar = CriarArv (no(a),eliminar(x,fe(a),fd(a)); elimina = CriarArv (no(a),fe(a),eliminar(x,fd(a)); devolver Árvore

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 se (Elemento > Nó(Árvore)) Busca (Elemento, fd(Árvore)) Senão se (Elemento = Nó(Árvore)) devolve Nó(Árvore) acaba acaba_enquanto

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ó.

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ó.

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 B C * + Infixa: A*(B+C) Posfixa: ABC+* Prefixa: *A+BC

Á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 Inserindo os nós 30, 20, 40, 10, 25, 35 e 50 nesta ordem, teremos: 30 40 20 25 10 35 50

Árvores Binárias Balanceadas e AVL Inserindo os nós 10, 20, 30, 40 e 50 nesta ordem, teremos: 10 20 30 40 50

Á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 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 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

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.

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.

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. 3 2 1

AVL Primeiro caso: 3 2 1 2 1 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. 1 2 3

AVL Segundo caso: 1 2 3 2 1 3

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. 1 3 2

AVL Terceiro caso: 1 3 2 1 2 3 2 1 3

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. 1 3 2

AVL Quarto caso: 1 3 2 2 3 1 2 1 3

Árvore Binária & AVL Sumário Introdução Conceitos Básicos Algoritmos Árvores Binárias Balanceadas e AVL 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 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 Como reconstruir a mensagem corretamente? Descartar os pacotes repetidos Ordenar os pacotes Como implementar tal algoritmo? Utilizando Árvores Binárias

Exemplo: Problemas: ordens e redundância dos pacotes P2 P3 P1 R R P3 P1 Ok P2 ? A P2 B P3 Ok R P2 P2 P1 R R Ordem de Chegada: Confirmação de envio: P1 e P3. P3 P1 P2 Reenvio de P2. Problemas: ordens e redundância dos pacotes

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? Problema da ordenação Problema da redundância 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 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 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: c = 2 b ASCII (7 bits) Extended ASCII (8 bits) 2 = 128 caracteres 7 2 = 256 caracteres 8

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!

Exemplo: Considere o arquivo com o seguinte texto: AAAAAAAAAABBBBBBBBCCCCCCDDDDDEE 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

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

Dúvidas