- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AOV拓扑排序
1.AOV网的定义——Activity On Vertex Network i.用顶点表示活动,用弧表示活动间 的优先关系的有向图, 称为顶点表 示活动的网。 ii.AOV 网中不能有回路 2.拓扑排序: i.假设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列 vl,v2,…,vn称做一个拓扑序列(Topological Order), 当且仅当该顶点序列满足下列条件:若在有向图G中存在从顶点vi到vj的一条路径,则在顶点序列中顶点vi必须排在顶点vj之前。通常,在AOV网中,将所有活动排列成一个拓扑序列的过程叫做拓扑排序(Topological Sort)。 由于AOV网中有些活动之间没有次序要求,它们在拓扑序列的位置可以是任意的,因此拓扑排序的结果不唯一。 对图7-21进行拓扑排序,可得一个拓扑序列: C1,C2,C3,C4,C5,C8,C9,C7,C6 也可得到另一个拓扑序列: C1,C2,C3,C8,C4,C5,C9,C7,C6 还可以得到其它的拓扑序列。学生按照任何一个拓扑序列都可以完成所要求的全部课程学习。 在AOV网中不应该出现有向环。因为环的存在意味着某项活动将以自己为先决条件,显然无法形成拓扑序列。 判定网中是否存在环的方法:对有向图构造其顶点的拓扑有序序列,若网中所有顶点都出现在它的拓扑有序序列中,则该AOV网中一定不存在环。 * * 拓扑排序算法 前者说明AOV网中无回路, 后者说明AOV网中存在回路。 1. 从AOV网中任选择一个没有前驱(即入度为0)的顶点; 2. 从AOV网中删除该顶点以及以该顶点为始点的所有边; 3. 重复上述过程,直到网中的所有顶点都被删除,或者 网中还有顶点,但不存在入度为0 的顶点。 * * * * 为了实现拓扑排序的算法,对于给定的有向图,采用邻接表作为存储结构,为每个顶点设立一个链表,每个链表有一个表头结点,这些表头结点构成一个数组,表头结点中增加一个存放顶点入度的域count。即将邻接表定义中的VNode类型修改如下: typedef struct //表头结点类型 { Vertex data; //顶点信息 int indegree; //存放顶点入度 ArcNode *firstarc; //指向第一条弧 } VNode; 入度为0的顶点即为没有前驱的顶点,删除以该顶点为尾的弧,可用以对应弧的弧头顶点的入度减1来实现。 为了避免重复检测入度为0的顶点,可设一栈暂存所有入度为0的顶点。 void topsort(VNode adj[],int n) { int i,j; int stack[MAXV],top=0; //栈stack的指针为top ArcNode *p; for(i=0;in;i++) if(adj[i].count==0) //建入度为0的顶点栈 { top++; stack[top]=i; } while(top0) //栈不为空 { i=stack[top]; top--; //顶点vi出栈 printf(“%d”,i); //输出vi p=adj[i].firstarc; //指向以vi为弧尾的第一条弧 while(p!=NULL) { j=p-adjvex; //以vi为弧尾的弧的另一顶点vj * * while(p!=NULL) { j=p-adjvex; //以vi为弧尾的弧的另一顶点vj adj[j].count--; //顶点vj的入度减1 if(adj[j].count==0) //入度为0的相邻顶点入栈 { top++; stack[top]=j; } p=p-nextarc; //指向以vi为弧尾的下一条弧 } } } * * 拓扑排序的过程 1.下面(
您可能关注的文档
- (五笔快学)98五笔卡片.doc
- (二下)26.蜜蜂引路.ppt
- (人教版)七年级下册数学相交线课件4.ppt
- (二上)6.表内乘法(二)(4.9的乘法口诀).ppt
- (二上)4.表内乘法(一)(3.乘加乘减).ppt
- (广东卷)2013年普通高等学校招生全国统一考试.doc
- (水寨) 对“霁虹桥与摩崖石刻”保护修复的思考2.doc
- (特别报道)华山上的摩崖石刻.doc
- (用)除数是两位数的除法复习.ppt
- (新)建立标准化代维班组规范.doc
- 《算力中心选址优化方案:2025年能源成本与网络延迟评估报告》.docx
- 2025年宠物智能用品物联网平台数据智能客服报告.docx
- 2025年低空医疗救援无人机事故案例分析报告.docx
- 2025-2026学年初中体育与健康八年级全一册(2024)华东师大版(2024)教学设计合集.docx
- 商业化产品经理面试模拟题及参考答案.docx
- 2025年智慧交通无人配送车路协同政策分析报告.docx
- 改善医患关系路径.pptx
- 光伏电站土地利用2025创新方案报告:技术创新与生态保护的双赢未来.docx
- 2025年低空医疗救援物资无人机自动化装载方案报告.docx
- 《农产品冷链物流行业2025:生鲜电商配送损耗控制技术应用潜力》.docx
原创力文档


文档评论(0)