- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南邮通达毕设任务书4_顾松敏
南京邮电大学通达学院
毕业设计(论文)任务书
题 目:基于进度的最优并行工程调度策略的设计与实现
专 业 计算机科学与技术
学 生 姓 名 顾松敏
班 级 学 号
指导教师(签字)
指导教师职称 副教授
指 导 单 位 计算机学院
负 责 人 签 字
学院领导签字
日 期 2014年11月30日
题 目 基于进度的最优并行工程调度策略的设计与实现 课题类型 理论研究■ 工程设计□ 产品开发□ 实验研究□ 课题类别 软件 ■ 硬件□
软硬结合□ 其他□ 设计内容与技术要求
、
成
果形式 并行性全拓扑排序算法设计 2.1 有向图 G的存储 采用邻接表方式存储图,存储结构定义如下: typedef struct arcnode{
int adjvex; / /邻接点域,指示与顶点 V i邻接的点在图中的位置
struct arcnode*nextarc; / /链域,指示下一条弧的结点
}arcnode; / /邻结表结点的定义
typedef struct{
vertextype data; / /数据域图 2 图 G的邻接表存储
int indegree; / /结点入度
arcnode
*firstarc; / /链域,指向链表中第一个结点
}vnode, adjlist[max_vertex_num]; / /头结点的定义
typedef struct{
adjlist vertices;
int vexnum, arcnum;
}algraph; / /有向图的定义有向图 G的初始状态邻接表表示为图 2所示。 2.2 拓扑排序过程分析 设有一个栈 S,用来存储入度为 0的结点序号,并且 用一棵树 T来记录拓扑排序,此树简称拓扑树。树的结点定义如下:
typedef struct csnode{
int data;
intweight; / / 作标记位,记录结点被访问的情况
struct csnode *parent , *firstchild, *nextsibling;
}csnode, *toptree;
排序过程中栈 S及树 T中的变化情况:
第一步:对入度为 0的结点 V1在邻接表中的位序 0入栈S,然后依次从栈中取出结点放到树 T上,并同时将 v1及与 v1相邻结点的入度都减一(每一步将栈中元素放到树上的规则是:由于同一步中的入度为 0的结点的地位是相等,所以,取出栈中的第一个元素作为上一步某一结点的左孩子,然后再取的元素都依 次作为上一结点的右孩子。在图中随便删除哪一个都可以,所以树上任一结点与其右孩子的地位等同。 借此特性,当一趟拓扑排序排完后我们可以返回到一个没被访问的右孩子继续寻找另一个拓扑排序。以 117 第 5期 李俐玲等:基于树的 AOV网并行性全拓扑排序算法设计与实现下结点的生成都是按此方法进行),图 3(a)示。
第二步:对入度为 0的结点 v2, v3在邻接表中的位序 1, 2入栈 S,然后从栈中取出结点放到树 T上。并 将 v2及与 v2相邻的结点 v4的入度都减一,图 3(b)示。 第三步:对入度为 0的结点 v3在邻接表中的位序 2入栈 S,然后从栈中取出结点放到树 T上。并将 v3 及与 v3相邻的结点 v4的入度都减一,图 3(c)示。 第四步:对入度为 0的结点 v4在邻接表中的位序 3入栈 S,然后从栈中取出结点放到树 T上。并将 v4 入度减一,图 3(d)示。到此为止,一趟拓扑排序 0 1 2 3(对应到有向图为 v1 v2 v3 v4)已经排出。 第五步:沿着原来的路径返回直到遇到一个存在没被访问的右孩子的结点,转向该结点的右孩子,继 续寻找第二个拓扑排序。即沿着 3, 2, 1返回,遇到 1有没被访问的右兄弟 2。指针指向 2,再按前面的一, 二,三步进行操作。最终树的状态,图 3(e)示。 该树上的任一结点与其右孩子结点的关系是平行的,所以可以从该树上读取两个拓扑排序,分别是: 0 1 2 3, 0 2 1 3。对应到有向图后读出的拓扑排序则为 v1 v2 v3 v4和 v1 v3 v2 v4。
图 3 拓扑排序过程示意图
由于当有向图很大时,要建这样的一个拓扑树需要很多空间,为了节省空间,我们可以对拓扑树边建 边用边删除。由此建立一个数组 cd[],用于在建树的过程中边建树边读取拓扑
文档评论(0)