📜  为边分配方向,使有向图保持无环

📅  最后修改于: 2022-05-13 01:57:53.909000             🧑  作者: Mango

为边分配方向,使有向图保持无环

给定一个同时具有有向边和无向边的图。假设有向边不形成循环。如何将方向分配给无向边,以使图(具有所有有向边)即使在分配后仍保持无环?

例如,在下图中,蓝色边缘没有方向。

第一的

我们强烈建议您最小化您的浏览器并首先自己尝试。

这个想法是使用拓扑排序。以下是算法中使用的两个步骤。

1)只考虑有向边的子图,并找到子图的拓扑排序。在上面的例子中,拓扑排序是 {0, 5, 1, 2, 3, 4}。下图显示了上述示例图的拓扑排序。
第二

2)使用上述拓扑排序为无向边分配方向。对于每条无向边 (u, v),如果在拓扑排序中 u 在 v 之前,则将其指定为从 u 到 v 的方向,否则将其指定为从 v 到 u 的方向。
下图显示了示例图中的指定方向。
第三

资料来源:http://courses.csail.mit.edu/6.006/oldquizzes/solutions/q2-f2009-sol.pdf