算法
文章平均质量分 72
CFhM_R
所谓的光辉岁月,不是那些闪亮的日子,而是无人问津时,你对梦想的坚持
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法】链式前向星的静态链表实现
我们都知道图的存储有两种方法,邻接矩阵以及邻接表,邻接矩阵是将每一对点之间是否存在边以及边的权值记录下来,优点是可以快速的访问任意两点之间的边,但是缺点是对空间的消耗太大,适用于点不太多的稀疏图;而邻接表则是采用类似链表的方式 ,以每个点为头节点来记录从该点出发的所有边,这样的好处是减少了很多的无谓消耗,每一次的存储都是有意义的,但是缺点是遇到一条边只能去遍历它的起点所在的链表来找到这条边,也就是原创 2016-03-01 12:30:24 · 1856 阅读 · 0 评论 -
【算法】全局最短路——Floyd-Warshall算法
给定一张图,该如何确定图中任意两点间的最短距离呢?我们先想想通常的做法。在一个有n个点的图中,任意两点间的最短距离的步数(经过一个点算一步)一定不超过n,也就是说把n个点每个点经过一次,那么我们来想这样一个算法,每次枚举i到 j经过的步长,从1到n,最后的结果就是比较这些步数对应的值的最小值,就是i到j的最短距离。实现起来也很简单,来考虑矩阵的乘法 ,我们把所有的加法变成取最小值,乘法变成加法原创 2016-03-01 17:00:40 · 1687 阅读 · 0 评论 -
【算法】单源最短路——Dijkstra
对于固定起点的最短路算法,我们称之为单源最短路算法。单源最短路算法很多,最常见的就是dijkstra算法。dijkstra主要用的是一种贪心的思想,就是说如果i...s...t...j是最短路,那么i和j之间的任意两点s,t之间也一定是最短路,非常好证,如果s,t之间不是最短路,那么必然存在最短路,那么i到j也不是最短路造成了矛盾。而dijkstra就是运用这样的思想,把起点首先放进一个集原创 2016-03-01 23:36:20 · 3367 阅读 · 0 评论 -
【算法】单源最短路——SPFA
单源最短路除了dijkstra算法之外,还有一种常用的算法叫做SPFA(shortest path faster algorithm)算法,不同于dijkstra的复杂度为o(n^2),SPFA算法的平均复杂度为o(kE),E为边数,且k通常不超过2。SPFA在实现时有bfs和dfs两种方式,但是在图的拓扑关系比较强时,用dfs会造成一条边的大量重复访问,会降低算法的稳定性,所以一般推荐使用b原创 2016-03-02 22:52:03 · 894 阅读 · 0 评论 -
算法——并查集
并查集是一种树状数据结构,用来处理不相交的集合的关系,它的查找速度非常快,在并查集中只存在两种关系,要么是属于关系,要么是不想交的补集关系。并查集有四种基本操作,初始化,查询,合并以及判断是否属于同一集合,可以用数组实现,也可以用指针实现,北理ACM祖传的是数组实现的方法。用数组来完成指向父节点的操作。所以我们首先需要一个数组fa[]来存放各个元素的父亲节点。void init(int s原创 2016-02-24 23:33:38 · 491 阅读 · 0 评论
分享