Esempio n. 1
0
        /// <summary>
        /// Dijkstra algorithim
        /// </summary>
        /// <param name="source"></param>
        /// <param name="dest"></param>
        /// <returns></returns>
        public string Dijkstra(int source, int dest)
        {
            MatrizAdj matrix  = new MatrizAdj(this);
            string    out_put = "";

            int[]  parent   = new int[NumVertices()];
            int[]  dist     = new int[NumVertices()];
            bool[] visitado = new bool[NumVertices()];

            for (int i = 0; i < NumVertices(); i++)
            {
                parent[i]   = -1;
                dist[i]     = int.MaxValue;
                visitado[i] = false;
            }
            dist[source] = 0;

            for (int count = 0; count < NumVertices() - 1; count++)
            {
                int u = min_dist(dist, visitado);

                visitado[u] = true;

                for (int v = 0; v < NumVertices(); v++)
                {
                    if (!visitado[v] && matrix.get_matrix()[u, v] != 0 &&
                        dist[u] != int.MaxValue &&
                        dist[u] + matrix.get_matrix()[u, v] < dist[v])
                    {
                        dist[v]   = dist[u] + (int)matrix.get_matrix()[u, v];
                        parent[v] = u;
                    }
                }
            }
            string str = str_path(dest, parent);

            out_put += $"Caminho mínimo do {BuscaVertice(source)} até {BuscaVertice(dest)} : {dist[dest]}";
            out_put += "\nCaminho: " + str;

            return(out_put);
        }
Esempio n. 2
0
 /// <summary>
 /// AdjMatrix to string
 /// </summary>
 /// <returns></returns>
 public string MatrixListToString()
 {
     MatrizAdj = new MatrizAdj(this);
     return(MatrizAdj.ToString());
 }