SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Estrutura de Dados I




                                          Árvores




Prof. Eder Stone Fontoura
Adaptação dos slides da Profa. Cristina Nunes       1
Á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
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 = Raiz
C e E = sub-árvores                               D




                                  C                         E




                             A          B                        F
                        t1                         t2


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

Representação:




                                           Ou guardar apenas a informação e o grau no nodo:


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

E                     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
Á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ária
sub-árvore da esquerda       sub-árvore da direita



                                                                            12
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
Á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
Á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
Árvores Genéricas -> Árvores Binárias
   Redesenhando




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




    A

B

         C

E                 D

    F        G
                                                                               17
Á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
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
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
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
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
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
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
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
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
Exemplo
                                     -


                             *               /



                    +            C       D            -



                A        B                       E        F




PRÉ: - * + a b c / d - e f
CENTRAL: (expressão original) a + b * c - d / e - f
PÓS: (notação polonesa) a b + c * d e f - / -
                                                              27
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
Á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
Á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
Á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 desbalanceada
Altura(100) = Altura(SD) – Altura(SE)   Altura(150) = Altura(SD) – Altura(SE)
Altura(100) = 2 – 1 = 1                 Altura(150) = 2 – 0 = 2
                                                                                31
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
                consecutivamente

Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeinsercao.htm

                                                                                    39
G     M     P    X



A C D E               N O                Y Z
          J K                    R S T U V
                Inclusão da Chave B
            G    M     P    X



A B C D E
  C D E              N O                Y Z
          J K                    R S T U V

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



O
P   Q R
    P Q   R
          S        T      U          V           T    U   V
          N=4                                                 N=3
                                                                          41
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   P


A1 A2 A3 A4 A5 A6 A7 A8                    A1 A2 A3 A4         N=3
                 N=4
                                                                 42
Á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
Á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
Árvore-B
            50    70

  25   30   55    60     80

            Remover 80

            50    60
                  70

  25   30   55    60     70
                         80



                              45

Weitere ähnliche Inhalte

Was ist angesagt?

Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaDavid Canjamba 2D
 
Árvores binárias
Árvores bináriasÁrvores binárias
Árvores bináriasLucas Santos
 
Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Hudson Miranda
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoLuis Ferreira
 
Titulação ácido base
Titulação ácido baseTitulação ácido base
Titulação ácido baseMarco Bumba
 
Instalação e configuração - Servidor DHCP
Instalação e configuração - Servidor DHCPInstalação e configuração - Servidor DHCP
Instalação e configuração - Servidor DHCPJoeldson Costa Damasceno
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesHelder Lopes
 
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosSistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosMariana Hiyori
 

Was ist angesagt? (20)

Reacoes Quimicas II
Reacoes Quimicas IIReacoes Quimicas II
Reacoes Quimicas II
 
Criação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma bibliotecaCriação de uma base de dados para gestão de uma biblioteca
Criação de uma base de dados para gestão de uma biblioteca
 
Dhcp
DhcpDhcp
Dhcp
 
LÓGICA PROGRAMÁVEL
LÓGICA PROGRAMÁVELLÓGICA PROGRAMÁVEL
LÓGICA PROGRAMÁVEL
 
Aula 7 banco de dados
Aula 7   banco de dadosAula 7   banco de dados
Aula 7 banco de dados
 
Árvores binárias
Árvores bináriasÁrvores binárias
Árvores binárias
 
Halogênios
HalogêniosHalogênios
Halogênios
 
Ácidos e bases
Ácidos e basesÁcidos e bases
Ácidos e bases
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informação
 
Titulação ácido base
Titulação ácido baseTitulação ácido base
Titulação ácido base
 
Instalação e configuração - Servidor DHCP
Instalação e configuração - Servidor DHCPInstalação e configuração - Servidor DHCP
Instalação e configuração - Servidor DHCP
 
Redes de computadores e Telecomunicações
Redes de computadores e TelecomunicaçõesRedes de computadores e Telecomunicações
Redes de computadores e Telecomunicações
 
Estrutura de diretorios
Estrutura de diretoriosEstrutura de diretorios
Estrutura de diretorios
 
Tecnologia Ou Metodologia
Tecnologia Ou MetodologiaTecnologia Ou Metodologia
Tecnologia Ou Metodologia
 
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de FicheirosSistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
Sistemas de Gestão de Bases de Dados e de Gestão de Ficheiros
 
Sql - introdução
Sql -  introduçãoSql -  introdução
Sql - introdução
 

Andere mochten auch

Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores BThiago Colares
 
Árvores binárias balanceadas
Árvores binárias balanceadasÁrvores binárias balanceadas
Árvores binárias balanceadasrenatopaschoal
 
Árvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoÁrvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoEverson Wolf
 
Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivosVirgínia
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamentoLeewan Meneses
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de InformacaoJefferson Martins
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosFilipe Simão Kembo
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoNuno Pereira
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamentofelipefaleiro
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃORenan Souza Daniel
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoFelipe J. R. Vieira
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+KianeLedok
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoRegis Magalhães
 

Andere mochten auch (20)

Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores B
 
Arvores b
Arvores bArvores b
Arvores b
 
Árvores binárias balanceadas
Árvores binárias balanceadasÁrvores binárias balanceadas
Árvores binárias balanceadas
 
Árvore B
Árvore BÁrvore B
Árvore B
 
Árvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoÁrvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programação
 
Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivos
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamento
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de Informacao
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dados
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamento
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamento
 
Meios de armazenamento
Meios de armazenamentoMeios de armazenamento
Meios de armazenamento
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de Armazenamento
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Dispositivos de Armazenamento
Dispositivos de ArmazenamentoDispositivos de Armazenamento
Dispositivos de Armazenamento
 

Arvores

  • 1. Estrutura de Dados I Árvores Prof. Eder Stone Fontoura Adaptação dos slides da Profa. Cristina Nunes 1
  • 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. 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 = Raiz C e E = sub-árvores D C E A B F t1 t2 3
  • 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. 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. 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. 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. 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. 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. 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 nodo Representação: Ou guardar apenas a informação e o grau no nodo: 10
  • 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 nulo E 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. Á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ária sub-árvore da esquerda sub-árvore da direita 12
  • 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. Á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. Á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. Árvores Genéricas -> Árvores Binárias  Redesenhando 16
  • 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; A B C E D F G 17
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Exemplo - * / + C D - A B E F PRÉ: - * + a b c / d - e f CENTRAL: (expressão original) a + b * c - d / e - f PÓS: (notação polonesa) a b + c * d e f - / - 27
  • 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. Á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. Á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. Á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 desbalanceada Altura(100) = Altura(SD) – Altura(SE) Altura(150) = Altura(SD) – Altura(SE) Altura(100) = 2 – 1 = 1 Altura(150) = 2 – 0 = 2 31
  • 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. Á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. Á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. Á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. Á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. Á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. Á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. Á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 consecutivamente Consultar: http://www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btreeinsercao.htm 39
  • 40. G M P X A C D E N O Y Z J K R S T U V Inclusão da Chave B G M P X A B C D E C D E N O Y Z J K R S T U V 40
  • 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 W O P Q R P Q R S T U V T U V N=4 N=3 41
  • 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 P A1 A2 A3 A4 A5 A6 A7 A8 A1 A2 A3 A4 N=3 N=4 42
  • 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. Á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. Árvore-B 50 70 25 30 55 60 80 Remover 80 50 60 70 25 30 55 60 70 80 45