0%

知识补全:

十字链表

每个结点
不仅有它作为源点的链表
还有它作为目标点的链表
这不是两个链表,是通过交错链接达成的

最小生成树

连通所有点的树,要求树所有边的权值之和最小
以下两个算法都是紧紧抓住“最小”和“连通”,一个是已知连通找最小,一个是已知最小找连通

Prim算法:用于稠密图

树每次选择一个边来进行扩展,选择哪一个呢?当然是一头树内,一头树外的边中最短的哪一个

Kruskal算法:用于稀疏图

直接把边排个序,找出最小的n-1条边就是了。当然其中有跳过的(比如有12 23了,13虽然小也不要它)

单源最短路径

求A点到所有点的最小值

Dijkstra:每次拉一个点O(已知的距离A最近的点)进来点集S,看看如果从O那里经过能不能近一点(AO+OX<AX,X不在S内)
S里的点可以确定

Floyd:每次看一个点,看这个点能拉近哪些路径的距离

拓扑排序:每次删除没有前驱的顶点
逆拓扑排序:每次删除没有后继的顶点

最早开始时间:S到A的距离最长时
最晚开始时间:A到E的距离最短时
关键路径:最大路径
关键活动:关键路径上的点,满足最早开始时间=最晚开始时间

看到这里的姐妹一看就要暴富暴美,为什么不让这一天提前一点呢ヾ(≧▽≦*)o