Skip to content

robertonscjr/GraphUtils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphUtils

Descrição:

    • GraphUtils é uma biblioteca em Java capaz de manipular grafos.

Métodos:

  • readGraph(pathFile): A biblioteca deve ler um grafo a partir de um arquivo de texto. O grafo será descrito segundo o seguinte formato: a primeira linha informa o número de vértices do grafo. Cada linha subsequente informa as arestas do mesmo.

  • readWeightedGraph(pathFile): Grafos com pesos. A biblioteca deve ser capaz de representar e manipular grafos não-direcionados que possuam pesos nas arestas. Os pesos, que serão representados por valores reais, devem estar associados às arestas. O arquivo de entrada agora terá uma terceira coluna, que representa o peso da aresta.

  • int getVertexNumber (graph), int getEdgeNumber (graph) e float getMeanEdge (graph): A biblioteca deve ser calcular asseguintes informações sobre o grafo: número de vértices, número de arestas e grau médio.

  • String graphRepresentation (graph, type): Representação de grafos. A biblioteca deve ser capaz de representar grafos utilizando tanto uma matriz de adjacência (type = “AM”), quanto uma lista de adjacência (type = “AL"). O usuário poderá escolher a representação a ser utilizada.

    • Saída esperada para o grafo exemplo (Figura 1) para o tipo (AM): 1 2 3 4 5 1 0 1 0 0 1 2 1 0 0 0 1 3 0 0 0 1 1 4 0 0 1 0 1 5 1 1 1 4 0
    • Saída esperada para o grafo exemplo (Figura 1) para o tipo (AL): 1 - 2 3 2 - 1 5 3 - 4 5 4 - 3 5 5 - 1 2 3 4
  • Buscas:

    • String BFS(graph, v)
    • DFS(graph, v) Busca em grafos: largura e profundidade. A biblioteca deve ser capaz de percorrer o grafo utilizando busca em largura e busca em profundidade. O vértice inicial será fornecido pelo usuário da biblioteca. A respectiva árvore de busca deve ser gerada assim como o nível de cada vértice na árvore (nível da raiz é zero). Para descrever a árvore gerada, basta informar o pai de cada vértice e seu nível na String de saída.
    • Saída esperada para o grafo exemplo (Figura 1) para a execução do BFS: 1 - - 0 2 - 1 1 3 - 2 5 4 - 2 5 5 - 1 1
  • String SCC(graph): Componentes fortemente conectados. A biblioteca deve ser capaz descobrir os componentes fortemente conexos de um grafo. Saída: cada linha contém a lista de vértices pertencentes a um componente. Os componentes devem estar listados em ordem decrescente de tamanho (listar primeiro o componente com o maior número de vértices, etc). Saída esperada para o grafo exemplo (Figura 1): 1 2 5 3 4

  • String shortestPath(v1, v2): Caminho mínimo. A biblioteca deve ser capaz de encontrar o caminho mais curto entre dois vértices. Saída esperada para o grafo exemplo (Figura 1), v1 = 1, v2 = 5: 1 2 5

  • String mst(graph): Arvore geradora mínima. A biblioteca deve ser capaz de encontrar uma árvore geradora mínima de um grafo. Você deve escolher um algoritmo apropriado para este problema. Para descrever a árvore gerada, basta informar o pai de cada vértice e seu nível na String de saída (semelhante ao método BFS(graph, v)).

About

Uma biblioteca em Java capaz de manipular grafos (powered by atg20181)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages