Universidade Federal do Espírito Santo Profa Claudia Boeres Teoria dos Grafos – 2015/2 Trabalho 1: Algoritmos de caminho mínimo em grafos 1) Objetivo Estudo e apresentação de algoritmos de caminhos mínimos em grafos. 2) Tarefas a) Explicar porque o algoritmo de Dijkstra garante o resultado ótimo; b) Explicar porque o algoritmo de Dijkstra funciona só grafos com custos positivos. Exibir um exemplo para o qual o algoritmo não funciona; c) Implementar o algoritmo de Dijkstra comparando uma implementação padrão do algoritmo com uma implementação que utilize uma das estruturas de dados listadas a seguir, para as distâncias: c.1) heap binário (aluno 1 e aluno 2) c.2) d-heap (aluno 3 e aluno 4) c.3) heap de fibonacci (aluno 1 e aluno 2) c.4) dial (aluno 3 e aluno 4) d) Detalhes de implementação e a apresentação dos resultados computacionais devem ser organizados na forma de slides e apresentados como um seminário. Os slides devem conter os seguintes itens: d.1) Pseudo-código do algoritmo implementado, destacando seus detalhes de implementação. d.2) Apresentação dos resultados computacionais, indicando os tempos de execução do algoritmo considerando cada estrutura de dados sugerida. d.3) Conclusões e) Dados de entrada: Os algoritmos devem ser executados com quatro diferentes instâncias do site http://www.dis.uniroma1.it/challenge9/download.shtml. Neste site existe uma tabela com arquivos de dados referentes a 12 redes de estradas dos USA. Sugiro escolher as quatro menores:New York (NY), San Francisco (BAY), Colorado (COL) e Florida (FLA). Existem dois tipos de rede para cada cidade citada acima: uma delas possui informações de distância (coluna Distance graph da tabela) e a outra, tempo de viagem (coluna Travel Time graph da tabela). Sugiro aplicar suas implementações a essas duas redes. Informações do formato dos arquivos de dados podem ser encontradas em http://www.dis.uniroma1.it/challenge9/format.shtml. f) Resultados Computacionais Os resultados computacionais devem ser apresentados na forma de tabela com as seguintes informações: Grafo |N| Tempo de execução (em segundos) |A| Implementação 1 Implementação 2 Distância obtida Cada linha da tabela deve conter informações de um grafo: nas duas primeiras colunas colocar respectivamente o número de vértices e de arcos do grafo que representam cada rede de cada uma das quatro cidades, depois nas duas próximas colunas, informar o tempo de execução para cada estrutura de dados sugerida e na última coluna, informar a resposta do algoritmo para aquele grafo. g) Explicar, implementar o algoritmo Bellman-Ford e identificar as diferenças em relação ao Dijkstra. Gerar instâncias de teste. (aluno 1 e aluno 2) h) Explicar, implementar o algoritmo de Floyd e identificar as diferenças em relação aos outros algoritmos. Gerar instâncias de teste. (aluno 3 e aluno 4) 3) Avaliação A avaliação da atividade será baseada no seminário apresentado por cada grupo e a participação dos membros do grupo na apresentação será levada em conta. 4) Entrega O material a ser enviado para o e-mail ([email protected]) no mesmo dia da apresentação do seminário consiste em: • arquivo dos slides apresentados • arquivo compactado dos códigos implementados • arquivo compactado dos grafos de entrada gerados 5) Data da apresentação: 06/10/2015 Bom trabalho!!