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);
        }
示例#4
0
        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}");
        }