是否存在有效的算法来确定两个可能非凸多边形的边之间的交点?
这是我试图解决的任务:
给定一个具有 N 个顶点的多边形 A 和一个具有 M 个顶点的多边形 B,找到 A 中的线段与 B 中的线段之间的所有交集。
A 和 B 都可以是非凸的。
到目前为止,我已经实现了明显的解决方案(检查 A 中的每条边与 B 中的每条边,O(M*N))。
现在,对于某些多边形,实际上可能有(几乎)M*N 个交叉点,因此任何此类算法的最坏情况都是 O(M*N)。
我的问题是:
是否存在一种算法来确定两个非凸多边形之间的交点,平均情况下复杂度低于 O(N*M)
如果是,请告诉我该算法的名称算法,如果没有 - 一些证明它是不可能的资源。
Here's the task I'm trying to solve:
Given a polygon A with N vertices and a polygon B with M vertices, find all intersections between a segment in A and a segment in B.
Both A and B may be non-convex.
So far, I have implemented the obvious solution(check every edge in A with every edge in B, O(M*N)).
Now, for certain polygons it is in fact possible that there are (almost) M*N intersections, so the worst case for any such algorithm is O(M*N).
My question is:
Does there exist an algorithm for determining the points of intersection between two non-convex polygons with complexity in the average case that is lower than O(N*M)
If yes, then please give me the name of the algorithm, if no - some resource that proves it to be impossible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
摘自有关 Greiner-Hormann 的论文 (PDF) 多边形裁剪算法:
我相信第二段中的 N 是第一段中的 m + n。平均时间取决于 k 的平均值,即交叉点的数量。如果只有少数交叉点,则时间为 O(N log N)。
对“众所周知”结果的引用是:
这是一篇关于线扫描算法的论文。
Excerpt from a paper on the Greiner-Hormann (PDF) polygon clipping algorithm:
I believe N in the second paragraph is m + n from the first paragraph. The average time depends the average value of k, the number of intersections. If there are only a handful of intersections the time goes to O(N log N).
The reference to the "well-known" result is:
Here's a paper on the line sweep algorithm.