How to remove cycles in an unweighted directed graph, such that the number of edges is maximised?
设g为包含圈的无权重有向图。我正在寻找一种算法,它可以找到/创建所有的非循环图G’,它由G中的所有顶点和G的一个子集组成,小到足以使G‘非循环’。
更正式:所需的算法使用g并创建一组非循环图s,其中s中的每个图g'满足以下属性:
背景:原始的图G模拟了元素之间的成对排序。由于图中存在循环,因此不能将其作为所有元素的顺序加以利用。因此,最大非循环图G'应该为这种排序建立一个最佳的可能近似,试图尽可能地尊重成对排序关系。
在幼稚的方法中,可以删除所有可能的边缘组合,并在每次删除后检查是否无循环。在这种情况下,有一个强分支树的变化意味着坏的时间和空间复杂性。
注意:问题可能与生成树有关,您可以将g'图定义为一种有向生成树。但请记住,在我的场景中,G'中的一对边可能具有相同的起点或终点。这与文献中关于定向生成树的一些定义相冲突。
编辑:增加了与生成树相关的直观描述、背景信息和注释。
这个问题叫做反馈弧集。因为它是NP硬的,所以您不太可能找到一个可伸缩的快速算法。但是,如果您的实例很小,那么诸如B.Schwikowski和E.Speckenmeyer的论文"关于枚举反馈问题的所有最小解"中的算法可能会起作用。
这可能有帮助:一种在有向图中枚举所有有向生成树的算法。
如果您的目标是在尽可能保留图形层次结构(结构)的同时删除循环边(破坏循环),这项工作可能会有所帮助:https://github.com/zhenv5/breaking_cycles_in_noise_hierarchies