定义
对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。
拓扑排序思想
在一个有向图中找一个拓扑序列的过程称为拓扑排序
-
从有向图中找一个没有前驱,即入度为0的顶点,输出这个顶点的编号。
-
从图中删去这个顶点,并且删除从该顶点出发的所有有向边。
-
重复上面两个过程,直到剩余的图中不存在没有前驱的顶点。
示例
已知有向图G=(V,E)其中V={V1,V2,V3,V4,V5,V6,V7}
E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V2,V6>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},
则G的拓扑序列是:(BC)
A、V1, V4,V2,V6, V3,V5,V7
B、V1,V2,V3,V4, V5,V6,V7
C、V1,V3, V4,V2,V6,V5,V7
D、V1,V3,V4, V6,V2, V5,V7
计算入度 :
V1=0,V2=1,V3=1,V4=1,V5=2,V6=3,V7=2
找到入度为0,即V1删除
V1出来后:
V2=0,V3=0,V4=0,V5=1,V6=2,V7=2
不断选取入度为0的节点,然后将其后继节点的入度减一,依次计算。