Beispiel #1
0
 // Вычисление суммы весов ребер для следующей вершины
 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;
         }
     }
 }
Beispiel #2
0
        // Поиск непосещенной вершины с минимальным значением суммы
        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);
        }