试验五实验题目:建筑工程拓扑排序问题建造一座办公楼,需要进行选择设计单位、楼房总体设计等活动(参见下表)。选择地点需要在建造地基之前完成,打地基必须在建造楼房、楼房封顶和内部装修之前完成。
如下表所示,是一系列活动之间的关系。
活动代号
活动名称
先需活动
A0
选择设计单位
无
A1
楼房总体设计
A0,A3,A4
A2
选择施工企业
A1
A3
选择建造地点
无
A4
资金筹措
无
A5
购买建筑材料
A2,A4
A6
建造地基
A5
A7
建造楼房
A6
A8
房屋封顶
A7
A9
购买装修材料
A4
A10
外部装修
A8,A9
A11
内部装修
A10
A12
工程验收
A10,A11
下图是建造一座办公楼的AOV网示意图。
设计算法判断该工程是否有回落,如无给出该工程AOV网的拓扑排序。
试验要求:
设计邻接表作为存储结构,可用队列或者栈作为拓扑排序辅助存储结构。
设计创建图算法,拓扑排序算法,算法要有较好的性能。
创建存储上图中建造工程AOV网信息,并实现该图的拓扑排序,设计驱动程序、其他测试用例,并得出正确结果。
试验目的:
掌握图的存储结构及其基本操作,学会定义图的邻接表存储结构,并能在实际问题中灵活运用。
掌握拓扑排序算法。
通过本试验的具体应用实例,灵活运用拓扑排序并进一步巩固队列/栈的运用。
提示:
在一个有向图中进行拓扑排序要进行如下步骤:
在一个有向图中选择一个没有入度的顶点,将其输出。
在图中删除该顶点和所有以它为出边的弧。
重复步骤1和2,知道全部顶点都被输出,或者当前图中存在环。