在无向图中查找多边形

时间:2012-03-21 11:54:03

标签: graph-theory computational-geometry polygons

请参阅图片:http://i.stack.imgur.com/NPUmR.jpg

我有一个无向图,其中包含一个或多个连接的子图。该图由一组有序的连接顶点对定义。最多可能有300个顶点。该图是平面的。

我需要识别图像中显示的多边形。每个彩色区域都在一个单独的多边形中。粗略启发式可以是多边形是图中闭合边循环(循环)之间的“封闭区域”。在类似的帖子中已经建议使用深度优先遍历和标记访问顶点来识别循环。

但是我不知道如何在此之后继续获得所需的输出,如图所示。

要求:

i)多边形不得重叠或交叉。即:循环ABFHDCA不是有效多边形,因为它会与Polygon FHGE重叠。循环ABFEGHDCA是一个有效的多边形。

ii)多边形可以具有3个或更多个边,并且多边形必须由图的边缘限定。 XYZ是一个有效的多边形,尽管与图的其余顶点断开连接。

iii)像K和L这样的顶点(即叶子)不形成多边形的一部分。我们不关心边缘JK。

更新 iv)在图中,边缘不会相互交叉。两个边可以相遇的唯一位置是顶点。前一阶段/算法确保这种情况。

问题:

  1. 我是否正确使用DF travesal找到循环方法? DF遍历会给我在这种情况下需要考虑的所有(简单)周期,尤其是XYZ与图形的其余部分断开连接吗?

  2. 是否存在解决此问题的现有替代算法?

  3. 附加说明:

    a)我在更具体的计算几何术语中定义此问题时遇到困难,因此我坚持在无向图中查找多边形。我必须承认,自从我研究图论以来已经有好几年了。我现在正在刷它。

    b)对此的解决方案似乎不是凹/凸船体算法。我们谈论的是一组连接的边 - 真正的多边形,而不仅仅是需要包含的点云。

    c)上面的例子是我能在短时间内提出来的。我认为它涵盖了大多数“边缘”案例(双关语):)

    类似解决方案

    1. 我发现了类似的帖子,但the accepted solution似乎没有为此示例生成正确的周期。
    2. 提前致谢!

1 个答案:

答案 0 :(得分:1)

用于提取平面图区域的最佳算法:http://www.sciencedirect.com/science/article/pii/016786559390104L

您要做的是从嵌入的平面图中提取多边形/区域。该算法在上面的论文中给出。时间复杂度为\ Omega(m \ log {m}),空间复杂度为\ Omega(m),其中m是图中边的数量。