文章目录
前言
一、最小生成树的两个算法(Prim & Kruskal)
1. 关于Prim
思路:开始时随机选择一个顶点,之后选择一个与当前T顶点集合最近的顶点
直至所有顶点都并入树

适用于解边稠密的图
生成树不唯一
2.关于Kruskal
每次操作选择权值最小且不在已存在树里的边
算法适用边稀疏而顶点较多的图
二、关于最短路径的两个算法(Dijkstra & Floyd)
1.关于Dijkstra
预设三个数组
final表示有无访问(初始设为False)
dist表示距离
path表示从哪个结点指向
每轮dist最小的一个数将final设为True,并将他到其他结点的最短路径更新

不适合带有负权值的图
2.关于Floyd
先求出邻接矩阵,然后再以每个结点作为中转点计算
A[i][j] > A[i][0] + A[0][j](若成立,则更新A[i][j]的值)

3.拓扑排序
把度为0的点依次出列形成拓扑排序

有拓扑排序的图一定是有向无环图
拓扑排序一定,图并不唯一

4. 关键路径相关
事件最早发生时间 & 事件最迟发生时间
从开始顶点出发,遇到多条路径时,选活动时间长的那一条

从末尾顶点出发,遇到多条路径时,选活动时间少的那一条

活动最早开始时间 & 活动最晚发生时间
弧尾顶点的事件最早开始时间的值
弧头顶点的事件最迟发生时间的值减去活动时间

关键活动
活动最迟发生时间减去活动最早发生时间差值为 0的

本文介绍了图算法中的四个核心部分:最小生成树算法(Prim与Kruskal)、最短路径算法(Dijkstra与Floyd)、拓扑排序及关键路径分析。通过对比不同算法的特点及其应用场景,帮助读者更好地理解和掌握图算法的基础知识。


被折叠的 条评论
为什么被折叠?



