2014-04-09 156 views
0

如果我们给出了一组S段,我们可以设计一个算法来测试集合S中的段是否可以形成一个多边形,如果它们与多边形相交,我不感兴趣,我只是想知道关于我可以测试什么标准,计算几何(多边形)

任何建议

+0

您是否在寻找具有顶点的多边形,这些顶点只是段端点* * *?或者你允许分段交点也变成多边形顶点? – HEKTO

+0

借调阿列克谢的问题。考虑看起来像符号“#”的分段集合,例如(1,0) - (1,4); (3,0) - (3,4); (0,1) - (4,1); (0,3) - (4,3)。他们形成一个多边形(中间广场)或没有,为了你的目的? – Michael

回答

2

构造一个图形数据结构,其中节点表示在集合S连接段A和链段B与如果A和B相交的边缘区段。遍历图来确定是否有任何循环。每个周期对应一个候选多边形。

0

为了记录,这里是一个可能更直接的解决方案(第一个答案是构造双图可能不太明显)。

构造一个图形,其中来自给定线段的每个(不同的)端点都是一个顶点,并且每个给定的线段都是一条边线。对此图进行深度优先搜索遍历以查找循环。这些周期是候选多边形。