1、引入

很多问题都可转化为图, 利用图算法解决,例如早餐吃薄煎饼的过程,以动作为顶点,以先后次序为有向边,问题是对整个过程而言,如果一个人独自做,所有动作的先后次序?从加料开始?还是从加热烤盘开始?
在这里插入图片描述

2、分析

从工作流程图得到工作次序排列的算法,称为“拓扑排序”,拓扑排序处理一个DAG, 输出顶点的线性
序列,使得两个顶点v,w,如果G中有(v,w)边,在线性
序列中v就出现在w之前。拓扑排序广泛应用在依赖事件的排期上,还可以用在项目管理、 数据库查询优化和矩阵乘法的次序优化上。
拓扑排序可以采用DFS很好地实现:

  • 将工作流程建立为图,工作项是节点,依赖关系是有向边
  • 工作流程图一定是个DAG图,否则有循环依赖
  • 对DAG图调用DFS算法,以得到每个顶点的“结束时间”
  • 按照每个顶点的**“结束时间”从大到小排序**
  • 输出这个次序下的顶点列表

以下为一个例子
在这里插入图片描述
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐