Esempio n. 1
0
        static double[] getNIJ(AdjacencyList g, List <CaminoOptimo> cs)
        {
            bool[] visitados = new bool[g.tamanioGrafo()];
            char[] letras    = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
            foreach (int i in Enumerable.Range(0, g.tamanioGrafo()))
            {
                visitados[i] = false;
            }
            //OBTENER ARREGLO CON nij
            List <int>    tmpCosts = new List <int>();
            List <double> nij      = new List <double>();

            for (int i = 0; i < g.tamanioGrafo() - 1; i++)
            {
                visitados[i] = true;
                var vecinos = g[i];
                foreach (var j in vecinos)
                {
                    if (!visitados[j.Item1])
                    {
                        double x = (double)1 / (double)j.Item2;
                        nij.Add(x);
                        primerosArcos.Add(new Tuple <int, int>(i, j.Item1));
                        tmpCosts.Add(j.Item2);
                    }
                }
            }
            foreach (var i in primerosArcos)
            {
                Console.WriteLine($"{letras[i.Item1]} - {letras[i.Item2]}");
            }
            costosPrimerosArcos = tmpCosts.ToArray();
            return(nij.ToArray());
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            leerGrafo();
            grafo.mostrarListaAdyacencia();
            int raiz = 0;
            //SE BUSCA EN TODOS LOS VECINOS UN CAMINO
            var nodosVecinos = grafo[raiz];
            int nodoInicial  = raiz;
            var res          = 0;

            List <CaminoOptimo> caminos = new List <CaminoOptimo>();

            for (int i = 0; i < grafo.tamanioGrafo(); i++)
            {
                raiz   = i;
                camino = new List <int>();
                costos = new List <int>();
                arcs   = new List <Tuple <int, int> >();
                costo  = 0;
                inicializarArrVisitados(grafo.tamanioGrafo());
                visitados[raiz] = true;
                res             = busqueda(raiz, raiz);
                if (res == 200) //TRAJO UN CAMINO COMPLETO
                {
                    caminos.Add(new CaminoOptimo(raiz, camino, costo, costos, arcs));
                }

                /*else if(res == 500){
                 *  return; //TERMINA PROGRAMA
                 * }*/
            }

            /* foreach(var i in caminos){
             *  i.imprimirCamino();
             * } */
            //CONTINUAR CON HORMIGAS
            AntColony.Init(grafo, caminos);
            Console.WriteLine("Hello World!");
        }