【发布时间】: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