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

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -

Apresentações semelhantes


Apresentação em tema: "© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -"— Transcrição da apresentação:

1 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar if672.ufpe@gmail.com

2 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa A cada passo, é escolhida uma aresta segundo algum critério de prioridade (aresta com menor custo, menor caminho, etc) analisando um histórico das operações realizadas até então. Por exemplo: sabendo o custo do caminho necessário para atingir o nó atual a partir de um nó inicial, escolher a aresta que irá proporcionar o menor caminho do nó atual para o próximo nó (Algoritmo de Dijkstra).

3 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra Algoritmo capaz de descobrir o menor caminho existente entre um nó de origem e um nó de destino. É um algoritmo completo (caso exista o menor caminho entre os nós de origem e destino, o algoritmo sempre* encontra o menor caminho), ótimo (não há nenhum caminho menor do que o encontrado) e eficiente. * O algoritmo de Dijkstra não é capaz de lidar com arestas de peso negativo. Applet

4 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades 0 ∞ ∞ ∞ Qual é o menor caminho entre A e D? Comentários (cor) - Nó ainda não visitado: azul - Nó que está sendo visitado no momento: vermelho - Nó visitado: preto

5 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (A-A,0) 0 ∞ ∞ ∞ Comentários - Inserir o caso base no heap. - Altera o menor caminho conhecido para A. Qual é o menor caminho entre A e D?

6 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades 0 ∞ ∞ ∞ Comentários - Por enquanto que a fila não estiver vazia, remove o melhor (raiz) elemento da fila de prioridades. Obs.: Melhor é a aresta (X-Y,z) cujo valor z é o menor do heap. Qual é o menor caminho entre A e D?

7 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (A-B,0+5), (A-D,0+11), (A-C,0+5) 0 ∞> 0+5=5 ∞> 0+11=11 Comentários - Percorre a lista de incidência do nó que estou visitando no momento. - Para cada nó verificar se ele não foi visitado (marcado) E custo> custo(origem)+custo(aresta). Qual é o menor caminho entre A e D?

8 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (A-D,0+11), (A-C,0+5) 0 5 5 11 Comentários - Remove a melhor aresta da fila de prioridades. Qual é o menor caminho entre A e D?

9 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (A-C,0+5), (B-D,5+5) 0 5 5 11>5+5=10 Comentários -Percorre a lista de incidência do nó que estou visitando agora. - Para cada nó verificar se ele não foi visitado (marcado) E custo> custo(origem)+custo(aresta). Qual é o menor caminho entre A e D?

10 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (B-D,5+5) 0 5 5 10 Comentários - Remove a melhor aresta do heap. Qual é o menor caminho entre A e D?

11 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades (C-D,5+4) 0 5 5 10>5+4=9 Comentários -Percorre a lista de incidência do nó que estou visitando no momento. -Para cada nó verificar se ele não foi visitado (marcado) E custo> custo(origem)+custo(aresta). Qual é o menor caminho entre A e D?

12 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 11 5 4 Fila de Prioridades 0 5 5 9 Comentários - Remove a melhor aresta da fila de prioridades. Qual é o menor caminho entre A e D?

13 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 5 5 4 Fila de Prioridades 0 5 5 9 Comentários - O heap está vazio. Fim do while. Qual é o menor caminho entre A e D?

14 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra Inserir caso base na fila de prioridades (heap); Por enquanto que a fila de prioridades não estiver vazia; Remover a "melhor" aresta da fila de prioridades (heap); Se o nó destino desta aresta não tiver sido visitado; Marcar o nó destino como visitado; Percorrer a lista de incidência deste nó; Se o nó destino das arestas presentes na lista de incidência não tiver sido visitado E o menor caminho conhecido até então maior do que o caminho atual; Atualizar o menor caminho conhecido para o nó destino em questão; Se o nó destino já estiver no heap Atualizar a aresta em questão na fila de prioridades (heap). Senão Inserir a aresta em questão na fila de prioridades (heap).

15 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST MCST: Minimal Cost Spanning Tree. Algoritmo capaz de descobrir a árvore geradora de peso mínimo (AGPM). É um algoritmo completo, ótimo e eficiente. Que arestas eu posso apagar de um grafo sem gerar componentes desconexo de forma que a soma das arestas restantes seja a menor possível.

16 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades 0 ∞ ∞ ∞ Qual é a AGPM do grafo abaixo? Comentários (cor) - Nó ainda não visitado: azul - Nó que está sendo visitado no momento: vermelho - Nó visitado: preto

17 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (A-A,0) 0 ∞ ∞ ∞ Comentários - Inserir o caso base na fila de prioridades. Qual é a AGPM do grafo abaixo?

18 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades 0 ∞ ∞ ∞ Comentários - Remover a melhor aresta do heap. Qual é a AGPM do grafo abaixo?

19 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (A-B,5), (A-C,5), (A-D,11) 0 ∞> 5 ∞> 11 Comentários - Percorrer a lista de incidência do nó que está sendo visitado no momento verificando se o nó não foi visitado e custo> custo(aresta). Qual é a AGPM do grafo abaixo?

20 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (A-C,5), (A-D,11) 0 5 5 11 Comentários - Remover a melhor aresta do heap. Qual é a AGPM do grafo abaixo?

21 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (A-C,5), (B-D,5) 0 5 5 11>5 Comentários - Percorrer a lista de incidência do nó que está sendo visitado no momento verificando se o nó não foi visitado e custo> custo(aresta). Qual é a AGPM do grafo abaixo?

22 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (B-D,5) 0 5 5 5 Comentários - Remover a melhor aresta do heap. Qual é a AGPM do grafo abaixo?

23 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 11 5 4 Fila de Prioridades (C-D,4) 0 5 5 5>4 Comentários - Percorrer a lista de incidência do nó que está sendo visitado no momento verificando se o nó não foi visitado e custo> custo(aresta). Qual é a AGPM do grafo abaixo?

24 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST Fila de Prioridades Comentários - Remover a melhor aresta do heap. AB CD 5 5 11 5 4 0 5 5 4 Qual é a AGPM do grafo abaixo?

25 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 5 5 4 Fila de Prioridades 0 5 5 4 Comentários - A fila de prioridades está vazia. - Fim do algoritmo. Qual é a AGPM do grafo abaixo?

26 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST Inserir caso base na fila de prioridades (heap); Por enquanto que a fila de prioridades não estiver vazia; Remover a "melhor" aresta da fila de prioridades (heap); Se o nó destino desta aresta não tiver sido visitado; Marcar o nó destino como visitado; Percorrer a lista de incidência deste nó; Se o nó destino das arestas presentes na lista de incidência não tiver sido visitado E a menor aresta conhecida até então for maior do que a aresta atual; Atualizar a menor aresta conhecida para o nó destino em questão; Se o nó destino já estiver no heap Atualizar a aresta em questão na fila de prioridades (heap). Senão Inserir a aresta em questão na fila de prioridades (heap).

27 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Heap Para que o custo dos algoritmos de Dijkstra e Prim (MCST) seja O((|E|+|V|)log|V|), deve-se usar um heap. Heap é uma estrutura de prioridades, na forma de árvore binária semi-completa, que representa uma ordem parcial entre os elementos do conjunto. As operações que você deverá usar são: Inserção; Remoção; Atualização.

28 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap A inserção é feita na última posição do heap. Deve-se manter a propriedade do heap, ou seja, trocar o elemento inserido pelo pai se este for menor (em heaps mínimos) ou se este for maior (em heaps máximos). A inserção é bottom-up. Custo = O(log n), onde n é o número de elementos no heap.

29 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap A remoção é feita na primeira posição do heap. Coloca-se o último elemento na raiz. Deve-se manter a propriedade do heap, por isso, fazemos o heapfy na raiz. A remoção é top-down. Custo = O(log n), onde n é o número de elementos no heap.

30 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap Heap não é um estrutura de acesso de dados. Por isso, deve-se manter um vetor para se ter um acesso direto. Após a atualização deve-se manter a propriedade do heap, ou seja, trocar o elemento atualizado pelo pai se este for menor (em heaps mínimos) ou se este for maior (em heaps máximos). A atualização é bottom-up. Cuidado na atualização do vetor de acesso direto. Custo = O(log n), onde n é o número de elementos no heap.

31 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap 89 921 22 2634 41 74 8 15 32 4 85 7432892241154219342688542561391112713108 Vetor para simular acesso direto Heap

32 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap 89 921 22 2634 41 74 8 85 32 4 15 7432892241854219342681542513139111276108 Vetor para simular acesso direto Heap

33 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap 89 921 22 2634 41 74 8 32 85 4 15 7485892241324219342681542513169111273108 Vetor para simular acesso direto Heap

34 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap 89 921 22 2634 41 74 8 32 85 4 15 7485892241324219342681542513169111273108 Vetor para simular acesso direto Heap

35 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap 89 921 22 2634 41 74 8 86 85 4 15 7485892241864219342681542513169111273108 Vetor para simular acesso direto Heap

36 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap 89 921 22 2634 41 74 8 85 86 4 15 7486892241854219342681542513139111276108 Vetor para simular acesso direto Heap

37 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap 89 921 22 2634 41 74 8 85 86 4 15 7486892241854219342681542513139111276108 Vetor para simular acesso direto Heap

38 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap 15 921 22 2634 41 74 8 85 86 4 89 748615224185421934268425139111276108 Vetor para simular acesso direto Heap

39 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap 86 921 22 2634 41 74 8 85 15 4 89 741586224185421934268425319111276108 Vetor para simular acesso direto Heap

40 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap 86 921 22 2634 41 74 8 15 85 4 89 748586224115421934268425619111273108 Vetor para simular acesso direto Heap

41 © Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap 86 921 22 2634 41 74 8 15 85 4 89 748586224115421934268425619111273108 Vetor para simular acesso direto Heap


Carregar ppt "© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -"

Apresentações semelhantes


Anúncios Google