这似乎是一个NP完全问题。
在网格图中的哈密顿路径已被证明是NP完全问题。相关链接:网格图中的哈密顿路径。
值得注意的是,网格图是完整网格的子图。
当然,我还没有阅读过那篇论文,请先确认一下,特别是允许对角线移动的部分。
Doc已经得到了。 我会补充说明,黑盒子只会改变所有白盒子之间的距离。更进一步解释-如果在任意两个白盒子之间的对角线上有一个黑盒子(易于检查),则需要计算最短路径以获取距离。一旦你拥有一个距离矩阵,然后通过创建一个长度为零的虚拟节点到所有其他节点,来解决TSP或哈密顿路径问题。
关键是,为了制定和解决TSP(或任何问题制定),你必须先有一个距离矩阵。距离矩阵不是一开始就指定的,因此必须从头开始开发它。
虽然基于TSP的启发式方法是一个合理的方法,但并不清楚它是否给出了最优解。问题(正如Moron所指出的)是跨越路径问题,在评论中提供的链接中,有许多特殊情况可以使用线性时间最优解来解决。一个使得OP的问题与引用论文中使用的网格图公式不同的陷阱是能够对角线遍历,这会改变游戏的很多方面。
这类似于骑士巡游问题,其中典型的解决方案评估从起始方块开始的所有可能路径。当无法完成旅行时,使用回溯返回以追溯以前的决策。 你的问题更加轻松,因为你可以多次访问方块。 骑士巡游和旅行推销员问题通常需要恰好访问每个方块。
尝试将其构建为一个图形(其中每个节点最多有8个其他节点),并像http://en.wikipedia.org/wiki/Travelling_salesman_problem一样对待它