7.5有向无环图和应用.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.5有向无环图和应用

7.5 有向无环图及应用 ;7.5.1 拓扑排序;课程代号 课程名 先修课程 C1 高等数学 C2 程序设计基础 C3 离散数学 C1, C2 C4 数据结构 C3, C2 C5 高级语言程序设计 C2 C6 编译方法 C5, C4 C7 操作系统 C4, C9 C8 普通物理 C1 C9 计算机原理 C8 ;可以用有向图表示一个工程。在这种有向图中,用顶点表示活动。有向边Vi, Vj表示:Vi 必须先于活动Vj 进行。这种有向图叫做顶点表示活动的AOV网络(Activity On Vertices)。 在AOV网络中,如果活动Vi 必须在活动Vj 之前进行,则存在有向边Vi, Vj, AOV网络中不能出现有向回路,即有向环。在AOV网络中如果出现了有向环,则意味着某项活动应以自己作为先决条件。 因此,对给定的AOV网络,必须先判断它是否存在有向环。;一、什么是拓扑排序 将各个顶点 (代表各个活动)排列成一个线性有序的 序列,使得AOV网络中所有应存在的前驱和后继关系都 能得到满足。 这种构造AOV网络全部顶点的拓扑有序序列的运算 就叫做拓扑排序。 例如,对学生选课工程图进行拓扑排序,得到的拓 扑有序序列为 C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9, C7 或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6; 例如,对学生选课工程图进行拓扑排序,得到的拓 扑有序序列为 C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9 , C7 或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6 ;二、进行拓扑排序的方法;;;;typedef struct arcnode{ int adjvex; arcnode* nextarc; } * pointer; // 表结点 struct node{ char vexdata; int id ; //顶点的入度 pointer firstarc; } dig[100]; // 一组头结点 ;在邻接表的头结点中增设了一个数据项id,记录该顶点的入度。 入度为零的顶点即无前驱的顶点。 在拓扑排序算法中,使用一个存放入度为零的顶点的链式栈,供选择和输出无前驱的顶点。只要出现入度为零的顶点,就将它加入栈中。;五、拓扑排序算法思想: (1) 建立入度为零的顶点栈; (2) 当入度为零的顶点栈不空时, 重复执行: (2)-1 从顶点栈中退出一个顶点, 并输出之; (2)-2 从AOV网络中删去这个顶点和它发出的 边, 边的终顶点入度减一; (2)-3 如果边的终顶点入度减至0, 则该顶点进 入度为零的顶点栈; (3) 如果输出顶点个数少于AOV网络的顶点个 数, 则报告网络中存在有向环。;将顶点 i进栈时,执行以下指针的修改: dig[i].id = top; top = i; // top指向新栈顶i, 原栈顶元素放在id[i]中 退栈操作可以写成: j = top; top = dig[top].id; //位于栈顶的顶点的位置记于 j, top退到次栈顶;六、

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档