algorithm - 如何在有检查点的迷宫中找到最短路径?

标签 algorithm shortest-path maze

我正在研究一个最短迷宫问题,有一个起点、一个终点和一些检查点,旅行者必须至少通过一次。 '#' 表示墙,'.'表示道路,“P”表示检查站。

我正在考虑从终点开始寻找最近的检查点,并从当前检查点开始继续寻找那些未访问过的检查点,直到访问完所有检查点。最后寻找到达起点的最短路径。

但这看起来不太好,我的意思是,它看起来只是一个贪婪算法,不能确保您获得最佳解决方案。判断走哪个检查点时应该使用Knapsack算法吗?

最佳答案

不确定它是否是最有效的,但以下应该有效:

  1. 使用 Dijkstra (ie breadth-first) path finding algorithm 计算每对检查点之间的距离.
  2. 现在问题已经减少到 Travelling Salesman problem给定起点和终点。

对于最多大约 11 或 12 个检查点,可以使用 GPU 相当快速地解决这个问题,如 Open Source tutorial 所示。 (根据您的真实情况)。

关于algorithm - 如何在有检查点的迷宫中找到最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030046/

相关文章:

c - 如何使用 O(n) 算法在 C 中就地分区数组?

java - 如何写出一个随机的名字?

php - 通过多个节点的最短单向路径

java - 迷宫回溯水平移动

algorithm - 分析递归算法

python - 为什么 Python 不为以下情况抛出索引错误?

c++ - 通过矩阵中 N 个检查点的两点之间的最短路径

algorithm - 这种场景下如何实现最短路径算法呢?

java - 在数字迷宫中找到最短路径,Java

java - 避免重新绘制整个迷宫的最佳方法?