dijkstra - 二值图像/ map 中的真实最短路径

标签 dijkstra shortest-path a-star

如何在二进制图像/ map 中找到真正的最短路径?

我研究了不同的算法,例如Dijkstra 和 A*,但它们仅产生最短路径的近似值,因为所有像素仅以“8 连接”方式连接。

我可以使用什么算法来获得真正的最短路径 - 下图中的红线?

enter image description here

最佳答案

嗯,使用 8 个连接的网格意味着您只能找到沿 8 个邻居给出的方向前进的路径(0、+/-45、+/-90、+/-135、180) 。正如所附图片所示。

如果您需要使用 A*、Dijkstra 或类似方法来解决此问题,则解决此问题的唯一方法是增加路径的角度范围,增加网格的连接性(16 或 32 连接) 。即使如此,您的路径方向仍然有限。

为了解决您在问题中描述的问题,使用了其他类型的算法,例如 Theta*、Field D* 或 Block A*。这些算法能够找到任何角度的路径(根据您的问题的需要),甚至使用 8 个连接的网格作为搜索的基础。看看Wikipedia entry: Any-angle path planning了解有关此类搜索的更多信息。

希望我的回答有帮助。

关于dijkstra - 二值图像/ map 中的真实最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671066/

相关文章:

c - 实现A*算法

c# - 这是找到最短路径的最佳算法(时间复杂度)

c++ - 在 C++ 中通过网格/矩阵找到成本优化路径

c++ - dijkstra 算法的 c++ 程序中的段错误

c++ - 你有在圆上应用函数的技巧吗?

artificial-intelligence - A* 搜索算法启发式函数

algorithm - 寻找 Dijkstra 算法的起始顶点?

algorithm - 具有 Chebyshev 距离的 Dijkstra 算法

dijkstra - Cytoscape Dijkstra 算法关闭了吗?

c++ - Dijkstra 算法的复杂性