public void Cenario01()
        {
            var caixeiroViajanteGuloso = new CaixeiroViajanteGuloso(5);

            //Iniciando valores entre as cidades

            //Cidade A
            caixeiroViajanteGuloso.ArrayDistancias[0, 0] = 0;   //A-A
            caixeiroViajanteGuloso.ArrayDistancias[0, 1] = 101; //A-B
            caixeiroViajanteGuloso.ArrayDistancias[0, 2] = 132; //A-C
            caixeiroViajanteGuloso.ArrayDistancias[0, 3] = 116; //A-D
            caixeiroViajanteGuloso.ArrayDistancias[0, 4] = 182; //A-E

            //Cidade B
            caixeiroViajanteGuloso.ArrayDistancias[1, 0] = 101; //B-A
            caixeiroViajanteGuloso.ArrayDistancias[1, 1] = 0;   //B-B
            caixeiroViajanteGuloso.ArrayDistancias[1, 2] = 184; //B-C
            caixeiroViajanteGuloso.ArrayDistancias[1, 3] = 137; //B-D
            caixeiroViajanteGuloso.ArrayDistancias[1, 4] = 157; //B-E

            //Cidade C
            caixeiroViajanteGuloso.ArrayDistancias[2, 0] = 132; //C-A
            caixeiroViajanteGuloso.ArrayDistancias[2, 1] = 184; //C-B
            caixeiroViajanteGuloso.ArrayDistancias[2, 2] = 0;   //C-C
            caixeiroViajanteGuloso.ArrayDistancias[2, 3] = 168; //C-D
            caixeiroViajanteGuloso.ArrayDistancias[2, 4] = 195; //C-E

            //Cidade D
            caixeiroViajanteGuloso.ArrayDistancias[3, 0] = 116; //D-A
            caixeiroViajanteGuloso.ArrayDistancias[3, 1] = 137; //D-B
            caixeiroViajanteGuloso.ArrayDistancias[3, 2] = 168; //D-C
            caixeiroViajanteGuloso.ArrayDistancias[3, 3] = 0;   //D-D
            caixeiroViajanteGuloso.ArrayDistancias[3, 4] = 135; //D-E

            //Cidade E
            caixeiroViajanteGuloso.ArrayDistancias[4, 0] = 182; //E-A
            caixeiroViajanteGuloso.ArrayDistancias[4, 1] = 157; //E-B
            caixeiroViajanteGuloso.ArrayDistancias[4, 2] = 195; //E-C
            caixeiroViajanteGuloso.ArrayDistancias[4, 3] = 135; //E-D
            caixeiroViajanteGuloso.ArrayDistancias[4, 4] = 0;   //E-E

            caixeiroViajanteGuloso.AlgoritmoGuloso();

            Assert.True(caixeiroViajanteGuloso.Passos[0] == 101, "O valor esperado é 101 - A-B");
            Assert.True(caixeiroViajanteGuloso.Passos[1] == 137, "O valor esperado é 137 - B-D");
            Assert.True(caixeiroViajanteGuloso.Passos[2] == 135, "O valor esperado é 135 - D-E");
            Assert.True(caixeiroViajanteGuloso.Passos[3] == 195, "O valor esperado é 195 - E-C");
            Assert.True(caixeiroViajanteGuloso.Passos[4] == 132, "O valor esperado é 132 - C-A");
        }
        public void TestExercicioMarco()
        {
            var caixeiroViajanteGuloso = new CaixeiroViajanteGuloso(5);

            //Iniciando valores entre as cidades

            //Cidade A
            caixeiroViajanteGuloso.ArrayDistancias[0, 0] = 0;   //A-A
            caixeiroViajanteGuloso.ArrayDistancias[0, 1] = 185; //A-B
            caixeiroViajanteGuloso.ArrayDistancias[0, 2] = 119; //A-C
            caixeiroViajanteGuloso.ArrayDistancias[0, 3] = 152; //A-D
            caixeiroViajanteGuloso.ArrayDistancias[0, 4] = 133; //A-E

            //Cidade B
            caixeiroViajanteGuloso.ArrayDistancias[1, 0] = 185; //B-A
            caixeiroViajanteGuloso.ArrayDistancias[1, 1] = 0;   //B-B
            caixeiroViajanteGuloso.ArrayDistancias[1, 2] = 121; //B-C
            caixeiroViajanteGuloso.ArrayDistancias[1, 3] = 150; //B-D
            caixeiroViajanteGuloso.ArrayDistancias[1, 4] = 200; //B-E

            //Cidade C
            caixeiroViajanteGuloso.ArrayDistancias[2, 0] = 119; //C-A
            caixeiroViajanteGuloso.ArrayDistancias[2, 1] = 121; //C-B
            caixeiroViajanteGuloso.ArrayDistancias[2, 2] = 0;   //C-C
            caixeiroViajanteGuloso.ArrayDistancias[2, 3] = 174; //C-D
            caixeiroViajanteGuloso.ArrayDistancias[2, 4] = 120; //C-E

            //Cidade D
            caixeiroViajanteGuloso.ArrayDistancias[3, 0] = 152; //D-A
            caixeiroViajanteGuloso.ArrayDistancias[3, 1] = 150; //D-B
            caixeiroViajanteGuloso.ArrayDistancias[3, 2] = 174; //D-C
            caixeiroViajanteGuloso.ArrayDistancias[3, 3] = 0;   //D-D
            caixeiroViajanteGuloso.ArrayDistancias[3, 4] = 199; //D-E

            //Cidade E
            caixeiroViajanteGuloso.ArrayDistancias[4, 0] = 133; //E-A
            caixeiroViajanteGuloso.ArrayDistancias[4, 1] = 200; //E-B
            caixeiroViajanteGuloso.ArrayDistancias[4, 2] = 120; //E-C
            caixeiroViajanteGuloso.ArrayDistancias[4, 3] = 199; //E-D
            caixeiroViajanteGuloso.ArrayDistancias[4, 4] = 0;   //E-E

            caixeiroViajanteGuloso.AlgoritmoGuloso();

            Assert.True(caixeiroViajanteGuloso.Passos[0] == 119, "O valor esperado é 119 - A-C");
            Assert.True(caixeiroViajanteGuloso.Passos[1] == 120, "O valor esperado é 120 - C-E");
            Assert.True(caixeiroViajanteGuloso.Passos[2] == 199, "O valor esperado é 199 - E-D");
            Assert.True(caixeiroViajanteGuloso.Passos[3] == 150, "O valor esperado é 150 - D-B");
            Assert.True(caixeiroViajanteGuloso.Passos[4] == 185, "O valor esperado é 185 - B-A");
        }
        public void Cenario02()
        {
            var caixeiroViajanteGuloso = new CaixeiroViajanteGuloso(5);

            //Iniciando valores entre as cidades

            //Cidade A
            caixeiroViajanteGuloso.ArrayDistancias[0, 0] = 0;   //A-A
            caixeiroViajanteGuloso.ArrayDistancias[0, 1] = 161; //A-B
            caixeiroViajanteGuloso.ArrayDistancias[0, 2] = 140; //A-C
            caixeiroViajanteGuloso.ArrayDistancias[0, 3] = 142; //A-D
            caixeiroViajanteGuloso.ArrayDistancias[0, 4] = 154; //A-E

            //Cidade B
            caixeiroViajanteGuloso.ArrayDistancias[1, 0] = 161; //B-A
            caixeiroViajanteGuloso.ArrayDistancias[1, 1] = 0;   //B-B
            caixeiroViajanteGuloso.ArrayDistancias[1, 2] = 197; //B-C
            caixeiroViajanteGuloso.ArrayDistancias[1, 3] = 123; //B-D
            caixeiroViajanteGuloso.ArrayDistancias[1, 4] = 137; //B-E

            //Cidade C
            caixeiroViajanteGuloso.ArrayDistancias[2, 0] = 140; //C-A
            caixeiroViajanteGuloso.ArrayDistancias[2, 1] = 197; //C-B
            caixeiroViajanteGuloso.ArrayDistancias[2, 2] = 0;   //C-C
            caixeiroViajanteGuloso.ArrayDistancias[2, 3] = 139; //C-D
            caixeiroViajanteGuloso.ArrayDistancias[2, 4] = 126; //C-E

            //Cidade D
            caixeiroViajanteGuloso.ArrayDistancias[3, 0] = 142; //D-A
            caixeiroViajanteGuloso.ArrayDistancias[3, 1] = 123; //D-B
            caixeiroViajanteGuloso.ArrayDistancias[3, 2] = 139; //D-C
            caixeiroViajanteGuloso.ArrayDistancias[3, 3] = 0;   //D-D
            caixeiroViajanteGuloso.ArrayDistancias[3, 4] = 103; //D-E

            //Cidade E
            caixeiroViajanteGuloso.ArrayDistancias[4, 0] = 157; //E-A
            caixeiroViajanteGuloso.ArrayDistancias[4, 1] = 137; //E-B
            caixeiroViajanteGuloso.ArrayDistancias[4, 2] = 126; //E-C
            caixeiroViajanteGuloso.ArrayDistancias[4, 3] = 103; //E-D
            caixeiroViajanteGuloso.ArrayDistancias[4, 4] = 0;   //E-E

            caixeiroViajanteGuloso.AlgoritmoGuloso();

            Assert.True(caixeiroViajanteGuloso.Passos[0] == 140, "O valor esperado é 140 - A-C");
            Assert.True(caixeiroViajanteGuloso.Passos[1] == 126, "O valor esperado é 126 - C-E");
            Assert.True(caixeiroViajanteGuloso.Passos[2] == 103, "O valor esperado é 103 - E-D");
            Assert.True(caixeiroViajanteGuloso.Passos[3] == 123, "O valor esperado é 123 - D-B");
            Assert.True(caixeiroViajanteGuloso.Passos[4] == 161, "O valor esperado é 161 - B-A");
        }
예제 #4
0
        public static void ValoresFixos()
        {
            Console.WriteLine("Simulando o calculo da melhor rota utilizando valores fixos:" + Environment.NewLine);

            var caixeiroViajanteGuloso = new CaixeiroViajanteGuloso(5);

            caixeiroViajanteGuloso.ArrayDistancias[0, 0] = 0;   //A-A
            caixeiroViajanteGuloso.ArrayDistancias[0, 1] = 185; //A-B
            caixeiroViajanteGuloso.ArrayDistancias[0, 2] = 119; //A-C
            caixeiroViajanteGuloso.ArrayDistancias[0, 3] = 152; //A-D
            caixeiroViajanteGuloso.ArrayDistancias[0, 4] = 133; //A-E

            //Cidade B
            caixeiroViajanteGuloso.ArrayDistancias[1, 0] = 185; //B-A
            caixeiroViajanteGuloso.ArrayDistancias[1, 1] = 0;   //B-B
            caixeiroViajanteGuloso.ArrayDistancias[1, 2] = 121; //B-C
            caixeiroViajanteGuloso.ArrayDistancias[1, 3] = 150; //B-D
            caixeiroViajanteGuloso.ArrayDistancias[1, 4] = 200; //B-E

            //Cidade C
            caixeiroViajanteGuloso.ArrayDistancias[2, 0] = 119; //C-A
            caixeiroViajanteGuloso.ArrayDistancias[2, 1] = 121; //C-B
            caixeiroViajanteGuloso.ArrayDistancias[2, 2] = 0;   //C-C
            caixeiroViajanteGuloso.ArrayDistancias[2, 3] = 174; //C-D
            caixeiroViajanteGuloso.ArrayDistancias[2, 4] = 120; //C-E

            //Cidade D
            caixeiroViajanteGuloso.ArrayDistancias[3, 0] = 152; //D-A
            caixeiroViajanteGuloso.ArrayDistancias[3, 1] = 150; //D-B
            caixeiroViajanteGuloso.ArrayDistancias[3, 2] = 174; //D-C
            caixeiroViajanteGuloso.ArrayDistancias[3, 3] = 0;   //D-D
            caixeiroViajanteGuloso.ArrayDistancias[3, 4] = 199; //D-E

            //Cidade E
            caixeiroViajanteGuloso.ArrayDistancias[4, 0] = 133; //E-A
            caixeiroViajanteGuloso.ArrayDistancias[4, 1] = 200; //E-B
            caixeiroViajanteGuloso.ArrayDistancias[4, 2] = 120; //E-C
            caixeiroViajanteGuloso.ArrayDistancias[4, 3] = 199; //E-D
            caixeiroViajanteGuloso.ArrayDistancias[4, 4] = 0;   //E-E

            caixeiroViajanteGuloso.ImprimirDistanciaDasRotasDoGrafo();
            Console.WriteLine("\n");
            caixeiroViajanteGuloso.AlgoritmoGuloso();
            caixeiroViajanteGuloso.SomaDaMelhorRota();
        }
예제 #5
0
        //Input data
        public static bool EntradaDeValoresRandomicos()
        {
            Console.WriteLine("informe o número de cidades:");
            var numeroCidades = Convert.ToInt32(Console.ReadLine());

            if (numeroCidades < 1)
            {
                Console.WriteLine("Informe um valor de dois ou mais!");
                return(false);
            }
            Console.WriteLine("Entre a menor distância entre as cidades:");
            var inicio = Convert.ToInt32(Console.ReadLine());

            if (inicio < 0)
            {
                Console.WriteLine("O valor precisa ser positivo!");
                return(false);
            }
            Console.WriteLine("Informe a maior distância entre as cidades:");
            var fim = Convert.ToInt32(Console.ReadLine());

            if (fim < 0 || fim < inicio)
            {
                Console.WriteLine("O valor precisa ser positivo e maior que a distância inicial.");
                return(false);
            }

            ICaixeiroViajanteGuloso caixeiroViajanteGuloso = new CaixeiroViajanteGuloso(numeroCidades);

            caixeiroViajanteGuloso.PreencheDistanciaDasCidadesDoGrafo(inicio, fim);
            caixeiroViajanteGuloso.ImprimirDistanciaDasRotasDoGrafo();
            Console.WriteLine("\n");
            caixeiroViajanteGuloso.AlgoritmoGuloso();
            caixeiroViajanteGuloso.SomaDaMelhorRota();

            return(false);
        }