当前位置: 首页 > 知识库问答 >
问题:

从给定“根”的无向无环图创建有向无环图

柳晔
2023-03-14

考虑以下无向非循环图:

如果我们定义“根”为A和E,有没有算法可以确定产生的有向无环图?:

我考虑过从根开始尝试某种DFS或BFS,但我不确定如何处理“等待”的需要,以查看另一个根是否可能到达给定的节点。

共有1个答案

呼延鸿畅
2023-03-14

我假设你们要找的是边的方向,这样

    < li >整个图形是一个DAG,并且 < Li > DAG的源节点就是您指定的节点。

现在,让我们忽略第二个约束。使整个图形成为DAG的一种简单方法是分配一个排序1 ...n 到节点,然后让边始终指向从较低节点到较高节点。因此,问题是如何以一种为您提供第二个属性的方式分配数字。

我相信你可以通过在图上运行BFS,用你的所有k个根节点播种队列来做到这一点。如果您按照节点被发现的顺序对其进行编号,那么您将得到一个DAG(节点的任何顺序都会得到一个DAG)。此外,假设没有两个根是彼此相邻的,并且在图的每个连通分量中至少有一个根,那么你的根将是唯一的根。

为了了解这一点,假设没有一个根是相邻的,并且图是连通的,那么为了矛盾起见,假设另一个节点是根。取编号最低的节点,而不是您选择的也是根的节点之一。因为节点被分配了一个编号,所以它一定是在BFS中发现的,因此它与BFS中也发现的其他编号较低的节点相邻。但是,编号较低的节点的边将有一个箭头指向编号较高的节点,因此它不是根。

(如果有两个相邻的节点要成为根,则无法实现这一点,因为其中一个节点将有一个箭头指向另一个节点。)

总的来说,这在时间O(m n)上运行,因为它只是图上的一个BFS。

 类似资料:
  • 我在NetworkX中有一个有向无环简单图。 现在,对于每个边,该边都有一个“源”和一个“目标”。如果除了这个边之外,还有一条从“源”到“目标”的路径,那么我想删除这个边。 null > 节点为: 边缘是:

  • 在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。 一、简介 有向无环图是图论的重要概念,我们将首先介绍图的概念和定义,随后介绍有向图,再逐渐引至有向无环图(DAG)。值得一提的是,当DAG用于指代模型时一般指向贝叶斯网络。 一个图G

  • 问题内容: 我需要一个像这样的树/有向无环图实现: 没有任何种类的排序。 该仅仅是围绕重点和可能的值(节点不必具有值集)的包装。 我需要链接到父母和孩子。 标准API或Commons等中有什么可以帮到我吗? 我不介意自己写它(我当然 也不 想问你们),我只是不想重新发明轮子。 问题答案: 似乎没有任何东西。上周,我问了一个类似的问题,并最终实现了自己的树。我的实现与您所建议的非常相似: 您将必须添

  • 如何将有向无环图转换为哈希值,以便任何两个同构图哈希到相同的值?两个同构图哈希到不同的值是可以接受的,但不可取的,这就是我在下面的代码中所做的。我们可以假设图中的顶点数最多为11个。 我对Python代码特别感兴趣。 这是我所做的。如果 是从节点到后代(不是子节点!)的映射,那么我根据修改后的拓扑排序重新标记节点(如果可以的话,它更喜欢先对具有更多后代的元素进行排序)。然后,我对排序的字典进行哈希

  • 一、定义 边有向,无环。 英文名叫 Directed Acyclic Graph,缩写是 DAG。一个无环的有向图称做有向无环图。 在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。 使用有向无环图解题时,要先判断是否是有向无环题。如

  • 输入: 生成的树: 输出: 规则: < li >输入代码总是会产生一个有向无环图 < li >每个节点都有一些wait_time值 < li >完整的图形遍历应该计算整个图形的总等待时间 < li >必须并行遍历所有独立节点(或者至少时间计算应该是这样) < li >如果两个不同节点的wait_time发生重叠,则将考虑最大值,遍历时间较短的节点将移动到下一个独立节点 < li >除了根和叶(可以