数据结构-图-拓扑排序

github地址:https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84_%E5%9B%BE_%E6%8B%93%E6%89%91%E6%8E%92%E5%BA%8F.md

图_拓扑排序

一个不存在回路的AOV网,可以将其应用在各种各样工程项目的流程图中。例如:让你实现一个画流程图的软件,那你在内存中怎么组织流程图呢??

也就是保证工程项目能够顺利进行

AOV网

在一个表示工程的有向图中,定点表示活动,弧表示活动之间的优先关系

拓扑排序

其实就是对一个有向图(包含AOV)构造拓扑序列的过程

数据结构-图-拓扑排序_第1张图片

算法原理

数据结构-图-拓扑排序_第2张图片
数据结构-图-拓扑排序_第3张图片

数据结构中in表示该定点的入度,因为是AOV网,因此从入度为0的点开始

  1. 找到所有入度为0的顶点(p点),入栈
  2. 读栈,从图中删除p点,然后把与p相连的弧尾顶点in值减1,判断这些顶点有无入度(in的值)为0者,有则入栈
  3. 读栈取出一个新的顶点,急需执行步骤2,直到全部顶点操作完毕

例如:下面的图第一次就是找到三个顶点入度为0,全部入栈

数据结构-图-拓扑排序_第4张图片

你可能感兴趣的:(数据结构-图-拓扑排序)