拓扑序列:
当一个有向图无环时,会存在拓扑序列。即将有向图G中的顶点按照线性序列排列,使得G中的任意两个顶点u和v ,使得 for (u,v) in Edges(G), 在线性序列中都满足u出现在v的前面。
求一个DAG的一条拓扑序列很好求,只要按照如下步骤即可:
1. 找到当前所有的无直接前驱的vertex(未曾访问过),若没有这样的顶点,跳到3。若有,从中选一个v,标记为已访问,加入到当前序列的尾部,继续2。
2. 将从v出发的有向边全部删除(这样会得到一个新的有向图G’)。
3. 如果序列中的顶点数不等于有向图G的顶点个数,则说明图G中存在环;如果相等,则该序列即是所求的拓扑序列。
现在要求有向图G的所有拓扑序列。
可采用回溯法。
先看个小例子:
有三个集合A,B,C,每个集合中都有若干个顶点,要求从三个集合中依次