【发布时间】:2009-07-21 06:03:17
【问题描述】:
我正在寻找一个优雅的 Python 程序,它对 DAG 进行 BFS 遍历:
如果 A“依赖于”B,则节点 A 连接到 B (A->B)(想想 python 包 Foo “依赖于”Bar: Foo->Bar)。
在大约 7000 个这样的节点的图中,我想对所有节点进行排序,以便对于所有可能的 (i, j) 其中 1>=i<j<=7000 .. depends(Ni, Nj) 为 False。 depends(A, B) = True 当且仅当 A->B 或 A“依赖于”B .. 并且 Nx 是出现在排序列表中 xth 位置的节点。
注意:一个节点可以有多个父节点。例如:A->C 和 B->C。因此,根据上述排序规则,A和B必须在C之前。
【问题讨论】:
-
介意清理最后一段吗?
-
@LFSR - 我曾尝试考虑我知道的 BFS 树遍历,但它不适用于图/森林......其中一个节点可以有多个父节点。
-
我相信他想要拓扑排序。
-
@niteria - 哇,就是这样......我怎么会忘记拓扑排序(尽管在学校学习算法并参加了 ACM ICPC 区域赛)。猜猜,我老了..
-
@pianoman:我编辑了一下。这对你来说清楚了吗?
标签: python algorithm graph dependencies traversal