Algorithm 如何将无向图转换为无圈有向图(有向无环图)

Algorithm 如何将无向图转换为无圈有向图(有向无环图),algorithm,graph,language-agnostic,graph-algorithm,Algorithm,Graph,Language Agnostic,Graph Algorithm,我有一个无向图,我想把它转换成有向图。我会有一些限制,例如已经有一些定向关系。您实际上是在尝试从基础结构图构建一个。请注意,有向图是DAG的当且仅当它可以是DAG时 那么,让我们从头开始。首先创建拓扑排序,然后以符合排序的方式连接节点 首先,删除所有“未确定”的边,只保留那些已经有方向的边 然后,对图进行拓扑排序,并找到一些拓扑排序(如果没有,则在给定的限制条件下问题无法解决) 在此基础上,自上而下设置每条边的方向,使源节点为拓扑排序较低的节点 该算法的时间复杂度在节点和边的数量上是线性的。

我有一个无向图,我想把它转换成有向图。我会有一些限制,例如已经有一些定向关系。

您实际上是在尝试从基础结构图构建一个。请注意,有向图是DAG的当且仅当它可以是DAG时

那么,让我们从头开始。首先创建拓扑排序,然后以符合排序的方式连接节点

  • 首先,删除所有“未确定”的边,只保留那些已经有方向的边
  • 然后,对图进行拓扑排序,并找到一些拓扑排序(如果没有,则在给定的限制条件下问题无法解决)
  • 在此基础上,自上而下设置每条边的方向,使源节点为拓扑排序较低的节点

该算法的时间复杂度在节点和边的数量上是线性的。

实际上,您正试图从基础结构图构建一个新的算法。请注意,有向图是DAG的当且仅当它可以是DAG时

那么,让我们从头开始。首先创建拓扑排序,然后以符合排序的方式连接节点

  • 首先,删除所有“未确定”的边,只保留那些已经有方向的边
  • 然后,对图进行拓扑排序,并找到一些拓扑排序(如果没有,则在给定的限制条件下问题无法解决)
  • 在此基础上,自上而下设置每条边的方向,使源节点为拓扑排序较低的节点
算法的时间复杂度与节点数和边数成线性关系