零、最小生成树
1、Prim算法
一、最短路径
1、Dijkstra算法
按路径长度递增次序、从源点到其余各顶点
2、弗洛伊德算法
每个顶点之间的最短路径。矩阵形式,先记录各个顶点之间的权值,再走其他的路不断修正最小值,找到最小路径
二、拓扑排序
1、定义:事情之间有优先关系,一件事发生是另一件事发生的前提,用有向图表示
2、找到拓扑序列的方法:以一个没有入度的顶点作为第一个,输出之后删除这个顶点和它发出的边,再找下一个没有入度的顶点,直到所有顶点都输出。序列不唯一。
代码实现:用一个栈。先求出各个顶点的入度,入度为0的先入栈,栈不为空就输出,输出的顶点计数,对输出顶点的每个邻接点入度减一,入度为0的入栈,最后计数和顶点数比较,判断是否有回路。
三、关键路径
1、定义:路径最长的路径。(所有顶点的工程都要干完,所以求时间最长的)
2、最早开始时间e(s):从起点开始选权值最大的路径计数
最迟开始时间l(s):从终点向前推,后一个顶点的值减权值得到这个顶点的最迟开始时间,为零的顶点是关键活动
注:关键路径可能有多条,所以减少一个关键活动的时间不一定能减少关键路径的时间