【笔记】
对一个有向无回图DAG进行拓扑排序,结果为所有顶点的一个线性序列,满足如果G包含边(u,v)则在该序列中,u就出现在v的前面。
一个有向图G是无回路的,当且仅当对G进行深度优先搜索时没有得到反向边。
对图进行dfs,对结束的顶点时,将其插入列表的头。
则列表就是拓扑序。
【练习】
22.4-1 说明拓扑后顶点顺序。
略
22.4-2 给出一个线性时间的算法,其输入为一个有向无回图G和两个顶点s和t,返回G中从s到t的通路数目。
DP吧,f[u]表示从s到u的通路数目,f[v]+=f[u]若有一条边从u到v。一边拓扑一边求解。
22.4-3 确定一个给定的无向图G中是否包含一个回路。运行时间O(V),独立于|E|。
是否能成功拓扑排序
22.4-4 证明或反证:如果一个有向图G包含回路,则拓扑产生的顶点排序序列,他可以最小化坏边的数目,即与所生成的顶点序列不一致的边。
22.4-5 如何实现找入度为0的顶点并输出来拓扑的方法。
略