依次收集全部检查点后怎样安排最短闭合路线:规则验证第25组
地图上有多个检查点时,每次都走向最近的未访问点,最后回起点的路可能很长。把已经访问过哪些点与当前位置一起记为状态,才能比较完整路线的总代价。
本例采用的规则
本例六个检查点,零号为起终点,横纵步行距离作为两点间代价,途中没有障碍。状态包含已访问集合和最后一点,逐次加入一个未访问点;访问完一至五号后,再计入返回零号的距离,选择总代价最小的路线。
独立输入与结果
检查点零至五的坐标依次为[(1, 8), (7, 4), (8, 8), (2, 0), (5, 7), (6, 0)]。
两两距离矩阵: [0, 10, 7, 9, 5, 13] [10, 0, 5, 9, 5, 5] [7, 5, 0, 14, 4, 10] [9, 9, 14, 0, 10, 4] [5, 5, 4, 10, 0, 8] [13, 5, 10, 4, 8, 0] 按回程前最后一点分别取最优: (40, (0, 2, 4, 3, 5, 1, 0)) (34, (0, 3, 5, 1, 4, 2, 0)) (32, (0, 4, 2, 1, 5, 3, 0)) (32, (0, 3, 5, 1, 2, 4, 0)) (40, (0, 4, 2, 1, 3, 5, 0)) 全局最短路线与成本:(0, 3, 5, 1, 2, 4, 0) / 32。 最近优先路线[0, 4, 2, 1, 5, 3, 0],成本32,比最短多0。
表中的编号仅用于区分当前案例里的对象,不能与数值大小或另一份记录中的身份混淆。先核对输入、单位和边界约定,再跟随过程检查输出。空列表、不存在和数值零各有不同含义,分数则保留精确形式便于复算。
检查与练习
每个检查点应恰好作为访问目标出现一次,起点只在首尾重复。两点间最短行走路径可能经过别的点坐标,但本例只把明确列为目标的到访计入访问顺序。贪心路线仅用于对照,并不预设它一定更差或一定最优。
先按路线逐段加距离,特别核对最后一段回程。几条路线总长相同是正常现象,本例同成本取编号序列字典序较小者。只比较路线的前几段不能判断整体优劣,较贵的一段可能换来更便宜的后续连接。
结论适用范围
这些距离是无障碍格子移动模型,不包含转弯时间、单行通道或必须遵守的到达顺序。状态数量随检查点增加很快,六点练习能完整枚举验证,不代表同样办法适合任意规模。
这是一份可重复演算的游戏知识记录,结论只对写明的输入与规则成立。练习时可以先改变一个条件,再对照中间记录寻找变化从哪一步开始。若结果不同,应先确认操作顺序和边界定义,而不是只改最后一个数字;原始输入与完整过程应一起保留。
