最小割
摘要:转自mjmjmtl大牛:一、基本问题:1.到底什么是割:原始点集为V,选出一些点集S使得s∈S,T=V-S,t∈T,则S到T的边为S到T割,记做[S,T]。2.什么是最小割:图中所有的割中,边权值和最小的割为最小割!3.割得容量容量和流量计算的区别:割[S,T]的容量为∑(边(u,v)的容量和),其中u∈S,∈T。也就是说割的容量不计算反向的边!!而流量为正向的和反向的代数和。4.最大流-最小割定理:最大流的值为最小割的容量!5.怎样求割:求完最大流后,在残留网络中从source开始dfs,被染色的为S,未被染色的为T,则边集[S,T]为割。(或者从sink反向dfs,被染色的为T,未被染色的
阅读全文
posted @
2012-10-10 16:38
pony1993
阅读(449)
推荐(0) 编辑
最大流Dinic算法
摘要:求解最大流一般采用两种思路,一种是预流,另一各是增广路。增广路这种思想是基于以下定理:定理一:设网络 G 的源为 S, 汇和 T,F和 C 分别为 G 的流和容量,则 F 是最大流当且仅当 G 中不存在可增广路。由此定理可以设计很多算法来计算最大流,Dinic 算法是其中一种比较高效的方法,其复杂度为 O(n2*m)Dinic 算法的基本步骤为:1) 计算残余网络的层次图。我们定义 h[i] 为顶点 i 距离源 S 所经过到最小边数,求出所有顶点的 h 值,h[] 值相同的顶点属于同一层,这就是网络的层次图。2) 在层次图上进行 BFS 增广,直到不存在增广路径。这时求得的增广路径上顶点是分层
阅读全文
posted @
2012-10-01 17:12
pony1993
阅读(632)
推荐(0) 编辑
SPFA加上SLF时判负环的条件
摘要:转自:http://www.cnblogs.com/jffifa/archive/2011/12/17/2291061.html研究发现,SPFA加上SLF(Small Label First)优化时,是不能用“某个点的入队列次数>点数”这一条件来判负环的。数据举例如下:(u, v, d)V=4, E=60 1 00 2 00 3 02 1 -13 1 -23 2 -2则按照SLF,1这个点将被入队5次,而图显然不存在负环(根本不存在环)。究其原因在于SLF不保证被松弛点在被另外一个点松弛时还在队列中。那么必须换一种方法判负环。wikipedia提供了一种不错的选择:易知,无论在什么样的
阅读全文
posted @
2012-09-30 14:50
pony1993
阅读(701)
推荐(0) 编辑
关于SPFA的优化
摘要:SPFA两个著名优化(SLF和LLL):SPFA 是按照 FIFO 的原则更新距离的, 没有考虑到距离标号的作用。实现中 SPFA 有两个非常著名的优化: SLF 和 LLL。SLF: Small Label First 策略. (比较常用)实现方法:设队首元素为, 队列中要加入节点, 在时加到队首而不是队尾, 否则和普通的 SPFA 一样加到队尾.LLL: Large Label Last 策略. (不太常用)设队列 Q中的队首元素为 i,距离标号的平均值为,每次出队时,若,把 i移到队列末尾,如此反复,直到找到一个使,将其出队。话说某次在群里问过关于SLF优化的实现问题,木人理我。。。 。
阅读全文
posted @
2012-09-07 20:16
pony1993
阅读(7848)
推荐(5) 编辑
欧拉回路和欧拉路径
摘要:定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点①首先看欧拉回路存在性的判定:一、无向图每个顶点的度数都是偶数,则存在欧拉回路。二、有向图(所有边都是单向的)每个节顶点的入度都等于出度,则存在欧拉回路。三.混合图欧拉回路 混合图欧拉回路用的是网络流。 把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。 好了,现在每个点入度和出度之差均为偶数。那么将这个偶数除以2,得x。也就是说,对于每一个点,只要...
阅读全文
posted @
2012-09-05 08:01
pony1993
阅读(812)
推荐(0) 编辑
差分约束系统
摘要:在一个差分约束系统(system of difference constraints)中,线性规划矩阵A的每一行包含一个1和一个-1,A的其他所有元素都为0。因此,由Ax≤b给出的约束条件是m个差分约束集合,其中包含n个未知量,对应的线性规划矩阵A为m行n列。每个约束条件为如下形式的简单线性不等式:xj-xi≤bk。其中1≤i,j≤n,1≤k≤m。 例如,考虑这样一个问题,寻找一个5维向量x=(xi)以满足: 这一问题等价于找出未知量xi,i=1,2,…,5,满足下列8个差分约束条件:x1-x2≤0x1-x5≤-1x2-x5≤1x3-x1≤5x4-x1≤4x4-x3≤-1x5-x3≤-3x5.
阅读全文
posted @
2012-09-01 19:43
pony1993
阅读(3022)
推荐(3) 编辑
【转】图的割点、桥与双连通分支
摘要:[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(point biconnected),简称双连通或重连通。一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cut point),又叫关节点(a
阅读全文
posted @
2012-08-13 15:18
pony1993
阅读(198)
推荐(0) 编辑
可图性判定—Havel-Hakimi定理(POJ 1659)
摘要:Havel—Hakimi定理:由非负数组成的非增序列s:d1,d2,···,dn(n>=2,d1>=1)是可图的,当仅当序列 s1:d2-1,d3-1,···,dd1+1-1,dd1+2,····,dn是可图的。序列s1中有n-1个非负数,s序列中d1后的前d1个度数减1后构成s1中的前d1个数。判定过程:(1)对当前数列排序,使其呈递减 (2)从S【2】开始对其后S【1】个数字-1 (3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。例题:PO
阅读全文
posted @
2012-08-11 16:04
pony1993
阅读(1952)
推荐(0) 编辑
强连通分量
摘要:有向图中, u可达v不一定意味着v可达u. 相互可达则属于同一个强连通分量(Strongly Connected Component, SCC)有向图和它的转置的强连通分量相同所有SCC构成一个DAG 1、强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因为没有一条路使得点4到达点1、2或3。2、强连通分量。在一个非强连通图中极大的强连通子图就是该图的强连通分量。比如图三中子图{1,2,3,5}是一个强连通分量,子图{4}是一个强连通分量。 ...
阅读全文
posted @
2012-08-07 21:45
pony1993
阅读(15977)
推荐(0) 编辑
最小费用最大流
摘要:网络流的费用:在实际应用中,与网络流有关的问题,不仅涉及流量,而且还有费用的因素。网络的每一条边(v,w)除了给定容量cap(v,w)外,还定义了一个单位流量费用cost(v,w)。对于网络中一个给定的流flow,其费用定义为: 最小费用最大流问题给定网络G,要求G的一个最大用流flow,使流的总费用最小。求解MCMF问题的算法:在这里各种算法的证明以及原理的详解不再赘述,仅仅介绍算法的过程。相关内容感兴趣的同学可以自己去搜索资料。 最小费用最大流最常用和基本的算法我们可以称它为最小费用路算法,其思想与求最大流的增广路算法类似,不断在残流网络中寻找从源s到汇t的最小费用路,即残流网络中从s到t
阅读全文
posted @
2012-08-05 16:53
pony1993
阅读(11763)
推荐(2) 编辑
最短路—SPFA
摘要:求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm。SPFA算法是西南交通大学段凡丁于1994年发表的. 很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。 我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,..
阅读全文
posted @
2012-07-31 09:29
pony1993
阅读(386)
推荐(0) 编辑
最大流 基础
摘要:图1 如图-1所示,在这个运输网络中,源点S和汇点T分别是1,7,各边的容量为C(u,v)。图中红色虚线所示就是一个可行流。标准图示法如图-2所示:其中p(u,v)/c(u,v)分别表示该边的实际流量与最大容量。关于最大流 熟悉了什么是网络流,最大流也就很好理解了。就是对于任意的u∈V-{s},使得p(s,u)的和达到最大。上面的运输网络中,最大流如图-3所示:MaxFlow=p(1,2)+p(1,3)=2+1=3。 在介绍最大流问题之前,先介绍几个概念:残余网络,增广路径,反向弧,最大流定理以及求最大流的Ford-Fulkerson方法。残余网络增广路径反向弧 观察...
阅读全文
posted @
2012-07-28 10:39
pony1993
阅读(501)
推荐(0) 编辑
二分图的最大匹配—匈牙利算法
摘要:【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(iinA,jinB),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配.最小覆.
阅读全文
posted @
2012-07-25 10:14
pony1993
阅读(11757)
推荐(0) 编辑
拓扑排序
摘要:给定一个有向图G,对于任意一条有向边<Vi,Vj>,称Vi是Vj的直接前驱,Vj是Vi的直接后继,这种前驱与后继的关系具有传递性。 如果一个图的任何一个节点都具有反自反性,也就是说任何一个节点都不是自己的前驱或后继,那么这个有向图是拓扑有序的。拓扑序列:通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。离散数学中关于偏序和全序的定义: 若集合X上的关系是R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。 设R是集合X上的偏序(Partial Orde
阅读全文
posted @
2012-07-24 16:10
pony1993
阅读(850)
推荐(0) 编辑
最小生成树
摘要:克鲁斯卡尔(Kruskal)算法(只与边相关)算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge)。算法过程:1.将图各边按照权值进行排序2.将图遍历一次,找出权值最小的边,(条件:此次找出的边不能和已加入最小生成树集合的边构成环),若符合条件,则加入最小生成树的集合中。不符合条件则继续遍历图,寻找下一个最小权值的边。3.递归重复步骤1,直到找出n-1条边为止(设图有n个结点,则最小生成树的边数应为n-1条),算法结束。得到的就是此图的最小生成树。克鲁斯卡尔(Kruskal)算法因为只与边相关,则适合求稀疏图的最小生成
阅读全文
posted @
2012-07-17 14:59
pony1993
阅读(1416)
推荐(0) 编辑