Android 启动优化(一) - 有向无环图,flutter瀑布流效果

本文介绍了有向无环图(DAG)的概念及其在Android启动优化中的应用。通过拓扑排序解决任务间的依赖关系,文章详细阐述了入度表法和DFS算法的思想,并通过实例解析了这两种算法的实现过程。同时,讨论了两种算法的时间复杂度。
摘要由CSDN通过智能技术生成

有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环。常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度。

顶点:图中的一个点,比如顶点 1,顶点 2。

:连接两个顶点的线段叫做边,edge。

入度:代表当前有多少边指向它。

在上图中,顶掉 1 的入度是 0,因为没有任何边指向它。顶掉 2 的入度是 1, 因为 顶掉 1 指向 顶掉 2. 同理可得出 5 的入度是 2,因为顶掉 4 和顶点 3 指向它

拓扑排序:拓扑排序是对一个有向图构造拓扑序列的过程。它具有如下特点。

  • 每个顶点出现且只出现一次。

  • 若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面

由于有这个特点,因此常常用有向无环图的数据结构用来解决依赖关系。

上图中,拓扑排序之后,任务2肯定排在任务1之后,因为任务2依赖 任务1, 任务3肯定在任务2之后,因为任务3依赖任务2。

拓扑排序一般有两种算法,第一种是入度表法,第二种是 DFS 方法。下面,让我们一起来看一下怎么实现它。

入度表法


入度表法是根据顶点的入度来判断是否有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值