public CPath(CCities map) { distance = new double[map.Coordinate.Length, map.Coordinate.Length]; for (int j = 0; j < map.Coordinate.Length; j++) { distance[j, j] = 0; for (int i = 0; i < map.Coordinate.Length; i++) { double value = Math.Sqrt(Math.Pow(map.Coordinate[i].X - map.Coordinate[j].X, 2) + Math.Pow(map.Coordinate[i].Y - map.Coordinate[j].Y, 2)); distance[i, j] = distance[j, i] = value; } } //создаем начальный путь //массив на 1 больше кол-ва городов, а первый и последний индексы равны 0 - это сделано для того чтобы "замкнуть" путь Path = new int[map.Coordinate.Length + 1]; for (int i = 0; i < map.Coordinate.Length; i++) { Path[i] = i; } Path[map.Coordinate.Length] = 0; }
static void SolveSalesmanProblem(string Path, int N, int length) { CCities Berlin = new CCities(N, $"/Users/admin/Desktop/Travelling Salesman Problem/{Path}.txt"); CPath path = new CPath(Berlin); foreach (var city in path.Path) { Console.Write(city); Console.Write(" "); } Console.WriteLine(); while (path.PathLength() > length) { path.FindBestPath(); //Console.WriteLine(path.PathLength()); } foreach (var city in path.Path) { Console.Write(city); Console.Write(" "); } Console.WriteLine(path.PathLength()); }