Esempio n. 1
0
        public void TentativaErro()
        {
            Console.WriteLine("\nSolução: Algoritmo de tentativa e Erro");

            int controle = -1, melhorCusto = int.MaxValue;

            Caminho[] melhorCaminho = new Caminho[numVertices - 1];
            int[]     permutacao    = new int[numVertices];

            for (int i = 0; i < melhorCaminho.Length; i++)
            {
                melhorCaminho[i] = new Caminho();
            }

            permuta(permutacao, melhorCaminho, ref melhorCusto, controle, 1);

            ImprimeCaminho(melhorCaminho.ToList());
        }
Esempio n. 2
0
        ////////////////////////////////////////////////////////////
        //      Os métodos relacionados ao algoritmo guloso       //
        //      e com o Tentativa e Erro foram retirados e        //
        //      adaptados do código encontrado no link abaixo     //
        //      https://github.com/BarbaraGCOL/CaixeiroViajante   //
        ////////////////////////////////////////////////////////////

        public void Guloso()
        {
            Console.WriteLine("\n Solução: Algoritmo Guloso");

            int            menor;
            int            cidade1 = 1, cidade2 = 1;
            List <Caminho> caminho = new List <Caminho>(numVertices);
            Caminho        Caminho = new Caminho();

            for (int i = 1; i < caminho.Capacity; i++)
            {
                menor           = custoMax;
                Caminho.cidade1 = cidade1;

                if (i == caminho.Capacity - 1)
                {
                    menor   = matriz[cidade1, 1];
                    cidade2 = 1;
                }
                else
                {
                    for (int j = 1; j < numVertices; j++)
                    {
                        if (j != cidade1 && caminho.Find(x => x.cidade1 == j || x.cidade2 == j) == null)
                        {
                            if (matriz[cidade1, j] != 0 && matriz[cidade1, j] < menor)
                            {
                                menor   = matriz[cidade1, j];
                                cidade2 = j;
                            }
                        }
                    }
                }

                Caminho.cidade2   = cidade2;
                Caminho.distancia = menor;
                caminho.Add(Caminho);
                Caminho = new Caminho();
                cidade1 = cidade2;
            }

            ImprimeCaminho(caminho);
        }