Universidade Federal do Espírito Santo Profa Claudia Boeres

Propaganda
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!!
Download