教学计划安排检验程序(拓扑排序)报告书.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《教学计划安排检验程序(拓扑排序)报告书.doc》由会员分享,可在线阅读,更多相关《教学计划安排检验程序(拓扑排序)报告书.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计题目:示例数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。课程间两两间的先后关系:v1 v2,v1 v3, v1 v4,v1 v12,v2 v3,v3 v5,v3 v7,v3 v8,v4 v5, v5 v7,v6 v8,v9 v10, v9 v11 , v9 v12,v10 v12,v11 v6输出:第1学期应学的课程:v1 v9第2学期应学的课程:v2 v4 v10 v11第3学期应学的课程:v3 v6 v12第4学期应学的课程:v5 v8第5学期应学的课程:v7一 需求分析1.1
2、 引言通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。离散数学中关于偏序和全序的定义:若集合X上的关系是R,且R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。设R是集合X上的偏序(Partial Order),如果对每个x,y属于X必有xRy 或 yRx,则称R是集合X上的全序关系。比较简单的理解:偏序是指集合中只有部分成员可以比较,全序是指集合中所有的成员之间均可以比较。一般应用:拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能
3、会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。1.2 拓扑排序的了解.问题的描述在AOV网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。拓扑排序可以应用于教学计划的安排,根据课程之间的依赖关系,制定课程安排计划。按照用户输入的课程数,课程间的先后关系数目以及课程间两两间的先后关系,程序执行后会给出符合拓扑排序的课程安排计划. 拓扑排序进行教学计划安排检验理论基础为实现对无权值有向图进行拓扑排序,输出拓扑序列,先
4、考虑如何存储这个有向图。拓扑排序的过程中要求找到入度为0的顶点,所以要采用邻接表来存储有向图,而要得到邻接表,则先要定义有向图的邻接矩阵结构,再把邻接矩阵转化成邻接表。在具体实现拓扑排序的函数中,根据规则,当某个顶点的入度为0(没有前驱顶点)时,就将此顶点输出,同时将该顶点的所有后继顶点的入度减1,为了避免重复检测入度为0的顶点,设立一个栈St,以存放入度为0的顶点。.拓扑排序算法void TopologicalSort(ALGraph G),大体思想为: 1)遍历有向图各顶点的入度,将所有入度为零的顶点入队列; 2)队列非空时,输出一个顶点,并对输出的顶点数计数; 3)该顶点的所有邻接点入度
5、减一,若减一后入度为零则入队列; 4)重复2)、3),直到队列为空,若输出的顶点数与图的顶点数相等则该图可拓扑排序,否则图中有环。1.3 查阅相关资料,完成程序的实现二 总体设计拓扑排序:开始输入学期数,课程数,课程代表值,课程相互关系数,课程两两先后关系学期数=8,课程数=20拓扑排序输出相应课程结束否是开始输入入度,定点数,已输出顶点数已输出定点数入度=0顶点入栈栈非空输出顶点顶点数减1顶点入度减1累加已输出顶点数结束是否否是是三 详细设计3.1 算法设计分析拓扑排序时有向图的一种重要运算。在课表排序中,每门课都有多种关系:、(一)先后关系,即必须在一门课学完后,才能开始学习另一门课;(二
6、)在一类课之间没有次序要求,即两门课可以同时学习,互不影响。将AOV网络中的各个顶点排列成一个线性有序序列,使得所有的要求的前趋、后趋关系都能得到满足。在AOV网络进行拓扑排序的方法:(一) 从中选择一个没有前趋的顶点,并把它输出;(二) 从网络中删去该顶点和从该顶点出发的所有有向边;重复执行上述两步,直到网中所有的顶点都被输出3.2 源代码#include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define STACKINCREMENT 10 #define MAX_VERTEX_NUM 20#de
7、fine STACK_INIT_SIZE 100 typedef int Status;typedef int SElemType;int indegree20=0;typedef struct SElemType *base; SElemType *top; int stacksize;SqStack;typedef struct ArcNodeint adjvex;struct ArcNode *nextarc;ArcNode;typedef struct VNodechar data10;ArcNode *firstarc;VNode,AdjListMAX_VERTEX_NUM;type
8、def structAdjList vertices;int vexnum,arcnum;ALGraph;Status InitStack(SqStack &S)S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType);if(!S.base)return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status Push(SqStack &S,SElemType e) if(S.top-S.base=S.stacksize) S.base=(SElemType
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学计划 安排 检验 程序 拓扑 排序 报告书
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内