">

">


写出题图所示有向图顶点的所有拓扑排序序列。




【正确答案】:

ABCDEF ABCEDF ABDCEF

BACEDF BACDEF BADCEF


【题目解析】:

若在有向图G中,从顶点 Vi到Vj有一条路径,则在拓扑序列中顶点Vi必须排在顶点Vj之前。找一个有向图的一个拓扑序列的过程称为拓扑排序。
下面给出有向图拓扑排序算法的基本步骤:
(1)图中选择一个入度为0的顶点,输出该顶点;
(2)从图中删除该顶点及其相关联的弧,调整被删弧的弧头结点的入度(入度减1);
(3)重复执行(1)、(2)直到所有入度为0的顶点均被输出,拓扑排序完成,或者图中再也没有入度为0的顶点。
本题中,顶点ABCDEF的入度分别为:0,0,2,2,1,3。 故分为先删A和先删B两类情况:
方法一:首先A的入度为0,删除A及其边,调整把被删除边作为入度的结点的入度,即C的入度为1,D的入度为1。再选入度为0的B,删除B及其边,调整C的入度为0,D的入度为0。

(1)先选入度为0的C,删除C及其边,调整E的入度为0,F的入度为2。 此时分两种情况:

1)再选入度为0的D,删除D及其边,调整F的入度为1。 再选入度为0的E,删除E及其边,调整F的入度为0。最后删F。故拓扑排序序列为ABCDEF

2)再选入度为0的E,删除E及其边,调整F的入度为1。 再选入度为0的D,删除D及其边,调整F的入度为0。最后删F。故拓扑排序序列为ABCEDF

(2)先选入度为0的D,删除D及其边,调整F的入度为2。再选入度为0的C,删除C及其边,调整E的入度为0,F的入度为1。再选入度为0的E,删除E及其边,调整F的入度为0。最后删F。故拓扑排序序列为ABDCEF

方法二:首先选B的入度为0,删除B及其边。同理可得到3种序列:

BACEDF。

BACDEF。

BADCEF。


Top