A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SEMINÁRIO DE ALGORITMOS Daniel Mascarenhas Alheiros Ronald José da Silva Santiago ÁRVORES E HEAPS ÁRVORES E HEAPS.

Apresentações semelhantes


Apresentação em tema: "SEMINÁRIO DE ALGORITMOS Daniel Mascarenhas Alheiros Ronald José da Silva Santiago ÁRVORES E HEAPS ÁRVORES E HEAPS."— Transcrição da apresentação:

1 SEMINÁRIO DE ALGORITMOS Daniel Mascarenhas Alheiros Ronald José da Silva Santiago ÁRVORES E HEAPS ÁRVORES E HEAPS

2 Introdução Linearidade de Filas e Pilhas Linearidade de Filas e Pilhas Árvores (definição e propriedades) Árvores (definição e propriedades) Heaps Heaps Operações em Heaps Operações em Heaps Conclusão Conclusão ÁRVORES E HEAPS ÁRVORES E HEAPS

3 Comentário sobre Filas e Pilhas São Estruturas Abstratas de dados ou seja, implementam uma gama de operações pré-definidas. PushPop

4 ÁRVORES São estruturas de dados onde existe uma hierarquia, o que exige uma maior elaboração estrutural em relação às listas, filas e pilhas.

5 ÁRVORES DEFINIÇÕES 1. Nó ou Vértice 2. Aresta 3. Raiz 4. Folha 5. Pai 6. Filho 7. Descendente 8. Altura 9. Grau Exemplo:

6 Exemplo: DEFINIÇÕES 1. Nó ou Vértice 2. Aresta 3. Raiz 4. Folha 5. Pai 6. Filho 7. Descendente 8. Altura 9. Grau ÁRVORES

7 Exemplo: ÁRVORES DEFINIÇÕES 1. Nó ou Vértice 2. Aresta 3. Raiz 4. Folha 5. Pai 6. Filho 7. Descendente 8. Altura 9. Grau

8 As árvores não têm ciclos, isto é, existe apenas um único caminho entre dois nós quaisquer contidos nelas. a b c d ÁRVORES

9 ÁRVORES Formas de Representação: 1. Implícita: Utiliza arrays (vetores); a bc def g hi abcdefghi A =

10 ÁRVORES Formas de Representação: 1. Implícita: Utiliza arrays (vetores); abcdefghi O primeiro termo do array é a raiz da árvore, o segundo é o seu filho à esquerda e o terceiro, o seu filho à direita, e assim sucessivamente. Podemos então perceber uma fórmula genérica para encontrar os filhos de um elemento: os filhos de A[i] são A[2i] e A[2i+1]. A =

11 ÁRVORES Formas de Representação: 2. Explícita: Utiliza os nós como registros com um campo de dados e dois campos de apontadores. A BC DEFG HI dado LR nó=

12 HEAPS São árvores binárias cujas chaves obedecem à seguinte propriedade: A chave de todo nó é maior ou igual às chaves dos seus descendentes. A chave de todo nó é maior ou igual às chaves dos seus descendentes

13 HEAPS Têm grande utilidade na implementação de filas de prioridade, que são tipos abstratos de dados definidos por duas operações: Insere(x) e Remove(r), onde r é sempre a raiz

14 HEAPS Remoção: 1. Sempre na raiz, pois é o elemento de maior prioridade. E agora, o que fazer com o que resta do heap (dois heaps separados)? ? Passo1

15 HEAPS Remoção: 2. Neste ponto a raiz recebe o último elemento do que era o antigo heap Passo2

16 HEAPS Remoção: 3. Agora deve-se comparar a nova raiz com seus filhos a fim de que se mantenha a Propriedade de Heap Passo3

17 HEAPS Remoção: 4. Como o filho à esquerda era o maior dos filhos analisados (8 e 6) e também era maior que o seu antecessor (2), trocam-se as posições Passo4

18 HEAPS Remoção: 5. Enquanto existirem antecessores menores que os seus descendentes, repete-se o Passo 4 (neste exemplo troca-se o 2 pelo 7, e depois o pelo 4) Passo4

19 HEAPS Remoção (algoritmo implícito): Algoritmo remoção (A, n); Entrada: A um array de tamanho n representando um heap; Saída:Max (o elemento máximo do heap); início se n=0 então imprima: O heap está vazio se n=0 então imprima: O heap está vazio senãoMax:=A[1];A[1]:=A[n]; n:=n-1; pai:=1; filho:=2; enquanto filho <= n-1 faça se A[filho] < A[filho+1] entao filho:=filho+1; se A[filho] > A[pai] entao troque A[pai] por A[filho]; pai:=filho; filho:=2*filho; senão filho:=n {para o laço} fim.

20 HEAPS Inserção: 1. É sempre realizada após o último elemento do heap Passo1 novo elemento

21 HEAPS Inserção: 2. Verifica-se se o novo elemento está na posição correta, isto é, se a árvore continua sendo um heap. Em caso negativo, troca-se ele pelo seu antecessor imediato (seu pai) Passo2

22 HEAPS Inserção: 3. Enquanto houver pais menores que os filhos, troca-se as suas posições Passo2

23 HEAPS Inserção (algoritmo implícito): Algoritmo Inserção (A, n, x); Entrada: A um array com n termos (heap), x um número (chave); Saída: A (o novo heap), n (o novo tamanho do heap); início n:=n+1; {assumimos que não estouramos (overflow) o array} A[n]:=x; filho:=n; pai:= n div 2; {a variável pai recebe o resultado inteiro da divisão} enquanto pai >= 1 faça se A[pai] < A[filho] então troque A[pai] e A[filho] filho:=pai; pai:=pai div 2; senão pai:=0; {para parar o laço} fim.

24 Conclusão Filas e Pilhas (Facilidade X Limitação) Filas e Pilhas (Facilidade X Limitação) Árvores Árvores  Formas Implícita X Explícita Heaps Heaps  Utilizações X Limitações ÁRVORES E HEAPS ÁRVORES E HEAPS

25 FIM


Carregar ppt "SEMINÁRIO DE ALGORITMOS Daniel Mascarenhas Alheiros Ronald José da Silva Santiago ÁRVORES E HEAPS ÁRVORES E HEAPS."

Apresentações semelhantes


Anúncios Google