坐标系中两点之间的最短路径
Posted
技术标签:
【中文标题】坐标系中两点之间的最短路径【英文标题】:Shortest path between two points in coordinates system 【发布时间】:2017-02-06 05:27:24 【问题描述】:我有两个点 A 和 B。我想找到从 A 到 B 的最短路径,但是有 N 个(最多 200 个)矩形,并且路径不能与这些矩形中的任何一个相交。路径和矩形只能在矩形的顶点和矩形的边处相交。最短路径的长度是多少?矩形不能相交。他们可以分享观点或一方。因此,如果其中有两个共享一侧,那么您可以在它们之间传递。
【问题讨论】:
考虑将问题表示为图问题并使用 Dijsktra 算法 你的意思是如果路径上没有矩形,路径可以采用对角线吗?矩形的尺寸是多少?固定还是可变?要获得算法,最好为初始数据提供格式 交叉发布:math.stackexchange.com/q/1944808/14578,***.com/q/39744007/781723。请do not post the same question on multiple sites。每个社区都应该诚实地回答问题,而不会浪费任何人的时间。附:你遇到这种情况的背景是什么?这是一个编程竞赛问题吗? 【参考方案1】:通常,解决这类问题的最佳算法是A*,使用像Manhattan Distance 这样的简单启发式算法。但首先你应该找到非法点。非法点是您无法在此问题中输入的点,矩形内的点是非法的(位于矩形边上的点是合法的,因为您可以通过它们)。找到这些点后,只需执行 A* 算法即可找到 A 和 B 之间的最短路径。
请注意,由于此问题中没有边权重,您可以简单地运行 BFS 来找到最短路径,但它不会像 A* 那样快。
如果您的搜索空间很大并且使用 A* 时内存不足,您应该考虑使用 IDA*,它消耗的内存更少,但会多次探索节点。
【讨论】:
以上是关于坐标系中两点之间的最短路径的主要内容,如果未能解决你的问题,请参考以下文章