一、生成树:
二、最小生成树(最小代价树)
以下图中的修路问题为例:
最小生成树的概念:
在此基础上注意以下两点:
(1)
(2)
三、Prim算法:
操作完毕后的结果:
但是也可以这样操作:
将两个不同Prim算法的操作的结果拿来对比:
四、Kruskal算法:
步骤:
(1)
(2)
(3)
(4)
(5)
五、对比普利姆和克鲁斯卡尔算法:
六、最短路径问题:
最短路径问题分为单源最短路径和各顶点间的最短路径:
相应的解决算法:
七、Dijkstra算法:
以下面这个图为例:
执行步骤:
(1)
(2)
(3)
(4)
(5)
八、迪杰斯特拉算法的时间复杂度为O(n*n);
九、Dijkstra算法不适用于负权值带权图:
十、Floyd算法(基于动态规划思想)
1、案例1:
步骤:
(1)
(2)
(3)
(4)
到这里就结束了。
2、案例2:
(1)
(2)
(3)
(4)
(5)
(6)
在此基础上寻找最短路径:
十一、Floyd算法的缺陷:
十二、对比Dijkstra和Floyd:
十三、拓扑排序:
1.AOV网:
注:AOV网中不能由环路存在。
2.拓扑排序的执行步骤(以下图为例):
步骤:
(1)
(2)
(3)
(4)
(5)
(6)接下来就略了,最后排成这个样子:
3.总结拓扑排序的实现:
注:每个AOV网都有一个或多个拓扑排序序列;
如果一个图中有回路,就不能用拓扑排序。
4.逆拓扑排序:
十四、关键路径:
1.AOE网:
AOE网的性质:
AOE网中的开始顶点与结束顶点:
2.关键路径:
完成整个工程的最短时间就是关键路径的长度,若关键活动不能按时完成,则整个工程的完成时间就会延长。
3.事件的最早发生时间:
举例:
4.活动的最早开始时间:
5.事件的最迟发生时间与活动的最迟开始时间:
6.时间余量、关键活动和关键路径:
十五、求关键路径的步骤:
1.总体步骤:
2.具体步骤;
(1)
(2)
注:对于汇点(终点)而言,它的最迟发生时间和最早发生时间是一样的。
(3)
(4)
(5)
(6)找到关键活动、关键路径:
3.关键活动的特点:
此外,关键路径可能不止一条,