假设G是一个包含环的无权有向图。我正在寻找一种算法,它可以找到/创建所有无环图G',由G中的所有顶点和G的子集组成,使G'足够小以使其成为无环图。
更正式地说:所需算法使用G并创建一组无环图S,其中每个图G'都满足以下属性:
- G'包含G的所有顶点。
- G'包含G的边缘子集,使得G'是无环图。
- 最大化G'的边数。这意味着:不存在满足属性1和2的G'',使得G''包含的边比G'多且G''是无环图。
背景:原始图G模拟元素之间的成对排序。由于图中存在循环,因此无法将其用作所有元素的排序。因此,最大无环图G'应该尽可能好地近似表示此排序,尝试尊重尽可能多的成对排序关系。
在一种朴素的方法中,可以删除所有可能的边缘组合,并在每次删除后检查无环性。在这种情况下,会产生强分支变体树,这意味着时间和空间复杂度不佳。
注意:该问题可能与生成树有关,并且您可以将G'图定义为一种有向生成树。但请记住,在我的情况下,G'中的一对边缘可能具有相同的起始或相同的结束顶点。这与literature中使用的某些有向生成树的定义相冲突。
编辑:添加了直观的描述、背景信息和与生成树相关的注释。