最大流的算法——Edmonds-Karp算法(最短路径增广算法)

最大流的算法——Edmonds-Karp算法(最短路径增广算法)

 

这里介绍一个最简单的算法:Edmonds-Karp算法 即最短路径增广算法 简称EK算法

 

EK算法基于一个基本的方法:Ford-Fulkerson方法 即增广路方法 简称FF方法

 

增广路方法是很多网络流算法的基础 一般都在残留网络中实现

 

其思路是每次找出一条从源到汇的能够增加流的路径 调整流值和残留网络 不断调整直到没有增广路为止

 

FF方法的基础是增广路定理(Augmenting Path Theorem):网络达到最大流当且仅当残留网络中没有增广路

 

要实现这个算法,就遇到了三个问题:

 

(1)最多要增广多少次?

 

可以证明 最多O(VE)次增广 可以达到最大流 证明略

 

(2)如何找到一条增广路?

 

先明确什么是增广路增广路是这样一条从st的路径 路径上每条边残留容量都为正

 

把残留容量为正的边设为可行的边 那么我们就可以用简单的BFS得到边数最少的增广路

 

(3)BFS得到增广路之后 这条增广路能够增广的流值是路径上最小残留容量边决定的

 

把这个最小残留容量MinCap值加到最大流值Flow同时路径上每条边的残留容量值减去MinCap

 

最后,路径上每条边的反向边残留容量值要加上MinCap

 

 

 

看一个具体的增广路算法的例子吧


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php做一个计算日期之间天数,PHP计算任意两个日期之间的天数

PHP面试题中,关于日期的题目作为基础考题经常出现,下面讨论一下获取两个日期之间的天数的方法。收到一个答案,拆分年、月、日,分别进行减法,然后统计天数,好累。针对低版本的PHP可以用下面的方式搞定&#…

[usaco2004][bzoj3379] 交作业

按距离从小到大排序 f[i][j][0或1]表示在i或j还有i-j没有完成 转移 tmpdp[i][j][0];tmpmin(tmp,max(dp[i][j1][1]a[j1].dist-a[i].dist,a[i].t));tmpmin(tmp,max(dp[i-1][j][0]a[i].dist-a[i-1].dist,a[i].t)); 注意边界 比如:dp[0][i],dp[0][c3]初值应为inf #inclu…

程序员的快速成长之路

在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类("hello world"这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程…

oracle 强制 断开,ORA-01092: ORACLE 例程终止 强行断开连接

今天测试部门的人叫我过去,说是数据库当了,起不来了。我过去看了看情况,做了如下操作SQL> shutdown immediate数据库已经关闭。已经卸载数据库。Oracle 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Global Area 135…

weblogic运行项目_在WebLogic 12c上运行RichFaces

weblogic运行项目我最初以为我可以在几个月前写这篇文章。 但是我最终被不一样的事情所淹没。 其中之一是,它无法像我在4.0版本中那样简单地启动RichFaces展示柜。 有了所有的JMS magic和不同的提供程序检查,这已经成为简单构建和部署它的挑战。 无论如何…

超详细在Ubuntu下安装JDK图文解析

我们选择的是jdk1.6.0_30版本。安装文件名为jdk-6u30-linux-i586.bin. 1、复制jdk到安装目录 (1)假设jdk安装文件在桌面,我们指定的安装目录是:/usr/local/java 。可是系统安装后在/usr/local下并没有java目录,这需要…

oracle 整个表空间迁移,oracle11g迁移表空间

表空间名为sbjc,要从D:\APP\ORACLE\ORADATA\TABLESPACE\SBJC.DBF 迁移到 F:\oracle\oradata\tablespace\SBJC.DBF。 扼要操作步骤: 第一步:登陆数据库 第二步:中止数据库 第三步:在open方式下启动数据库 第四步&#x…

Qt5使用QFtp,二次封装

1、需要的东西 ftp.cpp,ftp.h是二次封装的ftp类,放在工程下包含 QFtp和qftp.h放在D:\Qt5.7.1\5.7\msvc2013\include\QtNetwork; Qt5Ftp.lib和Qt5Ftpd.lib是编译生成的库,放在工程源文件下 2、包含库 #pragma comment(lib,"Qt5Ftpd.lib&q…

无参数泛型方法反模式

最近&#xff0c;有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上。 考虑以下方法&#xff1a; <X extends CharSequence> X getCharSequence() {return (X) "hello"; }尽管不安全的转换看起来有些古怪&#xff0c;并且您可能会猜这里有些问…

oracle数据库升级失败,Oracle 11.2.0.1 rac 升级失败后,数据库降级方案(flashback database)...

升级失败后&#xff0c;数据库降级方案(flashback database)环境&#xff1a;Oracle 11.2.0.1 rac on redhat 5.8Flashback database准备工作查看是否flashback database功能sysRACDB>select log_mode,open_mode,flashback_on fromv$database;LOG_MODEOPEN_MODE …

Ubuntu下安装Oracle11g(图文教程)

由于课程需要&#xff0c;要在Ubuntu下安装一个Oracle&#xff0c;之前都没有装过&#xff0c;所以想通过这篇博文记录一下 1.下载Oracle 11g 下载地址&#xff1a;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index-092322.html 我选择下载的是…

class12_pack_grid_place 放置位置

其中的部分运行效果图&#xff08;程序见序号1&#xff09;&#xff1a; #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------------------------------## 参考资料&#xff1a;# 用 python 和 tkinter 做简单的窗口视窗 - 网易云课堂# https:…

oracle强制执行计划,OBA技能2-Oracle执行计划顺序表连接

小仙我在学习索引执行行为的时候&#xff0c;有个疑惑&#xff1f;那就是索引是找到一个值就马上回表&#xff0c;然后再找下一个值&#xff0c;再回表。比如索引唯一扫描&#xff0c;索引范围扫描&#xff0c;索引全扫描&#xff0c;索引快速扫描。好像都是要回表。尤其是范围…

ubuntu中启动oracle数据库

前期准备&#xff1a;如果你还没有在ubuntu上安装oracle请先看我之前到日志http://blog.csdn.net/backtracker/article/details/66247181. $su oracle $ sqlplus /nolog 将出现如下连接数据库信息&#xff1a; SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 8 10:1…

oracle 输出到页面,利用Xming 将Linux 图形界面输出到Windows上

Linux上安装Oracle 时需要图形界面, 但又不想在服务器上安装图形界面怎么办,这时候就需要用到Xming 这个神器了安装过程比较简单, 直接下一步下一步即可安装完成后先运行, Xlaunch注意:这个No Access Control的勾勾一定要勾上,否则 执行export到Windows主机上时会提示 No proto…

spring 事件模型_Spring–设计领域模型和服务层

spring 事件模型我们将为时间表管理构建应用程序。 因此&#xff0c;让我们首先考虑一些用例和实体。 让我用几个项目符号写它们&#xff1a; 任务由经理分配给员工。 一项任务可以分配给许多员工。 员工将他在某些任务上工作的小时数填充到系统中。 经理/员工查看时间表上的…

log4j/slf4j

log4j的使用 引入log4j.jar包<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> </dependency> 配置log4j.propertieslog4j.rootLoggerINFO,Console,OneFile,errFile #输出到控制…

Ubuntu 12.04下安装Oracle Express 11gR2

Ubuntu 12.04下安装Oracle Express 11gR2 [我的笔记] 参考1&#xff1a;http://www.linuxidc.com/Linux/2012-09/71382.htm 参考2&#xff1a;http://zhjack.blog.163.com/blog/static/14314920137153331286/ 1、点击这里下载Oracle express的安装介质 Oracle Database Express…

选择的按钮:将ToggleButtons用作单选按钮

对于MQTT.fx&#xff0c;我想使用ToggleButtons例如选择MQTT消息或QoS级别的解码&#xff1a; 我发现在ToggleGroup的上下文中&#xff0c;ToggleButton在选择/取消选择方面的行为与RadioButtons不同&#xff1a;与RadioButtons不同&#xff0c;ToggleButtons仍可以设置为未选…

php调用image类提示不存在的字体,php – 无效的字体文件名(imagettfbox)

这个问题一直被问到,但是我找不到我问题的正确答案……作为一个小背景说明,在将类文件从/ application / lib / class移到/库之前,所有代码都运行良好/ class ……我试过玩GDFONTPATH,相对的,绝对路径有和没有文件扩展名无济于事.以下是我们迄今为止尝试的一些行&#xff1a;pu…