学习顺序按照下图的改进历程

问题转化:寻找初始解,提升,达到条件停止


求解优化,加回溯边,画残差图,在残差图中寻找一条s可到t的路径

看最大流最小割问题,证明 除 ST外每个点的出度和入度相等,S和T两点出入度差为最大流f

根据图列线性规划

从对偶问题中理解FF算法

对偶问题转化:

转化后

变成对偶后还没有结束,还可以简化

(第一步中四者因为是最小割,图被切为两部分,S和T必然在两边,则二者之一不起作用,假设ys=0)


此时还有不等式,我们看345三个约束,
先科普一下,若A的任意子方阵的行列式等于0,1,-1,则称A为全单模矩阵。由定义容易得到全单模矩阵的元素只有0,-1,1。
345约束的系数矩阵为全单模矩阵,因此证明这个线性规划的解必然是整数点。

这样的FF算法有明显的缺陷,

Dinitz的提升





这样的提升还不够,于是有

EK算法


由于时间复杂度一直太高,所以最大流问题一直被寻求新方法,接下来就是

著名的dinic算法

首先学会构建-Layered-Network(Gf )

尝试构建一下





由于最右上角的点使得S到T不可达,删除
结果是

下一步:寻找

blocking flow


其实你会发现删除不可达的节点在寻找blocking的时候就做了
结果最大流算法变成

到此学习结束,但是发现没有回忆起来曾经学的最大流最小割,,,,,
还有费用问题
呜呜
又看了一会儿得出一些最小割做题理解

对于上边看的对偶问题

当最大流对偶成最小割时候,也就是整数规划,那么可以用线性规划方法很快解出来。

那么这和最小割有什么关系呢?

打开我的matlab。。。。。

clc;clear;
f = [0, 0, 2, 1, 3, 2, 1];
intcon = [1, 2, 3, 4, 5, 6, 7];
A = [-1, 1, 0, 0, -1, 0, 0; -1, 0, 0, 0, 0, -1, 0; 0, -1, 0, 0, 0, 0, -1];
b = [0; -1; -1];
Aeq = [-1, 0, 1, 0, 0, 0, 0;0, -1, 0, 1, 0, 0, 0];
beq = [0; 0];
lb = zeros(7,1);
ub = [1;1;1;1;1;1;1]; % Enforces x(3) is binary
[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub);
disp(x);

算完了发现结果是

也就是yu=1,yv=1,z1=1,z2=1,对着图看一下

发现最小割,确实就是红线指的那个,最小割也就是3.
说了这么多,我自己会不会算整数规划呢?手算一下试试
首先内点法肯定是不错的方法,可惜手推麻烦,画图又不会。。。。
那么还是先看个例子吧

对于这个问题,直接LP,求得解不满足x1,x2,x3试试整数,由于x1=1.25,那么向上向下各取一个整数边界,即小于等于1和大于等于2,
问题转化

发现P1的结果已经满足x1为整数, 继续转化,其中因为是最小化,如果向上向下都有解,那么选择小的,结果如下

P5时满足条件,则求解完成。
虽然我们这里变量都是0-1变量不过不影响,只是确定的更快而已,那就是如何手撕LP了,选择单纯形法最多用了,试试

只算了一次,还需要迭代,不保证算对。。。但是感觉没算错,有意者参考单纯形法实例

最大流和最小割的转化就是哪个好算用哪个,而最小割一般就是中间两排节点之间的度为INF,这时候也就只能割S到第一排或者第二排到T。
而中间两排节点之间度怎么理解,我觉得就是你吧一个问题转化为网络流问题时,若是存在不可分割的东西,就想象用最小割,而它们之间的边的度就是INF。

例如


这里最明显的就是相邻的必须有一个

其他例子

边的终点必须是被选节点中的点,那么点和边就不可分割了。

画图如下:

网络流中最大流和最小割算法相关推荐

  1. 网络流:最大流,最小割 基本概念及算法

    原文:http://www.cnblogs.com/Booble/archive/2011/03/04/1970453.html 参考:http://community.topcoder.com/tc ...

  2. 网络流之最大流和最小割

    最大流问题 最大流:给定有向图中每条边的最大流量(容量),求从源点到汇点的最大流量. 容量网络: 括号左边代表容量,右边代表流量. 残留网络:流网络中剩余可增加的流量 增广路:满足容量条件的一条流量不 ...

  3. 网络流——最大流和最小割

    最小割问题 ststst割:将节点划分为A,BA,BA,B两个集合,其中源节点s∈As\in As∈A且宿节点t∈Bt\in Bt∈B ststst割的容量:由集合AAA到集合BBB所有出边容量之和. ...

  4. 最大流与最小割(Maxflow与Mincut)

    传统图像主要分割算法: 基于阈值的分割 (1)固定阈值分割 (2)直方图双峰法 (3)迭代阈值图像分割 (4)自适应阈值图像分割 (5)最佳阈值法 2.基于边缘的分割 (1)Canny边缘检测器 (2 ...

  5. 如何快速理解最大流和最小割

    摘要: 割从哪来-------->最大流和最小割之间的等价关系的阐述. 1.问题引入 1.1思考这样一个问题:在给定的图中,如何判断一个源点s到终点t是否有路径存在呢? 我们首先想到的是用BFS ...

  6. 【图割】最大流/最小割算法详解(Yuri Boykov and Vladimir Kolmogorov,2004 )

    本博客主要翻译了Yuri Boykov and Vladimir Kolmogorov在2004年发表的改进最大流最小割算法用于计算机视觉的论文:An Experimental Comparison ...

  7. 最大流最小割经典例题_算法: 最大流与最小割

    什么是最大流 最大流要解决的问题是从 S 到 T 怎么才能最大地将数据运到另一边.这个"数据"可以是水,或者网络数据包.举个例子 在上面这个图中将数据从 S 运到 T,其中边的权值 ...

  8. 最大流,最小割刷题记录

    T1 P2057 [SHOI2007] 善意的投票 题目 https://www.luogu.com.cn/blog/OnMyOwn/OnMyOwn https://www.luogu.com.cn/ ...

  9. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23822  Solved: 6012 [Submit ...

最新文章

  1. 看完就忘!看完就忘!我感觉我要废了
  2. python绘制柱状图,如何改变柱状柱间距,如何设置横纵轴标签(绘制Intel Realsense D435深度误差柱状图)
  3. jvm系列(九):如何优化Java GC「译
  4. 电脑磁盘空间不足怎么办_Mac磁盘总是提示空间不足?学会这几招,瞬间腾出几个G...
  5. 查看Linux下端口被哪个程序占用
  6. 视频教程-程序员面试宝典——助你拿到好offer-招聘/面试
  7. 【导航算法】无人机路径跟踪L1导航算法
  8. c语言自定义函数运用,C语言自定义函数(图文详解)
  9. 蓝桥ROS机器人之51单片机C代码编译和下载
  10. 如何办理杭州市民卡|非杭户籍人员个人申领流程
  11. 网络跳线接续的四种方法
  12. 文本标注工具-brat安装
  13. Maven的下载与配置 和在IDEA中创建Maven的项目
  14. gitlab镜像仓库设置及自动同步代码到服务器实现方式
  15. NFT Insider #62:The Sandbox宣布与狮门影业达成合作,红杉资本继续扩大Web3领域投资
  16. Latex引用参考文献的5种方式
  17. 安装和卸载.deb包
  18. 笔记本电脑锁屏密码能输入,但解锁后键盘不好用
  19. python 查找字符串
  20. Android 默认按键音开关

热门文章

  1. nc文件在ncl中取代nan值为缺省值
  2. scratch3.0-穿越城市的巴士
  3. MySQL 5.7 服务端 错误码 (机翻)
  4. fiddler4使用方法以及相关抓包分析
  5. Android照片墙加强版,使用ViewPager实现画廊效果
  6. WorldView卫星家族简介
  7. 计算机自学知识,计算机基础知识自学
  8. DELPHI BULK INSERT
  9. linux IRQ Management(五)- irq_desc
  10. <artifactId>里面的字符串不能有空格