- 博客(5)
- 资源 (5)
- 收藏
- 关注
原创 斐波那契堆
本文将要介绍的斐波那契堆是一种保有最小堆性质的“森林集合”。和二叉堆一样,他可以用来实现优先队列,而且比二叉堆在某些操作上有更优的时间复杂度。比如插入操作,二叉堆插入一个结点需要从底向上调整堆结构,因此需要O(lgn)的时间,而斐波那契堆则只需要O(1)的时间。下面将会解析斐波那契堆的各个基本操作及其c/cpp实现代码。下面是一个斐波那契堆的结构示意图。除了插入操作,斐波那契堆总是保持着一个性质:
2016-06-08 16:24:36 1787
原创 最大流之Ford-Fulkerson方法详解及实现
最大流问题常常出现在物流配送中,可以规约为以下的图问题。最大流问题中,图中两个顶点之间不能同时存在一对相反方向的边。边上的数字为该条边的容量,即在该条边上流过的量的上限值。最大流问题就是在满足容量限制条件下,使从起点s到终点t的流量达到最大。在介绍解决最大流问题的Ford-Fulkerson方法之前,先介绍一些基本概念。1. 残存网络与增广路径根据图和各条边上的流可以画出
2016-06-03 19:33:40 36277 6
原创 结点对最短路径之Floyd算法原理详解及实现
上两篇博客介绍了计算单源最短路径的Bellman-Ford算法和Dijkstra算法。Bellman-Ford算法适用于任何有向图,即使图中包含负环路,它还能报告此问题。Dijkstra算法运行速度比Bellman-Ford算法要快,但是其要求图中不能包含负权重的边。单源最短路径之Bellman-Ford算法单源最短路径之Dijkstra算法在很多实际问题中,我们需要计算图中所有结
2016-06-02 14:08:57 15551
原创 单源最短路径之Dijkstra算法
上一篇博客介绍了适用于任何有向图(即使存在负环路)的Bellman-Ford算法,对图G=(V,E)来说,该算法的时间复杂度为O(VE)。本文介绍时间复杂度为O(v^2)的Dijkstra算法,但只适用于没有负权重边的有向图。基本上所有计算图的最短路径的算法都基于一个性质:一条最短路径的子路径肯定也是一条最短路径。该性质用反证法就可以轻易证明。反过来说,我们有可能基于一条最短路径构造出另一条到
2016-06-01 21:54:57 9205
原创 单源最短路径之Bellman-Ford算法
今天介绍一种计算单源最短路径的算法Bellman-Ford算法,对于图G=(V,E)来说,该算法的时间复杂度为O(VE),其中V是顶点数,E是边数。Bellman-Ford算法适用于任何有向图,并能报告图中存在负环路(边的权重之和为负数的环路,这使得图中所有经过该环路的路径的长度都可以通过反复行走该环路而使路径长度变小,即没有最短路径)的情况。以后会介绍运行速度更快,但只适用于没有负环路的图中的D
2016-06-01 13:19:03 4977
微信远程控制电脑
2016-03-30
python简单网络爬虫
2016-03-27
python网络爬虫
2016-03-27
Python爬虫
2016-03-27
Python简单爬虫
2016-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人