Graph 在给定顶点坐标的情况下,查找图中的所有循环基
类似的问题 我有一个顶点Graph 在给定顶点坐标的情况下,查找图中的所有循环基,graph,Graph,类似的问题 我有一个顶点V和边E的无向图。我正在寻找一种算法来识别该图中的所有循环基。该图的示例如下所示: 现在,所有顶点坐标都是已知的(与前面的问题不同,与上图中的解释相反),因此可以找到包含整个图形的最小循环 在该图中,可能存在不形成任何循环的边 最好的算法是什么 下面是另一个您可以查看的示例: 假设e1是首先拾取的边,箭头显示边的方向 我还没有尝试过这个方法,它相当贪婪,但应该有效: 选择一个节点 去一家那是邻居的 继续,直到回到起始节点,但不允许访问旧节点 如果您得到一个循环,请在它
V
和边E
的无向图。我正在寻找一种算法来识别该图中的所有循环基。该图的示例如下所示:
现在,所有顶点坐标都是已知的(与前面的问题不同,与上图中的解释相反),因此可以找到包含整个图形的最小循环
在该图中,可能存在不形成任何循环的边
最好的算法是什么
下面是另一个您可以查看的示例:
假设
e1
是首先拾取的边,箭头显示边的方向 我还没有尝试过这个方法,它相当贪婪,但应该有效:
编辑:此处可以找到该算法的一个实现的未记录和未优化版本:。但是,它不能完全解决这个问题,因为它只能识别“真实”子集。这是一个c#问题吗?您可能会找到解决问题的通用算法。@mastoj,我已经编辑了标记。更改我的别名。。。你找到解决办法了吗?我建议的算法对你有用吗?@Thomas,不太有效。我有自己的定制解决方案。谢谢。@Thomas,假设一个节点连接到多个边,那么您如何选择使用边继续?@Ngu:没关系,您应该访问所有边。请注意,我自己还没有实现它,这是我想到的。但我认为它可以实现为某种递归算法。还要注意的是,算法没有优化,它非常贪婪。@Thomas,我的观点是,如果你面对两条边,你选择哪一条会影响你构造的面类型,所以这个问题在这里很重要。@Ngu:这就是第4步应该注意的。该算法将找到图中的所有循环,但步骤4将分割那些覆盖多个循环的循环。关于所选节点的唯一区别是,可以按不同的顺序找到面。