Esempio n. 1
0
 /// <summary>
 /// Вычисление сумм ребер для следующей вершины
 /// </summary>
 /// <param name="info">Информация о текущей вершине</param>
 void SetSumToNextVertex(GraphVertexInfo info)
 {
     info.IsUnvisited = false;
     foreach (var edge in info.Vertex.Edges)
     {
         var nextInfo = GetVertexInfo(edge.ConnectedVertex);
         var sum      = info.EdgesWeightSum + edge.EdgeWeight;
         if (sum < nextInfo.EdgesWeightSum)
         {
             nextInfo.EdgesWeightSum = sum;
             nextInfo.PreviousVertex = info.Vertex;
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Поиск непосещенной вершины с минимальным значением суммы
        /// </summary>
        /// <returns>Информация о вершине</returns>
        public GraphVertexInfo FindUnvisitedVertexWithMinSum()
        {
            var             min           = Int32.MaxValue;
            GraphVertexInfo minVretexInfo = null;

            foreach (var inf in info)
            {
                if (inf.IsUnvisited && inf.EdgesWeightSum < min)
                {
                    minVretexInfo = inf;
                    min           = inf.EdgesWeightSum;
                }
            }
            return(minVretexInfo);
        }