摘要: ###SPFA算法 由BellmanFord算法进行优化得来的 当BellmanFord算法 遍历所有边的时候 dis[b]=min[dis[b],dis[a]+c]; 这个表达式只有dis[a]变小的时候才可能变小。 SPFA 既可以判断负环也可以判断无负环的 所以SPFA将dis[a]变小的点加 阅读全文
posted @ 2021-01-19 19:01 冷丁_Mitnick 阅读(92) 评论(0) 推荐(0) 编辑
摘要: ###一、最短路的分类 n 表示点的数量 m表示边的数量 1、单源最短路 求一个点到所有点的最短路 (1) 所有边权都是正数 ①朴素的dijkstra算法 O(n2) 时间复杂度和边数无关 适合稠密图(边数多) 适合边数是n2级别的情况 ②堆优化版的dijkstra算法O(mlogn) 适合边数是n 阅读全文
posted @ 2021-01-19 18:59 冷丁_Mitnick 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1.深度优先搜素 2.宽度优先搜索 3.树与图的存储 4.树与图的DFS 5.树与图的BFS 6.拓扑排序 从使用数据结构来看 DFS stack BFS queue 从使用空间来看 DFS O(H); “不具有最短性” BFS O(2^h) “最短路”(第一次搜到的距离为最短距离) ###1.深度 阅读全文
posted @ 2021-01-19 18:55 冷丁_Mitnick 阅读(82) 评论(0) 推荐(0) 编辑
摘要: ###Kruskal算法(克鲁斯卡尔算法) 核心操作 1、将所有边按权重大小 从小到大排序 O(mlogm); 这部分是本算法的瓶颈 比较耗时 2、 枚举每条边a -b 权重为c 如果 a-b 不连通 则把这条边加入集合中 (因为最小生成树不能含有自环,如果a-b已经连通,再加入这条边就会形成自环) 阅读全文
posted @ 2021-01-19 11:05 冷丁_Mitnick 阅读(89) 评论(0) 推荐(0) 编辑