关于算法:坐标系中两点之间的最短路径

Shortest path between two points in coordinates system

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


通常,针对此类问题的最佳算法是A *,使用像曼哈顿距离这样的简单启发式算法。但是首先,您应该找到非法点。非法点是您无法输入的点,在此问题中,矩形内的点是非法的(位于矩形侧面的点是合法的,因为您可以通过它们)。找到这些点后,只需实施A *算法即可找到A和B之间的最短路径。

请注意,由于此问题中没有边缘权重,因此您可以简单地运行BFS来找到最短的路径,但它的速度不及A *。

如果搜索空间很大,并且使用A *耗尽了内存,则应考虑使用IDA *,IDA *占用较少的内存,但可以多次探索节点。