最大流算法----(SAP 和 EK)
EK算法的核心
反复寻找源点 s 到汇点 t 之间的增广路径,若有,找出增广路径上每一段的最小值delta,若无,则结束。
寻找增广路径时用BFS来找,并且更新残留网的值。
找到delta后,则使最大流值加上delta,更新为当前最大的最大流值。
更详细的到:http://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html
SAP算法
1.首先设 h 数组,h[i]表示节点 i 到汇点经过的最少路径数;
2.在一次寻找可行路径的过程中,若此时已到达 i 点,对于< i , j >,若h[i]=h[j]+1,则j为可选点,这样可保证每次找到的到达t的路径所经过的边数是最少的;
3.某时刻,在到达i处,不存在<i , j>,使得h[i]=h[j]+1,则修改h[i],设i的所有后继的最小h为t,则修改h[i]=t+1;
4.设num[x]为h[]值为x的点的个数。对于一点i,在修改h[i]时,若num[h[i]]=1则停止。因为修改了h[i],num[h[i]]=0,h[i]的值变大了,没有了大小为h[i]的,出现断层,永远不能到达汇点。
算法流程:
(1).从源点s开始,找下一个节点p,使得h[s]=h[p]+1,找到继续找p的下一个节点,到达汇点t时转(3),否则转(2);
(2).修改h[s]的值,重新到1;
(3).根据本次找到的路径修改路径上的流量和反向边的流量,设最小流量的边为<u,v>,则下一次找路径时,从u开始向汇点找。
sap算法详解及模板:http://blog.csdn.net/liguanxing/article/details/5783804
最大流算法----(SAP 和 EK)的更多相关文章
- 最大流算法-ISAP
引入 最大流算法分为两类,一种是增广路算法,一种是预留推进算法.增广路算法包括时间复杂度\(O(nm^2)\)的EK算法,上界为\(O(n^2m)\)的Dinic算法,以及一些其他的算法.EK算法直接 ...
- 网络最大流算法—Dinic算法及优化
前置知识 网络最大流入门 前言 Dinic在信息学奥赛中是一种最常用的求网络最大流的算法. 它凭借着思路直观,代码难度小,性能优越等优势,深受广大oier青睐 思想 $Dinic$算法属于增广路算法. ...
- Ford-Fulkerson 最大流算法
流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...
- 算法9-5:最大流算法的Java代码
残留网络 在介绍最大流算法之前先介绍一下什么是残留网络.残余网络的概念有点类似于集合中的补集概念. 下图是残余网络的样例. 上面的网络是原始网络.以下的网络是计算出的残留网络.残留网络的作用就是用来描 ...
- 海量数据挖掘MMDS week3:流算法Stream Algorithms
http://blog.csdn.net/pipisorry/article/details/49183379 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 基于.net的分布式系统限流组件(限流算法:令牌算法和漏斗算法)
转载链接:https://www.cnblogs.com/vveiliang/p/9049393.html 1.令牌桶算法 令牌桶算法是比较常见的限流算法之一,大概描述如下: 1).所有的请求在处理之 ...
- 常用限流算法与Guava RateLimiter源码解析
在分布式系统中,应对高并发访问时,缓存.限流.降级是保护系统正常运行的常用方法.当请求量突发暴涨时,如果不加以限制访问,则可能导致整个系统崩溃,服务不可用.同时有一些业务场景,比如短信验证码,或者其它 ...
- Cable TV Network 顶点连通度 (最大流算法)
Cable TV Network 题目抽象:给出含有n个点顶点的无向图,给出m条边.求定点联通度 K 算法:将每个顶点v拆成 v' v'' ,v'-->v''的容量为1. ...
- HDU 3657 Game (SAP | Dinic | EK 三种算法的比较)
Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- uva 10635 - Prince and Princess(LCS)
题目连接:10635 - Prince and Princess 题目大意:给出n, m, k,求两个长度分别为m + 1 和 k + 1且由1~n * n组成的序列的最长公共子序列长的. 解题思路: ...
- 实现简答LinkedList
package com.表栈和队列; import java.util.Iterator; /** * 实现LinkedList * 60页 * @author zj * * @param ...
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头 疼,Objective-C的代码在语法上和Java, C++有着很大的区别, ...
- MySQL之终端(Terminal)管理MySQL(转)
前言:MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图 ...
- CSS3实现漂亮ToolTips
演示Demo 5种效果的主要css如下: /* transform:向元素应用2D或3D转换; transform-origin属性只有在定义了transform以后才生效 */ .tooltip-e ...
- PCL点云库增加自定义数据类型
#include <pcl/filters/passthrough.h> #include <pcl/filters/impl/passthrough.hpp> // the ...
- 二.ubuntu14.04 3D特效设置
一.如果按照第一篇都设置好了(显卡驱动等都已经正常),然后 1.安装CCSM设置管理器 用鼠标点击屏幕左侧Unity程序启动栏中的“Ubuntu软件中心”(有“A”字形的公文包图标), 在弹出的“Ub ...
- spring中的定时任务调度用例
在application-quartz.xml配置文件中添加如下配置信息: <!-- Quartz --> <bean id="getSendEmailObject ...
- Android 截取本地图库图片 并显示
package com.example.image; import android.app.Activity; import android.content.Intent; import androi ...
- 仿淘宝TAB切换搜索框
<div class="search"> <div id="searchBox"> <ul class="tab-bar ...