从候选位置中逐个选择出生点时,只让新点远离某一个旧点并不够。先看它离所有已选位置中最近的一个有多远,再选择这个最小距离最大的候选,可以明确表达分散布置的局部目标。
本篇用一组独立输入把规则展开为可重复核对的记录。先确认单位、编号及边界,再自行尝试推演,然后寻找与下面过程第一次不同的位置。所有结果只在这里写明的规则下成立,不能当作所有游戏的统一实现。
规则与输入
在二维整数地图中,两个固定位置先被占用。每轮给剩余候选计算到所有已占用点的距离平方,取最小值作为分数;选分数最高者,同分取原候选编号较小者,共选五轮。选中后立即加入已占用集合。
两固定点[[0, 0], [10, 14]] 十二候选按编号[[7, 6], [10, 10], [9, 6], [6, 3], [8, 11], [7, 11], [3, 11], [9, 2], [2, 2], [1, 0], [8, 14], [2, 5]]
逐步推演
第1轮剩余候选[编号,最近距离平方]为[[0, 73], [1, 16], [2, 65], [3, 45], [4, 13], [5, 18], [6, 58], [7, 85], [8, 8], [9, 1], [10, 4], [11, 29]],选中7号[9, 2],得分85;更新后的占用点[[0, 0], [10, 14], [9, 2]]。
第2轮剩余候选[编号,最近距离平方]为[[0, 20], [1, 16], [2, 16], [3, 10], [4, 13], [5, 18], [6, 58], [8, 8], [9, 1], [10, 4], [11, 29]],选中6号[3, 11],得分58;更新后的占用点[[0, 0], [10, 14], [9, 2], [3, 11]]。
第3轮剩余候选[编号,最近距离平方]为[[0, 20], [1, 16], [2, 16], [3, 10], [4, 13], [5, 16], [8, 8], [9, 1], [10, 4], [11, 29]],选中11号[2, 5],得分29;更新后的占用点[[0, 0], [10, 14], [9, 2], [3, 11], [2, 5]]。
第4轮剩余候选[编号,最近距离平方]为[[0, 20], [1, 16], [2, 16], [3, 10], [4, 13], [5, 16], [8, 8], [9, 1], [10, 4]],选中0号[7, 6],得分20;更新后的占用点[[0, 0], [10, 14], [9, 2], [3, 11], [2, 5], [7, 6]]。
第5轮剩余候选[编号,最近距离平方]为[[1, 16], [2, 4], [3, 10], [4, 13], [5, 16], [8, 8], [9, 1], [10, 4]],选中1号[10, 10],得分16;更新后的占用点[[0, 0], [10, 14], [9, 2], [3, 11], [2, 5], [7, 6], [10, 10]]。
五轮选中编号[7, 6, 11, 0, 1],每一轮都基于此前实际选择重新比较。
怎样独立检查
逐个枚举候选与当前占用点的配对距离,找出每个候选最不利的近邻,再比较这些最小值。核对选中点在当轮确实没有更高分的替代,但不要把逐轮局部最优误称为所有点组合的全局最优。
距离平方保持距离的大小次序,本例不需要开方。障碍物、视线、路径长度和队伍平衡都没有包含在这个几何模型中;实际关卡的出生安全性不能只靠这个分数判断。增加新点后,剩余候选必须重新评分。
练习时先保存原始输入及中间结果,再只改变一个条件观察差异。重点检查空状态、相同数值、恰好到达边界和最后一步。不要为了凑出相同的最终结果而忽略较早出现的偏差,过程和结论都应能由同一套规则解释。
