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

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Cortes (cut-sets)‏ 1.
Algoritmo de Caminho Mínimo
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos (Parte 2)
Antonio Dirceu Rabelo de Vasconcelos Filho
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
CC/EC/PPGI/UFES CC/EC/MestradoTeoria dos Grafos Algoritmo de Caminho Mínimo.
Análise e Síntese de Algoritmos
Pesquisa em profundidade
Algoritmos BUSCA E INSERÇÃO

HeapSort Filas de Prioridade – Heap
SEMINÁRIO DE ALGORITMOS
Árvore Geradora de Peso Mínimo
Classificação e Pesquisa de Dados
Ronaldo Celso Messias Correia –
Árvores Binárias de Pesquisa (ABP)
Métodos de Classificação por Seleção: HeapSort
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Árvore Geradora Mínima
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Algoritmos em Grafos.
Grafos Árvores Geradoras.
Heaps de Fibonacci Lino Alves.
Algoritmos em Grafos Árvores Geradoras Prof. André Renato
Algoritmos e Estruturas de Dados II
Exercícios: Alg Gulosos Eduardo Laber. Cap 4-Exercício 2 a)Verdadeiro, já que trocando cada elemento pelo seu quadrado não altera a ordem das arestas.
Análise e Síntese de Algoritmos
Algoritmos e Estrutura de Dados III
Introdução e Busca Cega
Algoritmos Gulosos em Grafos
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Problema do menor Caminho
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.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Algoritmo de PRIM para MST
Análise de Complexidade do Algoritmo de Dijkstra
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Revisão IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Allan Jefferson.
Árvores Vermelho-Preto
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Algoritmos para Obtenção de Árvore Geradora Mínima
Prof. Hilton Cardoso Marins Junior
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Conjuntos Algoritmos e Estruturas de Dados - IF672
Á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.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório.
Árvores AVL Algoritmos e Estruturas de Dados - IF672

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.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
IF672 cc Algoritmos e Estruturas de Dados
Heaps Katia S. Guimarães
Programação Dinâmica IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto Gomes.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca em Grafos IF672 - Algoritmos e Estruturas de Dados CIn - UFPE ©
Algoritmo de Dijkstra.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Ponteiros IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Murilo Raphael.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Entrada e Saída de Dados com Arquivos – Java
Estruturas de Dados Dinâmicas
Transcrição da apresentação:

© 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

© 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).

© 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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 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?

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 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?

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD 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?

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD Fila de Prioridades (A-C,0+5), (B-D,5+5) >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?

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Dijkstra AB CD Fila de Prioridades (C-D,5+4) >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?

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

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

© 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).

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 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

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

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD 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?

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD Fila de Prioridades (A-C,5), (B-D,5) >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?

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados MCST AB CD Fila de Prioridades (C-D,4) >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?

© 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 Qual é a AGPM do grafo abaixo?

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

© 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).

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

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

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

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

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Inserção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Atualização no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap Vetor para simular acesso direto Heap

© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Relembrando : Remoção no Heap Vetor para simular acesso direto Heap