繁体   English   中英

使无向图有向

[英]Make undirected graph directed

我有一个无向的完整图,并希望将其转换为在每个节点之间具有(单向)路径的有向无环图。 首先,我想添加随机边缘,并在连接所有节点后停止。 要看的算法是什么(使用Python,但是任何语言都可以)。

因此,例如,此图不再连接:

A  ---- B            A ---> B
 \     /      =>           /
  \   /                   v
    C                    C

,但在这种情况下,所有未定向的边都变成有向边

A  ---- B            A ---> B
 \     /      =>      ^     ^
  \   /                \   /
    C                    C

更新

请注意,其目的是按照上述约束将无向图转换为有向图。 就像生成树一样,此转换过程有多个解决方案(如上例所示)。

您需要一个定向生成树。

在无向图中找到有向生成树很容易。 只需进行深度优先搜索,即可忽略背面和交叉边缘。 您实际遍历的边缘形成一棵有向树,该树触及每个连接组件中的每个节点。

但是,您添加了希望边缘选择随机的限制。

因此,为此,您可以使用最小生成树算法,例如具有随机边缘权重的Kruskal算法

注意,没有理由实际存储和计算随机边缘权重。 该算法的第一步是按重量排序。 因此,将这种类型替换为边缘的随机排列,您就可以从事业务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM