最小割最大流算法matlab,matlab练习程序(最大流/最小割)
学习这个算法是为学习图像处理中的图割算法做准备的。
基本概念:
1.最大流是一个有向图。
2.一个流是最大流,当且仅当它的残余网络中不包括增广路径。
3.最小割就是网络中所有割中值最小的那个割,最小割是不唯一的,不过最小割的值是唯一的。
4.最大流的流量等于某一最小割的容量。
算法思想就是Ford-Fulkerson方法。
具体流程:
1.首先使用广度优先搜索找到源节点到汇节点的一条路径,为增广路径。
2.如果找不到新的从源到汇的增广路径,则上一次求得的网络就是最大流,否则向下执行。
3.找出增广路径中最小的路径的值。
5.用路径中最小的值构造最大流网络,原网络包含这个网络。
4.将增广路径中所有的路径减去最小路径这个值,形成新的网络图。
6.对新的网络图继续执行第1步。
网络图如下,没什么好办法形象表示。我比较懒,不想画图了,真想看明白过程就看算法导论405页。
原网络:
最大流:
matlab代码如下:
clear all;close all;clc
%初始化邻接压缩表,算法导论405页的图
b=[1 2 16;1 4 13;2 3 12;2 4 10;3 4 9;3 6 20;4 2 4;4 5 14;5 3 7;5 6 4];
m=max(max(b(:,1:2))); %压缩表中最大值就是邻接矩阵的宽与高
A=compresstable2matrix(b); %从邻接压缩表构造图的矩阵表示
netplot(A,1);
maxflow=zeros(m,m);while 1%下面用广度优先搜索找增广路径
flag=[]; %相当于closed表,已访问过的节点
flag=[flag 1];
head=1;
tail=1;
queue=[]; %队列,相当于open表,将要访问的节点
queue(head)=1;
head=head+1;
pa=zeros(1,m); %每个节点的前趋
pa(1)=1; %源节点前趋是自己while tail~=head %广度优先搜索,具体细节就不注释了
i=queue(tail);for j=1:mif A(i,j)>0 && isempty(find(flag==j,1))
queue(head)=j;
head=head+1;
flag=[flag j];
pa(j)=i;end
endtail=tail+1;end
if pa(m)==0%如果搜索不到汇节点,退出循环break;endpath=[];
i=m; %从汇节点开始
k=0; %路径包含的边的个数while i~=1%使用前趋构造从源节点到汇节点的路径
path=[path;pa(i) i A(pa(i),i)]; %存入路径
i=pa(i); %使用前趋表反向搜寻,借鉴Dijsktra中的松弛方法
k=k+1;endMi=min(path(:,3)); %寻找增广路径中最小的那条边for i=1:k
A(path(i,1),path(i,2))=A(path(i,1),path(i,2))-Mi; %增广路径中每条路径减去最小的边
maxflow(path(i,1),path(i,2))=maxflow(path(i,1),path(i,2))+Mi; %最大流,原网络包含这个网络,我只能这样表示了end%使用新的图A进入下一循环,从新开始找增广路径endfigure;
netplot(maxflow,1)
这里没有连通的路径值为0.
最小割最大流算法matlab,matlab练习程序(最大流/最小割)相关推荐
- matlab最小费用最大流函数,最小费用最大流算法通用Matlab程序
下面的最小费用最大流算法采用的是"基于Floyd最短路算法的Ford和Fulkerson迭加算法",其基本思路为:把各条弧上单位流量的费用看成某种长度,用Floyd求最短路的方法确 ...
- 限流算法-常见的4种限流算法
首先我们先来看看什么是限流? 限流是指在系统面临高并发.大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性. 另一种解释:在计算机网络中,限流就是控制网络接口发送或接收请求的速率, ...
- 最大流算法的Matlab实现
这学期在上<运筹与优化>这门课,这周上机作业是用Matlab实现最大流算法,用BFS搜索算法遍历迭代. 算法原理请自行百度,以下为代码: clear all; close all; clc ...
- Redis(六)——限流算法:滑动时间窗口限流和漏斗限流
本文主要总结自<redis深度历险> 限流的意义 限流一般是指在一个时间窗口内对某些操作请求的数量进行限制,比如一个论坛限制用户每秒钟只能发一个帖子,每秒钟只能回复5个帖子.限流可以保证系 ...
- matlab最小费用最大流函数,Matlab最小费用最大流算法通用程序
下面的最小费用最大流算法采用的是"基于Floyd最短路算法的Ford和Fulkerson迭加算法",其基本思路为:把各条弧上单位流量的费用看成某种长度,用Floyd求最短路的方法确 ...
- mcra matlab,噪声估计的算法及matlab实现毕业设计
噪声估计的算法及matlab实现毕业设计 (53页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 I噪声估计的算法及MATLAB实现毕业设计 ...
- 【限流02】限流算法实战篇 - 手撸一个单机版Http接口通用限流框架
本文将从需求的背景.需求分析.框架设计.框架实现几个层面一步一步去实现一个单机版的Http接口通用限流框架. 一.限流框架分析 1.需求背景 微服务系统中,我们开发的接口可能会提供给很多不同的系统去调 ...
- 【限流01】限流算法理论篇
微服务就是将复杂的大应用拆分成小的应用,这样做的好处是各个应用之间独立开发.测试.上线,互不影响.但是服务拆分之后,带来的问题也很多,我们需要保障微服务的正常运行,就需要进行服务治理.常用手段有:鉴权 ...
- 什么是限流?为什么会限流呢?常见的限流算法【固定窗口限流、滑动窗口限流、漏桶限流、令牌桶限流】是什么呢?
什么是限流?为什么会限流呢?常见的限流算法[固定窗口限流.滑动窗口限流.漏桶限流.令牌桶限流]是什么呢? 什么是限流? 为什么会限流? 1. 固定窗口限流算法 1.1 什么是固定窗口限流算法 1.2 ...
- 打开计算机无法最小化,软件一打开就最小化到任务栏怎么办_电脑打开程序它就最小化的解决方法...
最近有朋友问小编软件一打开就最小化到任务栏怎么办的问题,为什么电脑打开软件自己变成最小化呢?其实有很多朋友都遇到过软件打开直接最小化打不开了的问题,那么窗口一直最小化打不开的解决方法是什么呢?别着急, ...
最新文章
- ps aux详解(进程状态说明)
- 阿里云Redis集群版简要介绍
- 鸿蒙51单片机,基于C51系列单片机的交通控制系统设计
- 训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~
- C++期末实践程序设计与数组作为参数的注意事项
- 最困难的是带着自己的选择生活下去
- 李彦宏告诫年轻人:向前看两年
- 【Gulimall+】免费白嫖内网穿透:小米球ngrok
- emule应用及原理(转载)
- System.Data.SqlClient.SqlException: 用户'opper\ASPNET' 登录失败的解决办法!
- 拳皇世界6月13服务器维护,拳皇世界闪退怎么办 对症下药马上好
- android killer 连接模拟器,AndroidKiller怎么连接夜游神手机模拟器的方法教程
- 计算机及相关经典书籍收集
- 2021直播电商下半场,“网易严选们”为何成主播良港?
- 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)
- 企业CIO如何做好软件资产管理及优化
- 如何做好大数据监测和舆情案例分析工作的办法
- Maven之查找依赖信息的网站
- python读取串口数据 绘图_使用Python串口实时显示数据并绘图的例子
- 谈谈:高端网站定制开发的流程和步骤有哪些?
热门文章
- 使用powershell命令,为exchange 2007用户配置邮箱数据
- Java多线程篇之List与Collections集合工具类
- androidru使用adb启动activity和monkeyrunner启动activity
- android HandlerThread源码解析
- android camera 竖直拍照 获取竖直方向照片 做缩放处理
- [2018.03.13 T2] 过河(river)
- Oracle的imp、exp导入导出命令
- 二年级计算机考试题,二年级计算机笔测试题(XX-XX第一学期
- mysql数据库rpm包安装_Linux rpm包安装MySQL数据库问题总结
- pythonsuper多重继承_解决python super()调用多重继承函数的问题