您的位置:首页 > 其它

拓扑排序

2013-06-24 16:08 106 查看
拓扑排序是对有向无环图的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环,则无法表示两个顶点的先后顺序。

在现实生活中,也会有不少应用例子,比如学校课程布置图,要先修完一些基础课,才可以继续修专业课。

一个简单的求拓扑排序的算法:首先要找到任意入度为0的一个顶点,删除它及所有相邻的边,再找入度为0的顶点,以此类推,直到删除所有顶点。顶点的删除顺序即为拓扑排序。

很容易得到拓扑排序的伪代码:

void TopSort(Graph g)

{

for (int i=0; i<vertexnum; i++)

{

vertex v = FindZeroIndegree(g);

if (v is not vertex)

cout <<"the graph has cycle"<<endl;

cout << v ;

foreach vertex w adjacent to v

w.indegree--;

}

}

地址:http://blog.csdn.net/midgard/article/details/4101025
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: