import sys import numpy as np def tsp_nearest_neighbor1(distances): num_cities = len(distances) visited = [False] * num_cities path = [0] # 起始城市为0 visited[0] = True for _ in range(num_cities - 1): curr_city = path[-1] min_distance = sys.maxsize nearest_city = None for city in range(num_cities): if not visited[city] and distances[curr_city][city] < min_distance and distances[curr_city][city] != 0: min_distance = distances[curr_city][city] nearest_city = city if nearest_city is not None: path.append(nearest_city) visited[nearest_city] = True path.append(0) # 回到起始城市形成闭合路径 return path def tsp_nearest_neighbor(distances): num_cities = len(distances) visited = [False] * num_cities path = [0] # 起始城市为0 visited[0] = True for _ in range(num_cities - 1): curr_city = path[-1] min_distance = sys.maxsize nearest_city = None for city in range(num_cities): if not visited[city] and distances[curr_city][city] < min_distance and distances[curr_city][city] != 0: min_distance = distances[curr_city][city] nearest_city = city if nearest_city is not None: path.append(nearest_city) visited[nearest_city] = True path.append(0) # 回到起始城市形成闭合路径 return path # 示例用法 distances = np.array([ [np.inf, 50, 99, np.inf, 64, np.inf], [50, np.inf, 12, 45, 74, 13], [99, 12, np.inf, 25, np.inf, 61], [np.inf, 45, 25, np.inf, 45, 47], [64, 74, np.inf, 45, np.inf, np.inf], [np.inf, 13, 61, 47, np.inf, np.inf] ]) path = tsp_nearest_neighbor1(distances) print(path)