
ACM_图论
文章平均质量分 74
runninghui
这个作者很懒,什么都没留下…
展开
-
floyd详解
求单源最短路的算法相信大家都看过了,下面介绍一个各个点之间的最短路算法,它就是floyd算法,这个算法很好记忆,简单的一个三重循环。我觉得floyd算法其实就用了一个原理:对于图G(v,e)来说,图中从某个点到另外一个点的最短路其间顶多经过|v|个结点,而floyd算法正是将图的所有结点都加进来作为结点i->j的跳板,从而对图的每对结点进行至多|v|次松弛操作.由于算法写起来比较简单,原创 2013-05-07 15:08:04 · 1291 阅读 · 0 评论 -
dijkstra算法详解
dijkstra算法,用来求单源(即一个结点到其他结点的最短路径)最短路径,这里就不多解释了。这个算法只适合求不存在负边权的图的单源最短路。先讲一下该算法的思想。1.设置一个距离数组dis[MAX]和一个标记访问的数组vis[MAX],源点s自身到自身的距离自然是0。即dis[s]=0,标记源点为已访问 vis[s]=true;2.更新源点到其他顶点的距离。即如果存在与源点相连的顶原创 2013-05-04 19:05:13 · 1466 阅读 · 0 评论 -
网络流算法详解
网络流算法在许多实际问题中有应用,如匹配问题,著名的Hall婚姻定理。这里不证明“最大流最小割定理”,简单解释求最大流的Ford-Fulkerson算法。接下来分别详述时间复杂度为O(VE2)的Edmonds-Karp算法和时间复杂度为O(V2E)的Dinic算法。至于较新的预留推进算法就不介绍了,这个算法证明比较难,感兴趣的可以看看算法导论。本文所用到的网络流如图1,s为原点,t为汇点,转载 2013-04-21 22:46:39 · 2115 阅读 · 0 评论 -
KM算法求二分图最优匹配
#include #include #include #include using namespace std;#define MAX 100int n;int weight[MAX][MAX]; //权重int lx[MAX],ly[MAX]; //定点标号bool sx[MAX],sy[MAX];原创 2013-08-16 11:08:46 · 1015 阅读 · 0 评论 -
二分图最大匹配
二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的匹配称为图的最大匹配。完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配。二分图匹配基本概念:未盖点设VI原创 2013-08-15 11:20:21 · 1022 阅读 · 0 评论 -
差分约束系统
差分约束系统X1 - X2 X1 - X5 X2 - X5 X3 - X1 X4 - X1 X4 - X3 X5 - X3 X5 - X4 不等式组(1) 全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就可以化成小于等于)。这样的不等式组就称作差分约束系统。 这个不等式组要么无解,要么就有无数组解。因为如果有一组转载 2013-06-20 15:35:51 · 2640 阅读 · 0 评论 -
MST_prim
关于最小生成树,在本blog的MST_kruskal算法中已经介绍过了,这里介绍另外一种算法即prim算法写讲一下prim算法的基本思想1.初始化所有结点都为未访问2.从图中任选一点,加入到集合V中并标记它为已访问3.从未标记的点中选取到集合V中的顶点中距离最小的,并加入到集合V中,标记它已访问。4,.重复3步骤直到所有的点都选入到集合V中这里讲一下上述步骤的实现1.初原创 2013-05-11 22:56:23 · 1240 阅读 · 0 评论 -
MST_kruskal算法
MST(minimum spanning tree)即最小生成树算法,经典的有两个,这里介绍一下kruskal算法。关于另外的一个prim算法,本blog也将介绍。何谓最小生成树呢?大家知道树就是每个结点可以相互到达,并且没有环的一种数据结构,这里就不多介绍了,何谓最小生成树呢?就是从一个图中选取若干条边,这些边使得每个结点之间可以相互到达,最关键就是,选取的这些边的权值之和是最小的。下面原创 2013-05-11 22:15:40 · 1484 阅读 · 0 评论 -
SPFA算法详解
解决存在负环的图的单源最短路径,bellman-ford算法是比较经典的一个,但是大家都知道,这个算法的效率并不咋的,因为它只知道要求单源最短路,至多做|v|(j图的结点数)次松弛操作,感觉有点盲目吧,这里介绍一个有西南交通大学段凡丁1994年发明的一个算法即SPFA,很大程度上优化了bellman-ford算法(建议没有学过的,先去了解一下这个算法),算法的时间效率我就不说了,因为我觉得当我们熟原创 2013-05-07 16:42:05 · 9365 阅读 · 5 评论 -
Bellman-Ford算法的详解
在学习这个算法之前,相信大家都已经学习过dijkstra算法了,如果大家还看过别的关于bellman-ford算法的文章,那些文章一定讲过dijkstra算法无法解决存在负权环的图的单源最短路问题。那么我们先来看看为什么dijkstra算法不行 如果我们采用dijkstra算法来求这个图的单源最短路径经过四次松弛之后,我们认为最短路已经求出来了,其实不然。注意原创 2013-05-05 16:45:44 · 2035 阅读 · 0 评论 -
K短路算法
1 A*算法 A*算法在人工智能中是一种典型的启发式搜索算法,启发中的估价是用估价函数表示的:其中f(n)是节点n的估价函数,g(n)表示实际状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价。另外定义h'(n)为n到目标节点最佳路径的实际值。如果h'(n)≥h(n)则如果存在从初始状态走到目标状态的最小代价的解,那么用该估价函数搜索的转载 2014-10-08 15:58:56 · 3380 阅读 · 0 评论