public void GerarGrafico_ListaVazia_Sucesso() { var result = GrafoUtil.MontarGrafo(trechosTestVazio); Assert.AreEqual(0, result.Nodos.Count); Assert.AreEqual(0, result.Arestas.Count); }
public void GerarGrafico_ListaFaltandoDado_Sucesso() { var result = GrafoUtil.MontarGrafo(trechosTestProblema); Assert.AreEqual(6, result.Nodos.Count); Assert.AreEqual(10, result.Arestas.Count); }
public void ProcessarGrafo_Sucesso() { var grafo = GrafoUtil.MontarGrafo(trechosTestOk); var nodoOrigem = grafo.Nodos.FirstOrDefault(x => x.Nome == "LS"); var nodoDestino = grafo.Nodos.FirstOrDefault(x => x.Nome == "BC"); IDijkstra dijkstra = new Dijkstra(grafo); dijkstra.ExecutarHeuristica(nodoOrigem); var result = dijkstra.ObterRota(nodoDestino); Assert.AreEqual(3, result.NodosPercurso.Count); Assert.AreEqual(2, result.Custo); }
static void Main(string[] args) { var trechos = FileUtil.LerLinhasArquivoTxt(@"Dados\trechos.txt"); var encomendas = FileUtil.LerLinhasArquivoTxt(@"Dados\encomendas.txt"); var grafo = GrafoUtil.MontarGrafo(trechos); var rotas = new StringBuilder(); foreach (var encomenda in encomendas) { var valores = encomenda.Split(" "); if (valores.Length == 2) { var nodoOrigem = grafo.Nodos.FirstOrDefault(x => x.Nome == valores[0]); var nodoDestino = grafo.Nodos.FirstOrDefault(x => x.Nome == valores[1]); IDijkstra dijkstra = new Dijkstra(grafo); dijkstra.ExecutarHeuristica(nodoOrigem); var percurso = dijkstra.ObterRota(nodoDestino); foreach (var nodo in percurso.NodosPercurso) { rotas.Append($"{nodo.Nome} "); } rotas.Append($"{percurso.Custo}"); rotas.Append("\n"); } } Console.WriteLine(rotas.ToString()); var caminho = FileUtil.EscreverArquivoTxt(@"Dados\rotas.txt", rotas.ToString()); Console.WriteLine($"Arquivo de saída salvo em: {caminho}"); }