
[Regras] [Material]
[Implementação] [Problemas]
[Formato E/S] [Esqueletos]
[Experimentos]
[Datas] [Grupos]
[Resultados]
Os códigos devem ser escritos em C, sem o uso de bibliotecas adicionais, exceto a biblioteca padrão da linguagem ou da biblioteca GNU.
Os seguintes padrões* C são aceitos:
*O compilador GCC permite a compilação com validação de códigos com a flag -std. Ex.: (-std=c99).
Códigos com vazamento de memória ou problemas do tipo
serão penalizados com -1
pontos. Os códigos serão testados com a ferramenta valgrind.
| Instância |
Vértices |
Arestas |
Testar |
| rome99c.gr |
3.353 |
8.859 |
Dijkstra |
| USA-road-d.NYc.gr.bz2 |
264.346 |
730.100
|
Dijkstra |
| rg300_768.gr |
300 |
768 |
Floyd-Warshall |
| rg300_4730.gr |
300 |
4.730 |
Floyd-Warshall |
| comp-2007-2-22c.gr.gz |
600 |
276.666 |
Floyd-Warshall |
* soluções devem ser checadas; caminhos mínimos
pré-computados para rome99: spathsRome99c.gr.bz2
(lembre-se que entre dois nós pode haver mais de um caminho
ótimo possível). outros: nspathsRg300_768.txt.bz2 .
* alguns problemas vieram da competição
do
DIMACS.
* problemas adicionais serão colocados nos próximos
dias.
* os problemas teste para o algoritmo Floyd-Warshall (FW) podem incluir valores negativos nos custos dos arcos. A implementação de FW, quando encontrar um ciclo de custo negativo, deve abortar a computação e como saída deve somente indicar o caminho que indica o ciclo de custo negativo encontrado.
O programa deve receber os seguintes argumentos, quando chamado pela
linha de comando:
prog
<arquivoProblema> <nrExecuções>
<flagDepuração>
Onde <flagDepuração>
pode receber valor 0 ou 1. Como exemplo:
prog
rome99.gr 1000 1
Indica que o programa irá ler o grafo do arquivo rome99.gr, executando o algoritmo de caminhos mínimos 1000 vezes e ao final irá imprimir/salvar informação de depuração.
A informação de depuração que deve ser gerada, quando solicitada, é a seguinte:
arquivo spaths.txt
O arquivo spaths.txt
deve conter todos os caminhos mínimos computados para cada par
de vértices (s,t), sendo s diferente de t . Cada linha contém a
informação sobre o caminho mínimo de um par (s,t),
no
formato:
[s,t](dist)
n1
n2
n3
...
nn
Onde:
Os experimentos computacionais para avaliação do código serão executados em um computador com as seguintes características:
Para cada problema teste, será considerado o tempo médio em 3 chamadas ao programa. Em cada uma das chamadas, será passado <nrExecuções> com valor suficiente para que o tempo total de cada chamada não seja inferior a 15 segundos. Finalmente, o tempo de cada execução será computado dividindo-se pelo parâmetro utilizado.
Será avaliado o tempo computacional que cada programa leva em cada um dos problemas disponibilizados. O tempo será medido com o comando time, disponível nos ambientes Unix, usando-se a média de 3 execuções seguidas. Em cada problema será feita uma ordenação dos resultados, iniciando pelo programa mais rápido. Nessa seqüência, cada programa receberá uma quantidade de pontos de acorto com sua posição na lista de resultados, do seguinte modo:
Segue o esqueleto das implementações, de modo a ficaram em conforme com as necessidades acima descritas:
Dijkstra
dijkstra( arquivoGrafo, nrExecucoes, depurar )Floyd-Warshall
| Grupo |
Componentes |
| A |
Filipe Danniel |
| B |
Johnnatan Kayran Vitor |
| C |
Aline Marcos Roger |
| D |
Silmara Pollyanna |
| E |
Alessander |
| F |
Ademir Thiago Donizetti Lucas |
| G |
Suellen Antonio Carlos |
| H |
Bruno Saulo Victor Hugo |
| I |
Marco Túlio Rafael Samuel |
| J |
Néli |
| K |
Fernando Thiago Luís Leandro |