在给定顶点坐标的图形中查找所有循环基础

时间:2010-10-26 11:47:58

标签: graph

类似问题is posted here

我有一个带有顶点V和边E的无向图。我正在寻找一种算法来识别该图中的所有循环基础。这种图表的一个例子如下所示:

alt text

现在,所有顶点坐标已知 与以前的问题不同 与上图)因此可以找到包含整个图的最小周期。

在此图表中,可能存在不形成任何循环的边缘。

执行此操作的最佳算法是什么?

以下是您可以查看的另一个示例:

假设e1是首先被拾取的边缘,箭头显示边缘的方向。

1 个答案:

答案 0 :(得分:2)

我没有尝试过这个并且相当贪婪但是应该有效:

  1. 选择一个节点
  2. 去一个邻居的
  3. 继续前进,直到您回到起始节点,但不允许您访问旧节点。
  4. 如果你得到一个循环保存,如果它尚不存在或这些节点的一个子集组成一个循环。如果循环中的节点是另一个循环中节点的子集,则删除较大的循环(或者将其拆分为两个?)
  5. 与新邻居在2点重新开始。
  6. 使用新节点从1开始。
  7. 评论:在3,你当然应该做与第2步相同的事情,所以采取所有可能的路径。

    也许这是一个开始?正如我所说,我没有尝试过,所以没有优化。

    编辑:可以在此处找到算法的一个实现的未记录且未优化的版本:https://gist.github.com/750015。但是,它并没有完全解决问题,因为它只能识别“真正的”子集。