【问题标题】:Shortest Path Bounded By Circles以圆为界的最短路径
【发布时间】:2021-09-20 12:21:48
【问题描述】:

n个圆,半径为r,第i个圆的原点位于(x[i], y[i])。我想找到从第一个圆的原点到最后一个圆的原点的最短路径的距离,并且路径上的任何点都位于一个或多个圆内。

下面是位于(3, 3), (3, 7) 和(6, 7)的三个圆圈的演示,蓝线是最短路径。

我试图找到每对圆的交点并运行最短路径算法,但这会导致时间复杂度为O(n^5)。我想知道是否存在运行速度更快的更好算法。谢谢。

【问题讨论】:

  • 您也许可以使用navigation mesh-like 算法——形成一个以圆为顶点的图形,边在接触/相交的圆之间,并找到从起始圆到结束的路径圆圈。然后使用“拉弦”算法的一些变体(如文章中所述)来找到您的路径(我假设它由连接的直线段组成)。在我的脑海中,看起来蛮力解决方案不应该超过O(n^2)时间。

标签: algorithm geometry computational-geometry shortest-path


【解决方案1】:

我找到了O(n^3) 的解决方案。请注意,最佳路径由连接起点、终点或不位于另一个圆内的圆的交点(换句话说,图形的“外部交点”)的线段组成。候选点数为O(n)

那么对于每一对点,如果连接它们的直线上的每一点都在图形内,则将这对点的距离标记为它们之间的直线距离。否则,将距离标记为无穷大。这需要O(n^3),因为有O(n^2) 点对,检查需要O(n)

最后,运行从起始位置到结束位置的任何最短路径算法。 Floyd-Warshall 将是一个不错的选择,因为它的时间复杂度为O(n^3),并且给出了邻接矩阵。

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多