拓扑排序入门

定义

在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。


正文

半年前学的内容了没想到现在还是不会

带环的图中不能进行拓扑排序!!!

大致操作是这样:


0.读入数据

1.找到所有入度\(0\)的点,并放入队列

2.不断取出队列中的点,把所有他连向的点的入度减去一,并且判断是否应该加入队列,直到队列为空


这样操作完成之后,点进入队列的先后顺序即为所求的序列。

注意事项:

1.因为进入队列的都是入度为\(0\)的点,所以一个点不会第二次被拓展进入队列。所以假设存在拓扑序列,一定是每个点都加入了队列一次,如果数据对不上的话就说明这个图中含有环,不能进行拓扑排序。

2.如果在同一时间队列中存在\(2\)个及以上的元素,说明这个图中的拓扑序列不唯一。

3.如果需要拓扑序列字典序最小,就把队列换成优先队列就好了。


posted @ 2020-02-16 17:29  摸鱼酱  阅读(228)  评论(0编辑  收藏  举报