Arvores

5,168 views
4,996 views

Published on

1 Comment
1 Like
Statistics
Notes
  • 3-


    Venham conferir o AS NOVIDADES DO SERVIDOR de MU online JOGANDO.NET :

    >>PROMOÇÃO DE JDIAMONDS E JCASHS, que ganha cupom para concorrer aos prêmios....
    >> PROMOÇÃO GANHE IPAD (NOVO) 3 kits JD v2, 2.000.000 golds e + 1000 jcahs no sorteio do dia 31/10 OUTUBRO
    >>NOVOS KITS : DEVASTATOR , e o SUPREMO DIAMOND V2 ;
    >> MEGA MARATONA DE DIA DAS CRIANÇAS, em breve você irá conhecer os melhores eventos.
    >> Novos Rings e Pendat Mysthical os melhores do servidor ;
    >> Novas Asas e Shields JDiamonds;
    >> Novidades em todos os servidores atualizados p/ o Ep 3 Season 6
    >> Curti animes ? conheça o mais novo site Cloud : http://www.animescloud.com/ com mais de 20.000 videos online.

    Curta também a nossa pagina no facebook : http://www.facebook.com/pages/jogandonet/371027529618526

    CADASTRE-SE AGORA E GANHE 5 DIAS DE VIP
    ENTRE NO SITE : www.jogando.net/mu/ para maiores inforamções.

    By: MissDeath
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
5,168
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
213
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Arvores

  1. 1. Estrutura de Dados I ÁrvoresProf. Eder Stone FontouraAdaptação dos slides da Profa. Cristina Nunes 1
  2. 2. Árvores São estruturas de dados que caracterizam uma relação de hierarquia entre os dados  um conjunto de dados é hierarquicamente subordinado a outro. Diferente das listas, não são estruturas de dados lineares. Podem representar: sistemas de arquivos, interfaces gráficas com o usuário (organização dos menus), organização das páginas de um site, organização hierárquica de cargos ou setores de um empresa, etc.  Exemplo: Presidente Diretoria Diretoria de Diretoria Financeira Marketing De Vendas 2
  3. 3. Definição  Normalmente é um conjunto finito T de um ou mais nodos tal que:  existe um nodo denominado raiz da árvore;  os demais nodos formam m ≥ 0 subconjuntos disjuntos t1, t2, ..., tm, onde cada um desses subconjuntos é uma árvore.  as árvores ti (1 ≤ i ≤ M) recebem a denominação de sub-árvore.D = RaizC e E = sub-árvores D C E A B F t1 t2 3
  4. 4. Definição Um mesmo nodo não aparece em mais de uma sub-árvore ao mesmo tempo nunca teremos sub-árvores interligadas. A B C Não é árvore!!! D 4
  5. 5. Definição Se X é um nó que antecede um nó Y, X é pai de Y ou Y é filho de X. Nodos que possuem um mesmo pai são ditos irmãos A raiz é o único nodo que não possui pai Raiz G é pai de H H é filho de G A e B são irmãos 5
  6. 6. Terminologia Floresta: Se retirarmos o nodo raiz de uma árvore que contém sub- árvores estaremos criando uma floresta. Os filhos da raiz original serão as raizes das novas árvores. D C G E A B F H C E G Floresta A B F H 6
  7. 7. Terminologia Nó externo ou folha: nodos que não possuem filhos. D C E A B F Nó interno ou galho: nodos que não são folhas e nem raiz. D C E A B F 7
  8. 8. Terminologia Grau de um Nodo: número de sub-árvores de um nodo. D Grau = 2 C E Grau = 1 A B F Nível de um Nodo: número de linhas que liga o nó à raiz. O nível do nodo raiz é 0. D Nível = 0 Nível = 1 C E Nível = 1 Nível = 2 A B Nível = 2 F Nível = 2 8
  9. 9. Terminologia Altura da árvore: nível mais alto da árvore. Altura = 2 D C E A B F Árvore ordenada: quando existe uma ordem linear definida para os filhos de uma árvore. 9
  10. 10. Formas de Representação  Por adjacência (ou contiguidade)  Armazenamento da árvore em um vetor.  Cada posição por vetor pode, por exemplo, conter, além da informação do nodo, referências aos nodos filhos. Índice onde está o nodoRepresentação: Ou guardar apenas a informação e o grau no nodo: 10
  11. 11. Formas de Representação Registro fixo  Se o grau da árvore for baixo e/ou a variabilidade do grau entre os nodos for pouca. A B nulo C D nulo nulo nuloE F G H I nulo nulo nulo nulo nulo nulo nulo nulo nulo nulo nulo nulo nulonulo J nulonulo nulo  Problema:  No caso de árvores “genéricas”, em que cada nodo pode ter uma quantidade de sub-árvores diferentes, é necessário limitar o número máximo de sub-árvores que cada nodo deve conter.  Nodos de uma mesma árvore são todos do mesmo tipo. 11
  12. 12. Árvores Binárias  Estruturas do tipo árvore, onde o grau de cada nodo é sempre menor ou igual a 2.  Caso especial de árvore em que nenhum nodo tem mais que dois filhos.  Existe um senso de posição: distingue-se entre uma sub-árvore esquerda e uma sub-árvore direita. D B E A C F Não é árvore bináriasub-árvore da esquerda sub-árvore da direita 12
  13. 13. Propriedades O número máximo de nodos no K-ésimo nível de uma árvore binária é 2k.  Ex.: no nível 2 podemos ter no máximo 22 = 4 nodos. O número máximo de nodos em uma árvore binária com altura K é 2K+1 - 1, para K ≥ 0. Árvore completa: árvore de altura K com 2K+1 - 1 nodos. D Altura = 2 Nodos = 7 B F A C E G 13
  14. 14. Árvores Genéricas -> Árvores Binárias A transformação de uma árvore binária produz uma alteração na estrutura física da mesma, o que pode provocar uma interpretação errônea da relação hierárquica existente na árvore original. Para se interpretar corretamente a hierarquia de uma árvore transformada em árvore binária, deve-se ter em mente a transformação havida. Assim, a sub-árvore da esquerda de um nó é o filho deste nó, enquanto que a sub-árvore da direita é o seu irmão. A transformação de uma árvore em árvore binária oferece a vantagem de não requerer conhecimento prévio da mesma, para fins de alocação encadeada. A desvantagem em relação à primeira alternativa reside no fato de não se ter acesso direto de um nó pai para qualquer um dos filhos, já que para acessar o i-ésimo filho é necessário acessar os (i - 1) anteriores. 14
  15. 15. Árvores Genéricas -> Árvores Binárias Transformar uma árvore genérica em binária:  Etapa1: Conecta-se os nodos irmãos;  Etapa2: Desconecta-se o nodo pai dos nodos filhos, exceto do 1º filho. 15
  16. 16. Árvores Genéricas -> Árvores Binárias Redesenhando 16
  17. 17. Representação Nodos de uma árvore binária terão (no mínimo):  Informação typedef struct nodo{ char info;  referência para o nodo da esquerda nodo * esquerda; nodo * direita;  referência para nodo da direita. }nodo; AB CE D F G 17
  18. 18. Ávore de busca binária (Árvore Ordenada) Uma árvore binária, cuja raiz armazena o elemento R, é denominada árvore de busca binária se:  todo elemento armazenado na sub-árvore esquerda é menor que R;  todo elemento armazenado na sub-árvore direita é maior que R;  as sub-árvores esquerda e direita também são árvores de busca binária D B F A C E G 18
  19. 19. Operações Básicas Criar a árvore Inserir nodos na árvore Pesquisar nodos na árvore Excluir nodos da árvore Determinar a altura da árvore Determinar o nível de um nodo Caminhar em uma árvore 19
  20. 20. Inserção Novos nodos inseridos entram sempre na condição de folhas  um nodo não pode entrar numa árvore e já “assumir” filhos. Para inserir um elemento C  Começamos pelo nodo raiz.  Como C é menor que E, tomamos a sub-árvore da esquerda.  Comparando com a nova raiz temos C > B e conclui-se que o elemento deve ser armazenado na sub-árvore direita.  O processo se repete até chegarmos a uma sub-árvore nula.  Nesse momento, uma folha é alocada para armazenar o novo elemento e entra como raiz da sub-árvore nula. E E C B F B F Inserindo C A D G A D G C 20
  21. 21. Pesquisa Dado um elemento X a ser procurado entre os nodos da árvore, temos quatro possibilidades a considerar:  É uma árvore nula, portanto não há nada a fazer;  A raiz armazena o elemento X;  O valor de X é menor que aquele armazenado na raiz: deve-se prosseguir com a busca na sub-árvore esquerda;  O valor de X é maior ou igual que aquele armazenado na raiz: deve-se prosseguir com a busca na sub-árvore direita. 21
  22. 22. Exercícios Implementar um programa para criar árvores binárias de busca. Desenvolver as seguintes funções:  Adicionar elementos  Apresentar a informação de todos os elementos  O nó com a informação “x” encontra-se na árvore?  Nível do nó com a informação “x”  “x” é um nó externo ou interno? 22
  23. 23. Caminhamentos Forma de percorrer a árvore.  Visitar cada nodo apenas uma vez. Tipos  Pré-fixado (ou pré-ordem)  Central (ou em-ordem)  Pós-fixado (ou pós-ordem) 23
  24. 24. Caminhamento Pré-fixado Passos:  Primeiro: Visita Raiz  Segundo: Percorre sub-árvore da esquerda  Terceiro: Percorre sub-árvore da direita Ordem de visita nos nodos: 1, 2, 4, 5, 3, 6 e 7 24
  25. 25. Caminhamento Central Passos:  Primeiro: Percorre sub-árvore da esquerda  Segundo: Visita Raiz  Terceiro: Percorre sub-árvore da direita Ordem de visita nos nodos: 4, 2, 5, 1, 6, 3 e 7. 25
  26. 26. Caminhamento Pós-ordem Passos  Primeiro: Percorre sub-árvore da esquerda  Segundo: Percorre sub-árvore da direita  Terceiro: Visita Raiz Ordem de visita nos nodos: 4, 5, 2, 6, 7, 3 e 1 26
  27. 27. Exemplo - * / + C D - A B E FPRÉ: - * + a b c / d - e fCENTRAL: (expressão original) a + b * c - d / e - fPÓS: (notação polonesa) a b + c * d e f - / - 27
  28. 28. Alternativas de Árvores Binárias Aspecto fundamental do estudo de árvores de busca:  o custo de acesso a uma informação desejada. Alternativas:  Árvore balanceada  Árvore-B 28
  29. 29. Árvore Balanceada Idéia: manter os ramos da árvore sempre "no mesmo nível".  custo para manipular uma informação na árvore se mantém semelhante tanto para os ramos à esquerda quanto para os ramos à direita. As suas sub-árvores à esquerda e à direita possuem a mesma altura. Quando uma árvore cresce muito para um dos lados ela é dita degenerada (ou desbalanceada). Árvore balanceada Árvore degenerada 29
  30. 30. Árvore Balanceada O processo de balanceamento pode se tornar muito pesado quando a árvore contém muitos nós e várias inserções são feitas. Em 1962, dois matemáticos russos (Adelson Velskii e Landis) introduziram um conceito menos rigoroso de árvores balanceadas.  Uma árvore é considerada balanceada quando, para cada nó n, as alturas das sub-árvores à esquerda e à direita diferem no máximo de 1.  A esta diferença chamamos de "fator de balanceamento de n” (FatBal(n)).  Este algoritmo é conhecido como árvore AVL. 30
  31. 31. Árvore Balanceada Características  Diferença da altura da sub-árvore esquerda e direita é no máximo 1  Se um nodo raiz não satisfaz a condição de altura, então ele é considerado desbalanceado. Exemplo Árvore AVL Árvore desbalanceadaAltura(100) = Altura(SD) – Altura(SE) Altura(150) = Altura(SD) – Altura(SE)Altura(100) = 2 – 1 = 1 Altura(150) = 2 – 0 = 2 31
  32. 32. Árvore Balanceada Balanceamento  Processo que busca a distribuição equilibrada dos nodos de modo a otimizar a operação de consulta, isto é, minimizar o número médio de comparações necessárias para localizar uma chave.  É desejável que as chaves mais solicitadas estejam próximas à raiz.  Uma árvore é completamente balanceada se a distância média dos nodos até a raiz for mínima. 32
  33. 33. Árvore-B São árvores balanceadas projetadas para trabalhar com dispositivos de armazenamento secundário como discos magnéticos por exemplo. Visam otimizar as operações de entrada e saída nos dispositivos.  O tempo de acesso às informações em um disco é prejudicado principalmente pelo tempo de posicionamento do braço de leitura.  Uma vez que o braço esteja posicionado no local correto, a leitura pode ser feita de forma bastante rápida. Diferente das árvores binárias, cada nó em uma árvore B pode ter muitos filhos  o grau de um nó pode ser muito grande. 33
  34. 34. Árvore-B Definição  Uma árvore B de ordem d é uma árvore com as seguintes características:  A raiz tem no mínimo uma chave e dois filhos;  Uma folha tem no mínimo d chaves e não tem filhos;  Todos os outros nós têm no mínimo d chaves e d+1 filhos;  Todos os nós têm, no máximo, 2d chaves e 2d+1 filhos.  A ordem d indica a quantidade máxima e mínima de chaves dentro dos nodos. 34
  35. 35. Árvore-B Estrutura  Os nodos são compostos por chaves, ponteiros e informações.  Para cada chave está associada somente uma informação.  Pode-se ter informações adicionais que facilitam a manipulação dos nodos  Ex.: um campo para guardar o endereço do nodo pai e o número de chaves ativas dentro dos nodos  Existe um ponteiro externo que aponta para raiz, indicando o início da árvore. 35
  36. 36. Árvore-B Exemplo  Árvore B de ordem 2 (d = 2)  O nodo raiz pode conter no mínimo 1 chave e 2 apontadores e no máximo 4 chaves com 5 apontadores.  Os nodos internos poderão conter no mínimo 2 chaves com 3 apontadores e no máximo 4 chaves com 5 apontadores. 36
  37. 37. Árvore-B Principais Vantagens:  A utilização de memória é de no mínimo 50%.  As operações realizadas sobre a árvore-B tem como conseqüência uma ordenação natural das chaves.  Ótima para operações do tipo:  recuperar um determinado número de registros a partir de uma chave ou encontrar sucessores e predecessores 37
  38. 38. Árvore-B As árvores-B diminuem e aumentam de uma única forma:  através da divisão de um nodo em dois irmãos ou através da união de dois irmãos em um único nodo. O aumento ou diminuição da árvore são processos que sempre iniciam nos nodos folha e podem propagar-se até a raiz. Operações:  Pesquisa:  Análoga ao percurso em árvores binárias de busca.  Numa pesquisa binária, os ramos da árvore tomados para um nodo dependem da comparação entre a chave pesquisada e a chave armazenada no nodo.  Se a chave pesquisada é menor é tomado o braço esquerdo, se for maior o direito. Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreebusca.htm 38
  39. 39. Árvore-B Inserção:  É feita uma pesquisa até a folha apropriada para ser feita a inserção.  Existem 3 possibilidades:  se existir espaço na folha, o dado é simplesmente inserido;  se não houver espaço no nodo, verifica-se no irmão adjacente se há espaço. Se houver, toma-se a chave mais a direita do nodo a inserir e promove a "chave pai". A "chave pai" anterior é inserida no irmão adjacente. Desta forma, abre-se um espaço no nodo em que a chave deve ser inserida;  se não houver espaço no irmão adjacente, deve ocorrer a cisão do nodo em que a chave deve ser inserida . Neste caso, total de chaves em um nodo é dividido d, ficando assim as d menores chaves em um nodo e as d maiores chaves em outro. A chave mais à esquerda das d maiores chaves é promovida a "chave pai" (é inserida no nodo pai) dos nodos criados na cisão. Deste modo é criado um espaço nas folhas para ocorrer a inserção. Se o nodo pai está cheio, o mesmo processo é aplicado para ele, e assim consecutivamenteConsultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeinsercao.htm 39
  40. 40. G M P XA C D E N O Y Z J K R S T U V Inclusão da Chave B G M P XA B C D E C D E N O Y Z J K R S T U V 40
  41. 41. Chavei–1[x] Chavei[x] ..... ..... N W P Q R S T U V N=7 Inclusão da Chave O Chavei[x] Chavei–1[x] Chavei+1[x] ..... ..... N S W WOP Q R P Q R S T U V T U V N=4 N=3 41
  42. 42. A D F H L N P N=7 A1 A2 A3 A4 A5 A6 A7 A8 Inclusão da Chave E N=1 H A D E F F H L N P L N PA1 A2 A3 A4 A5 A6 A7 A8 A1 A2 A3 A4 N=3 N=4 42
  43. 43. Árvore-B Exclusão:  Pesquisa para localizar o nodo correto;  Existem 2 possibilidades:  a chave a ser excluída está em um nodo folha  simplesmente excluída;  a chave a ser excluída não está em um nodo folha  uma chave adjacente é procurada e transferida para o local onde encontra- se a chave a ser excluída.  esta chave pode ser a primeira chave da folha mais à esquerda da sub- árvore à direita ou a última chave da folha mais à direita da sub-árvore à esquerda.  a chave substituta é retirada de uma folha, o que nos leva a uma retirada em folha. 43
  44. 44. Árvore-B Verificar se a retirada "quebrou" a definição de árvore B:  caso a folha, após a retirada, tenha ficado com menos de d chaves:  verificamos a ordem dos irmãos adjacentes.  se existir um irmão adjacente com mais de d chaves:  é feita uma redistribuição.  A chave mais a esquerda do irmão adjacente é promovida a "chave pai" e a "chave pai" anterior é inserida no nodo em que a chave foi retirada (semelhante a inserção).  Se o irmão adjacente tem d chaves  é feita uma concatenação.  Juntar em um único nó as chaves dos irmãos adjacentes mais a "chave pai", eliminado um nodo folha e uma chave (a "chave pai") do nodo pai.  Dependendo do número de chaves do nodo pai, pode resultar em uma nova redistribuição ou em uma nova concatenação.Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeremocao.htm 44
  45. 45. Árvore-B 50 70 25 30 55 60 80 Remover 80 50 60 70 25 30 55 60 70 80 45

×