// Вычисление суммы весов ребер для следующей вершины void SetSumToNextPoint(GraphPointInfo info) { info.IsUnvisited = false; foreach (var e in info.Point.Edges) { var nextInfo = GetPointData(e.ConnectedPoint); var sum = info.EdgesWeightSum + e.EdgeWeight; if (sum < nextInfo.EdgesWeightSum) { nextInfo.EdgesWeightSum = sum; nextInfo.PreviousPoint = info.Point; } } }
// Поиск непосещенной вершины с минимальным значением суммы public GraphPointInfo FindUnvisitedPointWithMinSum() { var minValue = int.MaxValue; GraphPointInfo minPointInfo = null; foreach (var d in data) { if (d.IsUnvisited && d.EdgesWeightSum < minValue) { minPointInfo = d; minValue = d.EdgesWeightSum; } } return(minPointInfo); }