Yaakushi / libgarfos

trab de grafos

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Trabalho I de CI065 (2017/2)

Alunos:
GRR20148763 - Guilherme Bittencourt
GRR20143061 - Kaio Augusto de Camargo

* Por que utilizamos matriz de adjacência ao invés de uma lista de adjacência?

Escolhemos a matriz de adjacência pois, por mais que tivessemos preferência pela
lista de adjacência, acabamos concluindo que implementar uma lista encadeada em
apenas um arquivo .c poderia não ser exatamente a melhor opção. Não nos
beneficiamos muitas vezes no código do tempo constante para checar se uma
aresta em específico existe, ao passo que achamos que funções como a
"proximo_vizinho" poderiam ficar bem mais simples (e até mais eficientes) com
uma lista de adjacência. Apesar disso, outras funções foram facilitadas pelo uso 
da matriz de adjacência (por exemplo, diâmetro), por isso resolvemos manter a
matriz de adjacência, mas poderemos trocar caso haja mais pontos positivos na
lista de adjacência nos próximos trabalhos.

* Detalhes adicionais para levar em conta na correção:

- Na função "proximo_vizinho", escolhemos, por conveniência, pegar o próximo
vizinho do grafo de acordo com a matriz de adjacência, cujos vértices são
"ordenados" de acordo com a ordem que apareceram no arquivo DOT original.

- Vimos algumas otimizações que pareciam interessantes para alguma das funções
desse trabalho (simplicial e diâmetro, por exemplo), mas escolhemos não implementá-las
pois não sabiamos com quais tipos de grafo nossa biblioteca iria trabalhar no
futuro (com peso, direcionado, não direcionado, denso, esparso, etc).

* Bugs conhecidos:
Nenhum.

About

trab de grafos


Languages

Language:C 70.5%Language:Objective-C 24.8%Language:Makefile 4.7%