private void SetStartingPoint() { Point startPoint = Graph.Points.First(); // We can set any point as starting point. I choosed first one. VisitedNodes.Add(startPoint); UnvisitedNodes.Remove(startPoint); }
public double Run() { Point toPoint, fromPoint; SetStartingPoint(); for (int i = 0; i < Graph.Dimensions; i++) { fromPoint = GetCurrentNode(); if (UnvisitedNodes.Count > 0) // if we have nodes to visit; { toPoint = ChooseNextPoint(fromPoint); VisitedNodes.Add(toPoint); UnvisitedNodes.Remove(toPoint); } else { toPoint = VisitedNodes[0]; // if visited every node, just go back to start } Edge edge = Graph.GetEdge(fromPoint.Id, toPoint.Id); Path.Add(edge); TourDistance += edge.Length; } return(Math.Round(TourDistance)); }