数据结构

152 阅读1分钟

递归:要特别注意减少重复计算,例如相同的子问题,相同的调用;否则极易出现指数复杂度。

拓扑排序:拓扑排序是事先给定一个有向无环图,(这里可以看作是依赖关系,例如下图的)可用来解决复杂依赖问题:生成有向无环图(DAG)。最典型的像 Makefile 里面管理 target 之间依赖的,比如生成 A 依赖 B, C, 生成 C 依赖 B, D。这时候就要先用 B, D 生成 C,再用 B, C 生成 A。这种依赖关系一旦复杂,就不可能靠人工指定线性顺序了,而要靠拓扑排序自动生成 DAG。还有像 Spark 里面就用到了。有了 DAG,还可以决定任务之间什么时候可以并行(make 中的 -j 参数)

在这里插入图片描述