我目前正在尝试编写一种算法,该算法可以在更大的一组行中找到各个连接线组。下面的图片应该更清楚地解释一下。
在第一张图片中,您可以看到一组线条。我想要做的是将这些线分成3组,如第二张图所示。红色和绿色组共享一条线。
我可以假设每一行都有一个开始和一个结束坐标,每一行都可以属于一个或多个组。
我目前正在尝试编写一个跟随每一行的递归函数,直到它到达一个可以跟随的一行或多行的终点。此时,该功能会自行回忆,直到它回到分支点后面。然而,事实证明这是不成功的。
此示例的输出(如第二张图像所示)应为3个单独的行组,存储在列表中。我目前正在使用c#,但是我应该可以使用任何语言的合适算法,包括伪代码。我知道必须有一个可以实现这一目标的算法,但我似乎无法解决或在线找到它。
答案 0 :(得分:1)
在图论的语言中(顶点是所有线端点,每条边都是一条线),你的问题是找到一个平面图的所有面。这有时称为平面遍历。您可以咨询一些资源以获取相关信息,包括this mathoverflow question。虽然它是一个C ++库而不是C#,但Boost Graph Library有一个用于平面遍历的API,并且查阅其文档可能会有所帮助。