《图论动画拓扑排序ppt课件.ppt》由会员分享,可在线阅读,更多相关《图论动画拓扑排序ppt课件.ppt(11页珍藏版)》请在三一办公上搜索。
1、15.082 和 6.855J,拓扑排序,2,拓扑排序基础,定理. 如果每个结点至少有一条出弧,那么深度优先搜索的第一条不可进入的弧确定一有向圈. 推论 1. 如果 G 没有有向圈,那么在 G 中存在没有出弧的结点。且在 G 中至少有一结点没有入弧.推论 2. 如果 G 没有有向圈,那么可以重标号结点,以至于对每条弧 (i,j)有i j.,1,4,6,7,3,3,初始化,1,2,4,5,3,6,7,8,1,2,3,4,5,6,7,8,2,2,3,2,1,1,0,2,判定每个结点的入度,LIST是 入度为 0 的结点的集合.,“Next” 将是在拓次序的结点的标号.,结点,入度,4,从LIST选
2、择一结点,next,0,1,2,3,4,5,7,8,2,2,3,2,1,0,2,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,2,4,5,3,6,7,8,7,0,1,5,6,1,结点,入度,5,从LIST选择一结点,next,0,1,2,3,5,7,8,2,2,3,1,1,0,2,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,2,4,5,3,6,7,8,7,0,5,5,2,1,6,0,4,2,1,0,2,4,
3、6,结点,入度,6,从LIST选择一结点,next,0,1,2,3,5,7,8,2,2,3,1,1,0,2,结点,入度,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,2,4,5,3,6,7,8,7,0,5,5,2,1,6,0,4,2,1,0,2,4,6,6,3,0,1,2,3,7,从LIST选择一结点,next,0,2,3,5,7,8,2,2,3,1,1,0,2,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,
4、2,4,5,3,6,7,8,7,0,5,5,2,1,6,0,4,2,1,0,2,4,6,6,3,0,2,2,1,1,4,0,1,3,4,结点,入度,8,从LIST选择一结点,next,0,2,3,5,7,8,2,2,3,1,1,0,2,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,2,4,5,3,6,7,8,7,0,5,5,2,1,6,0,4,2,1,0,2,4,6,6,3,0,2,2,1,1,4,0,1,3,4,1,5,5,2,1,结点,入度,9,从LIST选择一结点,next,0,2,5,7,8,
5、2,2,3,1,1,0,2,结点,入度,从 LIST选择一结点,并删除它.,7,next := next +1order(i) := next;更新入度更新LIST,1,1,1,2,4,5,3,6,7,8,7,0,5,5,2,1,6,0,4,2,1,0,2,4,6,6,3,0,2,2,1,1,4,0,1,3,4,1,5,5,1,4,3,2,6,0,1,6,8,10,Select a node from LIST,next,0,2,5,7,8,2,2,3,1,1,0,2,从 LIST选择一结点,并删除它.,next := next +1order(i) := next;更新入度更新 LIST,1
6、,1,1,2,4,5,3,6,7,8,7,0,5,2,1,6,0,4,2,1,0,2,6,3,0,2,1,1,4,0,3,4,1,5,5,1,4,3,2,6,0,1,6,8,7,7,0,8,3,结点,入度,11,从LIST选择一结点,next,0,2,5,7,8,2,2,3,1,1,0,2,结点,入度,从 LIST选择一结点,并删除它.,next := next +1order(i) := next;更新入度更新 LIST,1,1,1,2,4,5,3,6,7,8,7,0,5,2,1,6,0,4,2,1,0,2,6,3,0,2,1,1,4,0,3,4,1,5,5,1,4,3,2,6,0,1,6,8,7,7,0,3,8,8,List 空了.算法结束得到拓扑顺序的结点。,3,