/// <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; } } }
/// <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); }