摘要: Prim 算法 Prim算法用于求最小生成树问题,与Dijkstra算法非常相似。根据图的疏密程度,分为朴素Prim算法(稠密图,$O(n^2)$)、堆优化Prim算法(稀疏图,$O(m\log n)$)。但对于稀疏图,Kruskal算法更好写,思路更加清晰简单,所以一般不使用堆优化Prim。本文我 阅读全文
posted @ 2022-12-10 09:32 S!no 阅读(143) 评论(0) 推荐(0) 编辑
摘要: Floyd 算法 Floyd 算法用于多源汇最短路问题。时间复杂度为 $O(n^3)$ 。 算法思想: 首先用邻接矩阵里的d[i][j]存储所有的边(重边的时候取min),然后就是三重循环,思路也是如果从i到k,再从k到j,这个距离(d[i][k] + d[k][j])能比d[i][j]小,就更新一 阅读全文
posted @ 2022-12-10 09:32 S!no 阅读(109) 评论(0) 推荐(0) 编辑
摘要: SPFA 算法 SPFA 算法 SPFA 求最短路 SPFA 判断负环 SPFA算法实际上是对Bellman-Ford算法的队列优化,也是用于在存在负权边的图上,求单源点最短路,一般情况下时间复杂度可以看作 $O(m)$ ,最坏情况下时间复杂度是 $O(nm)$ 。 虽然SPFA算法是对Bellma 阅读全文
posted @ 2022-12-10 09:32 S!no 阅读(120) 评论(0) 推荐(0) 编辑
摘要: Bellman-Ford 算法 Bellman-Ford算法用于在包含负权边的图上,求单源点最短路的问题,时间复杂度 $O(nm)$ 。但是因为该算法的改进版SPFA,在求单源点最短路的问题上几乎总是优于Bellman-Ford算法,所以Bellman-Ford算法一般只应用在对边的数量有限制的最短 阅读全文
posted @ 2022-12-10 09:32 S!no 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Dijkstra 算法 Dijkstra算法用于在所有边权都非负的图上,求单源点最短路。 设 $n$ 是图上结点的数量,$m$ 是边的数量。 朴素Dijkstra算法的时间复杂度是 $O(n^2)$ ,适合稠密图(点少边多); 堆优化版的Dijkstra算法的时间复杂度是 $O(m\log n)$ 阅读全文
posted @ 2022-12-10 09:32 S!no 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 拓扑排序 计算拓扑序列的一个方式是,用BFS来尝试访问所有的节点,但是有一个约束就是只有入度为0的节点才能被加入到扩展队列里。每次从队列里取出一个节点,也就同时在图中将这个节点拆除,所以它的所有后继的节点都减少1,如果已经减少到0,那么就可以加入到队列中。 在上面的例子中,一开始只有a的入度是0,所 阅读全文
posted @ 2022-12-10 09:31 S!no 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 树与图的DFS与BFS 树与图的DFS与BFS DFS BFS 首先,树是一种特殊结构的图,所以树与图的存储是相同的,而图又分为有向图与无向图,对无向图我们可以在两个点之间添加两条边。 有向图的存储方式主要有两种 稀疏图(点多边少)一般用邻接表存储 稠密图(点少边多)一般用邻接矩阵存储。 在邻接表的 阅读全文
posted @ 2022-12-09 22:07 S!no 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 宽度优先搜索 BFS 宽度优先搜索 BFS 走迷宫 八数码 宽度优先搜索每次扩展当前结点的所有相邻结点,所以需要一个队列来维护要扩展的结点。由于宽度优先搜索每次都是把所有能到的下一步搜完,所以能够得到最短路径的解,所以一些不带权求最短路径的问题也可以直接用BFS解决。 注意,在扩展结点的某个下一结点 阅读全文
posted @ 2022-12-09 22:07 S!no 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 深度优先搜索DFS 深度优先搜索DFS 排列数字 n-皇后问题 按位搜索 按行搜索 深度优先搜索的思想简单来说就是“一条道走到黑”,也被称为“暴力搜索”,常用于解决需要给出所有方案的问题,因为它的搜索顺序就是能够得到一个完整的搜索路径(方案)后回溯再去搜索其它的方案。 排列数字 题目链接:AcWin 阅读全文
posted @ 2022-12-09 22:07 S!no 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 哈希表(Hash) 哈希表(Hash) 拉链法(开散列) 开放寻址法 字符串哈希 Hash 表又称为散列表,一般由 Hash 函数(散列函数)与链表结构共同实现。与离散化思想类似,当我们要对若干复杂信息进行统计时,可以用 Hash 函致把这些复杂信息映射到一个容易维护的值城内。因为值域变简单、范围变 阅读全文
posted @ 2022-12-09 22:07 S!no 阅读(123) 评论(0) 推荐(0) 编辑