在大量连通线中查找单独的,封闭的线组的算法

时间:2017-09-07 12:49:37

标签: c# algorithm graph coordinates

我目前正在尝试编写一种算法,该算法可以在更大的一组行中找到各个连接线组。下面的图片应该更清楚地解释一下。

Connected lines before

Groups of lines after

在第一张图片中,您可以看到一组线条。我想要做的是将这些线分成3组,如第二张图所示。红色和绿色组共享一条线。

我可以假设每一行都有一个开始和一个结束坐标,每一行都可以属于一个或多个组。

我目前正在尝试编写一个跟随每一行的递归函数,直到它到达一个可以跟随的一行或多行的终点。此时,该功能会自行回忆,直到它回到分支点后面。然而,事实证明这是不成功的。

此示例的输出(如第二张图像所示)应为3个单独的行组,存储在列表中。我目前正在使用c#,但是我应该可以使用任何语言的合适算法,包括伪代码。我知道必须有一个可以实现这一目标的算法,但我似乎无法解决或在线找到它。

1 个答案:

答案 0 :(得分:1)

在图论的语言中(顶点是所有线端点,每条边都是一条线),你的问题是找到一个平面图的所有面。这有时称为平面遍历。您可以咨询一些资源以获取相关信息,包括this mathoverflow question。虽然它是一个C ++库而不是C#,但Boost Graph Library有一个用于平面遍历的API,并且查阅其文档可能会有所帮助。