真正的二进制最短路径 image/map
True shortest path in binary image/map
如何在二进制文件中找到真正的最短路径image/map?
我研究了不同的算法,例如Dijkstra 和 A* 但它们仅产生最短路径的近似值,因为所有像素仅以“8 连接”方式连接。
用什么算法可以得到真正的最短路径-下图中的红线?
好吧,使用 8 连接的网格意味着您只能找到在 8 邻居给定的方向上前进的路径(0、+/-45、+/-90、+/-135、 180)。如附图所示。
如果您需要使用 A*、Dijkstra 或类似方法解决此问题,解决此问题的唯一方法是增加路径的角度变化,增加网格的连通性(16 或 32-连接的)。即使这样,您的路径方向也有限。
为了解决您在问题中描述的问题,使用了其他类型的算法,例如 Theta*、Field D* 或 Block A*。这些算法能够找到任何角度的路径(如您在问题中所需要的那样),甚至使用 8 连接的网格作为搜索的基础。查看 Wikipedia entry: Any-angle path planning 以了解有关此类搜索的更多信息。
希望我的回答对您有所帮助。
如何在二进制文件中找到真正的最短路径image/map?
我研究了不同的算法,例如Dijkstra 和 A* 但它们仅产生最短路径的近似值,因为所有像素仅以“8 连接”方式连接。
用什么算法可以得到真正的最短路径-下图中的红线?
好吧,使用 8 连接的网格意味着您只能找到在 8 邻居给定的方向上前进的路径(0、+/-45、+/-90、+/-135、 180)。如附图所示。
如果您需要使用 A*、Dijkstra 或类似方法解决此问题,解决此问题的唯一方法是增加路径的角度变化,增加网格的连通性(16 或 32-连接的)。即使这样,您的路径方向也有限。
为了解决您在问题中描述的问题,使用了其他类型的算法,例如 Theta*、Field D* 或 Block A*。这些算法能够找到任何角度的路径(如您在问题中所需要的那样),甚至使用 8 连接的网格作为搜索的基础。查看 Wikipedia entry: Any-angle path planning 以了解有关此类搜索的更多信息。
希望我的回答对您有所帮助。