正在展开冲刺页面
正在展开冲刺页面
点数很少时用排列验证启发式是否靠谱。
少量坐标。
最优巡回。
对照退火/遗传算法。
完整可运行代码
import itertools, math
pts = [(0, 0), (1, 3), (4, 1), (2, 5)]
def tour_len(order):
s = 0
seq = order + (order[0],)
for i in range(len(order)):
a, b = pts[seq[i]], pts[seq[i + 1]]
s += math.hypot(a[0] - b[0], a[1] - b[1])
return s
best = min(itertools.permutations(range(len(pts))), key=tour_len)
print(best, round(tour_len(best), 3))