坐标系

时间:2016-09-28 09:54:08

标签: algorithm geometry shortest-path path-finding

我有两个点A和B.我想找到从A到B的最短路径,但是有N(最多200个)矩形,并且路径不能与这些矩形中的任何一个相交。路径和矩形只能在矩形的顶点和矩形的两侧相交。最短路径的长度是多少?矩形不能相交。他们可以分享点或侧面。因此,如果有两个人共享一个侧面,那么你可以在它们之间传递。

1 个答案:

答案 0 :(得分:2)

通常使用像A*这样的简单启发式算法来解决此类问题的最佳算法Manhattan Distance。但首先你应该找到非法点。在此问题中您无法输入非法点,矩形内的点是非法的(位于矩形两侧的点是合法的,因为您可以通过它们)。找到这些点后,只需实现A *算法即可找到 A B 之间的最短路径。

请注意,由于此问题中没有边缘权重,您只需运行BFS即可找到最短路径,但它不会像A *一样快。

如果您的搜索空间非常大并且使用A *内存不足,则应考虑使用消耗较少内存的IDA*,但不止一次探索节点。