如何删除未加权有向图中的循环,以使边数最大化?

时间:2011-06-08 19:58:16

标签: algorithm graph graph-theory directed-graph cyclic

设G是包含周期的未加权有向图。我正在寻找一种算法,它可以找到/创建所有非循环图G',它由G中的所有顶点和G的边缘子集组成,只要小到足以使G'非循环。

更正式:所需算法使用G并创建一组非循环图S,其中S中的每个图G'满足以下属性:

  1. G'包含G的所有顶点。
  2. G'包含G的边缘子集,因此G'是非循环的。
  3. G'的边数最大化。这意味着:没有G''令人满意的属性1和2,这样G''包含更多的边,然后G'和G''是非循环的。
  4. 背景:原始图G模拟元素之间的成对排序。由于图中的循环,这不能被用作对所有元素的排序。因此,最大非循环图G'应该模拟这种排序的最佳可能近似,试图尽可能多地考虑成对排序关系。

    在一种天真的方法中,人们可以去除所有可能的边缘组合,并在每次移除后检查是否有空隙。在这种情况下,存在一个强烈分支的变异树,意味着时间和空间的复杂性。

    注意:问题可能与生成树有关,您可以将G'图定义为一种定向生成树。但请记住,在我的场景中,G'中的一对边可能具有相同的起始或相同的结束顶点。这与literature中使用的定向生成树的某些定义冲突。

    编辑:添加了与生成树相关的直观描述,背景信息和注释。

3 个答案:

答案 0 :(得分:10)

此问题称为Feedback Arc Set。由于它是NP难的,因此您不太可能找到可扩展的快速算法。但是,如果您的实例很小,那么B. Schwikowski和E. Speckenmeyer撰写的文章“在枚举所有反馈问题的最小解决方案”中的算法可能会有效。

答案 1 :(得分:1)

答案 2 :(得分:0)

如果您的目标是在尽可能保留图层次结构(结构)的同时删除周期边(中断周期),这项工作可能会有所帮助:https://github.com/zhenv5/breaking_cycles_in_noisy_hierarchies