无环有向图的广度优先搜索算法
我在寻找一个优雅的Python程序,用来对一个有向无环图(DAG)进行广度优先搜索(BFS)遍历:
如果节点A“依赖于”节点B,那么我们就说A和B是连接的,表示为A->B
(可以想象成Python包Foo依赖于Bar:Foo->Bar)。
在大约7000个这样的节点中,我想对所有节点进行排序,使得对于所有可能的(i, j)
,其中1>=i<j<=7000
,depends(Ni, Nj)
都为假。也就是说,depends(A, B)
为真,仅当A->B
或者A“依赖于”B时成立,而Nx
是排序列表中第x
个位置的节点。
注意:一个节点可以有多个父节点。例如:A->C
和B->C
。因此,根据上述排序规则,A和B必须在C之前。