![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
QiaoRuoZhuo
这个作者很懒,什么都没留下…
展开
-
Prime算法求最小生成树 (邻接表)
实现了 Prime算法求最小生成树 (邻接表)的普通算法和最小堆优化算法。原创 2014-11-26 18:36:42 · 2282 阅读 · 0 评论 -
拓扑排序之关键路径
采用广度优先搜索进行拓扑排序,获取拓扑序列的同时计算各顶点事件的最早发生时间,然后逆序计算各顶点事件的最晚发生时间。本文是《大话数据结构》的读书笔记,但算法实现与《大话数据结构》完全不同,自我感觉比书上的算法要简洁,呵呵!原创 2014-11-17 23:03:15 · 1037 阅读 · 0 评论 -
使用广度优先搜索生成关键路径
/* Name: 拓扑排序之关键路径 Copyright: Author: 巧若拙 Date: 17-11-14 21:02 Description: 拓扑排序之关键路径 若在带权的有向图中,以顶点表示事件,以有向边表示活动,边上的权值表示活动的开销(如该活动持续时间),则此带权的有向图称为边表示活动的网 (Activity on Edge原创 2017-06-07 10:06:07 · 619 阅读 · 0 评论 -
最大网络流Edmond-Karp算法
#includeusing namespace std;const int MAXV=2000; //最大顶点数量 const int MAXE=2000; //最大边数量const int INFINITY = 0x7fffffff; //无穷大 int capacity[MAXV][MAXV]; //记录残流网络的容量int flow[MAXV]; //标记从源点原创 2017-06-09 14:45:59 · 492 阅读 · 0 评论 -
匈牙利算法
/* Name: 匈牙利算法 Copyright: Author: 巧若拙 Date: 12-06-17 10:52 Description: */#include #include using namespace std;#define MAX 502int map[MAX][MAX];int n,k;int mk[MAX];//从X集合中的顶点u出原创 2017-06-12 15:02:04 · 526 阅读 · 0 评论 -
最大网络流Dinic算法
/* Name: 最大网络流Dinic算法 Copyright: Author: 巧若拙 Date: 10-06-17 22:08 Description: 朴素的Dinic算法,未做任何优化 。 先广度优先搜索分层网络,然后深度优先搜索增广路,每找到一条增广路,就逆序修改增广路所在残留网络容量*/#include #include using na原创 2017-06-10 22:17:56 · 572 阅读 · 0 评论 -
最大网络流Dinic算法(借鉴网友版)
/* Name: 最大网络流Dinic算法 Copyright: Author: 巧若拙 Date: 10-06-17 22:08 Description: 借鉴网友Comzyh写的Dinic算法, 先广度优先搜索分层网络(BFS),然后深度优先搜索增广路(DFS),每找到一条增广路,就逆序修改增广路所在残留网络容量, 并返回到源点,重新深度优先搜索该分层网络,原创 2017-06-13 10:43:39 · 292 阅读 · 0 评论 -
最大网络流Dinic算法(优化版)
/* Name: 最大网络流Dinic算法(优化版) Copyright: Author: 巧若拙 Date: 10-06-17 22:08 Description: 优化的Dinic算法。 先广度优先搜索分层网络,然后深度优先搜索增广路。 每找到一条增广路,不修改整条增广路,只修改当前节点和其父节点所在边的容量,可以减少操作次数; 标注不能通往汇点以形成增广原创 2017-06-10 22:19:25 · 900 阅读 · 0 评论 -
最大流问题 ISAP 算法
/* Name: 最大流问题 ISAP 算法 Copyright: Author: 巧若拙 Date: 13-06-17 14:30 Description: */#include #include using namespace std; const int MAXV=2000; //最大顶点数量 const i原创 2017-06-13 15:26:55 · 362 阅读 · 0 评论 -
最大网络流Dinic算法(逆序广搜构造分层网络)
/* Name: 最大网络流Dinic算法(逆序广搜构造分层网络) Copyright: Author: 巧若拙 Date: 10-06-17 22:08 Description: 优化的Dinic算法。 先逆序广度优先搜索分层网络,然后深度优先搜索增广路。 每找到一条增广路,不修改整条增广路,只修改当前节点和其父节点所在边的容量,可以减少操作次数;原创 2017-06-13 19:46:38 · 396 阅读 · 0 评论 -
最大流问题预流推进算法(最基本)
/* Name: 最大流问题预流推进算法 Copyright: Author: 巧若拙 Date: 14-06-17 09:26 Description: 最基本的预流推进算法,没有任何优化,每次遍历所有的结点,找出活结点, 寻找可行弧,并预流推进,若没有可以push的顶点,执行relabel操作。 */#include #include u原创 2017-06-15 15:59:05 · 2530 阅读 · 0 评论 -
最大流问题预流推进算法(BFS优化)
/* Name: 最大流问题预流推进算法 Copyright: Author: 巧若拙 Date: 14-06-17 09:26 Description: 改进的预流推进算法,有如下优化: 进行了预先逆序BFS分层, 利用结点链表,每次都是从高度最大的结点开始处理.*/#include #include using namespace s原创 2017-06-15 16:00:40 · 1659 阅读 · 0 评论 -
拓扑排序之关键路径(深度优先搜索)
采用深度优先搜索进行拓扑排序,获取拓扑序列的同时计算各顶点事件的最早发生时间,然后逆序计算各顶点事件的最晚发生时间。本文是《大话数据结构》的读书笔记,在输出关键路径时采用深度优先搜索输出关键路径,能输出多条关键路径。原创 2014-11-18 22:04:15 · 3629 阅读 · 0 评论 -
拓扑排序之变量序列(三种算法实现)
/*Name: 拓扑排序之变量序列(三种算法实现) Copyright: Author: Date: 17-11-14 21:02Description: 拓扑排序之变量序列 假设有n个变量(1<=n<=26,变量名用单个小写字母表示),还有m个二元组(u,v),分别表示变量u小于v。那么,所有变量从小到大排列起来应该是什么样子的呢?例如有4个变量a,b,c,d,若以知a<b,c<原创 2017-06-06 09:00:29 · 927 阅读 · 0 评论 -
最小费用最大流算法(SPFA邻接矩阵)
/* Name: 最小费用最大流算法(SPFA邻接矩阵) Copyright: Author: 巧若拙 Date: 16-06-17 22:08 Description: 每次以单位费用为权值,寻找src到des的最短增广路路径,然后对该路径进行增量修改, 先计算出最小增量,然后累计最小费用值,同时更新残流网络和费用网络。 再次用SPFA算法寻找src到d原创 2017-06-16 21:34:12 · 2297 阅读 · 0 评论 -
图的割点(边表集实现)
在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。求割点与桥的算法是R.Tarjan发明的。本文用边表集存储图的信息,实现了递归和非递归两种算法。原创 2014-11-21 08:27:03 · 1827 阅读 · 0 评论 -
拓扑排序 详解 + 并查集 详解 + 最小生成树(MST)详解
拓扑排序详解 +并查集详解 + 最小生成树(MST)详解【普利姆算法 +优先队列优化 & 克鲁斯卡尔算法】 本人QQ :2319411771 邮箱 : cyb19950118@163.com 若您发现本文有什么错误,请联系我,我会及时改正的,谢谢您的合作! 本文为原创文章,转载请注明出处 本文链接 :http://www.cnblo转载 2014-11-26 13:55:20 · 1056 阅读 · 0 评论 -
Prime算法求最小生成树 (邻接矩阵)
实现了 Prime算法求最小生成树 (邻接矩阵)的普通算法和最小堆优化算法。原创 2014-11-26 14:03:20 · 3359 阅读 · 0 评论 -
图的割点(邻接矩阵实现)
在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。求割点与桥的算法是R.Tarjan发明的,本文用邻接矩阵存储图的信息,实现了递归和非递归两种算法。 感觉非递归算法或许有更好的表达,但一时想不出来,请大牛指点,谢谢!原创 2014-11-21 21:11:01 · 1546 阅读 · 0 评论 -
迷宫寻址中深度优先搜索的递归和非递归算法比较
本文只探究迷宫寻址中深度优先搜索的递归和非递归算法比较,其他相关代码详见《迷宫问题(巧若拙)》http://blog.csdn.net/qiaoruozhuo/article/details/41020745原创 2014-11-12 15:52:20 · 1987 阅读 · 0 评论 -
拓扑排序之变量序列算法分析
分别用邻接表和边表集两种数据结构存储图的顶点和边信息。分别用深度优先搜索和广度优先搜索实现了拓扑排序。对拓扑排序感兴趣的同学可以参考下。原创 2014-11-17 20:57:21 · 1023 阅读 · 0 评论 -
迷宫问题
分别实现了广度优先搜索和深度优先搜索最短路径算法,还给出了深度优先搜索路径(非最短路径)的递归和非递归两种算法。 地图的设计可选择机器随机设计和人工设计,还可以进行人工修改地图。原创 2014-11-11 22:37:33 · 1167 阅读 · 0 评论 -
拓扑排序之变量序列代码
假设有n个变量(1<=n<=26,变量名用单个小写字母表示),还有m个二元组(u,v),分别表示变量u小于v。那么,所有变量从小到大排列起来应该是什么样子的呢? 例如有4个变量a,b,c,d,若以知a<b,c<b,d<c,则这4个变量的排序可能是a<d<c<b。尽管还有可能其他的可能,你只需找出其中的一个即可。原创 2014-11-17 20:24:50 · 1068 阅读 · 0 评论 -
最短路径算法集锦
列举了深度优先搜索的递归和非递归算法,Dijkstra最短路径算法, 基于Bellman-Fort最短路径算法的改进型广度优先搜索算法, Floyd-Warshall最短路径算法的原始版和变化版 本文是阅读《啊哈!算法》后的学习笔记,代码与教材中有些差异,若有错误请指正,谢谢!原创 2014-11-13 22:27:28 · 1296 阅读 · 1 评论 -
杭州电子科技大学Online Judge 之 “确定比赛名次(ID1285)”解题报告
算法分析: 本题是拓扑排序的典型应用。由于顶点数量不多,可以采用邻接矩阵来存储图信息,这样算法比较简单,只需要搜索n次,每次把序号最小的入度为0的顶点存储到拓扑序列中就行了。算法思路比较清晰,代码也比较简洁,但时间复杂度和空间复杂度都较高。另一种方法是采用邻接表存储图信息。由于题目要求输出时编号小的队伍在前,所以在入栈时一定要保证先让序号最小的入度为0的顶点在栈顶,这样根据后进先出的特点,可以把序号最小的顶点存储到拓扑序列中。我采用折半插入排序的方法,把入度为0的顶点按递减序排序,然后对图进行深度优先原创 2014-11-19 14:37:43 · 2200 阅读 · 0 评论 -
最小生成树( 克鲁斯卡尔算法)
使用克鲁斯卡尔算法最小生成树,采用的数据结构是三元组边表集,采用了快排和并查集,代码很简洁,效率也高。和前面两个求最小生成树算法一样,程序还能自动生成图信息,快来看看吧。原创 2014-12-01 21:34:29 · 1062 阅读 · 0 评论 -
最大流问题预流推进算法(邻接表relabel_to_front)
改进的预流推进算法,有如下优化: 进行了预先逆序BFS分层, 利用结点链表,每次都是从高度最大的结点开始处理. 利用指向各顶点的边表结点的指针,记录已经访问到该顶点的第几条边了, 下次推进时可直接从该条边操作,不用从第一条边开始一路找过来。原创 2017-06-15 16:05:46 · 973 阅读 · 0 评论