【管理运筹学】背诵手册(六)| 图与网络分析(最大流问题,最小费用最大流问题)

六、图与网络分析

最大流问题

最大流问题的数学规划模型为: max ⁡ v = f 12 + f 13 { f 12 + f 13 − f 57 − f 67 = 0 f 13 + f 23 = f 34 + f 35 . . . 0 ≤ f i j ≤ c i j \max v=f_{12}+f_{13}\\ \begin{cases} f_{12}+f_{13}-f_{57}-f_{67}=0 \\ f_{13}+f_{23}=f_{34}+f_{35} \\ ...\\ 0\leq f_{ij}\leq c_{ij} \end{cases} maxv=f12+f13 f12+f13f57f67=0f13+f23=f34+f35...0fijcij 第一个约束表示从起点流出的流量等于流入终点的流量;最后一个为容量限制条件;中间的约束为中间点的平衡条件。

满足容量限制条件和平衡条件(起点、终点和中间点)的网络流称为可行流,可行流总是存在的,如零流。

定义网络 G G G 中的一条初等链 μ \mu μ(所有顶点均不相同),方向为从起点到终点,若链上有弧与 μ \mu μ 方向一致,称为前向弧;若有弧与 μ \mu μ 的方向相反,称为后向弧。网络中 f i j = c i j f_{ij}=c_{ij} fij=cij 的弧称为饱和弧 f i j < c i j f_{ij}<c_{ij} fij<cij 的弧称为非饱和弧, f i j = 0 f_{ij}=0 fij=0 的弧称为零流弧

若某条链中所有前向弧非饱和,后向弧非零,称其为一条增广链

可行流为最大流的充要条件是不存在增广链。

从起点 v s v_s vs 到终点 v t v_t vt 的最大流的流量,等于分离 v s , v t v_s,v_t vs,vt 的最小截集的容量。

寻找最大流的标号法,称为 2F 算法。可分为两个过程,一是标号过程,二是调整过程。

标号过程先给起点标上 ( 0 , + ∞ ) (0,+\infty) (0,+) ,若在前向弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上, f i j < c i j f_{ij}<c_{ij} fij<cij ,则给 v j v_j vj 标号 ( v s , l ( v j ) ) (v_s,l(v_j)) (vs,l(vj)) ,其中 l ( v j ) = min ⁡ { l ( v i ) , c i j − f i j } l(v_j)=\min\{l(v_i),c_{ij}-f_{ij}\} l(vj)=min{l(vi),cijfij} ;若在后向弧 ( v j , v i ) (v_j,v_i) (vj,vi) 上, f i j > 0 f_{ij}>0 fij>0 ,则给 v j v_j vj 标号 ( − v i , l ( v j ) ) (-v_i,l(v_j)) (vi,l(vj)) ,其中 l ( ( v j ) = min ⁡ { l ( v i ) , f i j } l((v_j)=\min\{l(v_i),f_{ij}\} l((vj)=min{l(vi),fij}

调整过程的调整量为终点的标号,令前向弧加上这个调整量,后向弧减去这个调整量。

当出现有多个收发点时,可以虚拟一个总发点和总收点或把所有收发点看成一个整体,先解决外部的流量分配,再解决整体内部的流量分配。当网络为无向图时,可以考虑用枚举法用最小截求最大流。标准的最大流问题应只有弧有容量限制,当出现某个节点也有容量限制时,应进行转换,将其分为两个节点 λ , μ \lambda,\mu λ,μ 。原来流入的弧全部连接到 λ \lambda λ ,原来流出的点全部从 μ \mu μ 节点流出。

最小费用流

链的费用为链中前向弧的费用减去后向弧的费用。所有增广链中费用最小的链称为最小费用增广链

定理:若 f f f 是流量为 V ( f ) V(f) V(f) 的最小费用流, μ \mu μ 是关于 f f f 的从 v s v_s vs v t v_t vt 的一条最小费用增广链,则 f f f 经过 μ \mu μ 调整流量后得到新的可行流 f ′ f' f f ′ f' f 一定是流量为 V ( f ) + θ V(f)+\theta V(f)+θ 的可行流中的最小费用流。

因此我们可以从某个初始的最小费用可行流(一般为零流)开始,寻找最小费用增广链,然后按照最大流的标号法,不断调整到目标流量。

初始的可行流好找,题目给了就用题目的,没给就用零流。那最小费用增广链怎么找?如果把每条弧的费用看成权,这就相当于求起点到终点的最短路。但是由于增广链中可能还有后向弧,无法直接利用最短路算法,因此需要构造一个有向网络 L ( f ) L(f) L(f)

构造的方法为:顶点仍然是原网络中的顶点,原来的每条弧变成两个方向相反的弧,正向弧如果非饱和,权重为费用 w i j w_{ij} wij ,否则为无穷;后向弧如果非零,权重为 − w i j -w_{ij} wij ,否则为无穷。而权重为无穷的弧我们一般会省略。

根据初始可行流,我们构造一个网络,找起终点的最短路,在这条最小费用增广链上按照最大流算法调整,得到新流。根据新流又可以构造网络,如此循环。当出现找不到最短路时,说明已经达到最大流,如果此时的流量仍然小于目标流量,说明不存在流量为目标流量的最小费用流。

最小费用最大流

此时没有目标流量的要求,因此要一直寻找最短路,直到找不到为止。

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

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

相关文章

虚拟数据生成_以Python为工具

生成虚拟数据_以Python为工具 生成虚拟数据技术在现实生活中具有多个重要的应用领域。它为数据隐私保护、机器学习算法开发、数据处理和可视化等方面提供了实用且有价值的解决方案。尤其是能满足定制化需求的虚拟数据&#xff0c;在预期的方向上让数据定向随机。 &#x1f339…

原生GPT本地及云端部署方式保姆级教程

前提条件 部署必须要有一个超过1年的Github账号 本地服务部署 运行效果 部署方法 下载安装包 暂时无法在飞书文档外展示此内容 GitHub授权登录&#xff1a; https://dash.pandoranext.com/ 登录后是这个样子&#xff1a; 复制下面红框里面这个License Id 编辑Config.js…

flutter开发实战-轮播Swiper更改Custom_layout样式中Widget层级

flutter开发实战-轮播Swiper更改Custom_layout样式中Widget层级 在之前的开发过程中&#xff0c;需要实现卡片轮播效果&#xff0c;但是卡片轮播需要中间大、两边小一些的效果&#xff0c;这里就使用到了Swiper。具体效果如视频所示 添加链接描述 这里需要的效果是中间大、两边…

面试问题--Linux网络编程

Linux网络编程涉及在Linux操作系统上使用套接字&#xff08;socket&#xff09;等工具进行网络通信。以下是一些与Linux网络编程相关的主题&#xff1a; 套接字编程&#xff1a; 在Linux中&#xff0c;套接字是网络编程的基础。可以使用C语言中的socket库来创建套接字。套接字…

【人工智能Ⅰ】实验3:蚁群算法

实验3 蚁群算法的应用 一、实验内容 TSP 问题的蚁群算法实现。 二、实验目的 1. 熟悉和掌握蚁群算法的基本概念和思想&#xff1b; 2. 理解和掌握蚁群算法的参数选取&#xff0c;解决实际应用问题。 三、实验原理 1&#xff0e;算法来源 蚁群算法的基本原理来源于自然界…

C++学习 --谓词

目录 1&#xff0c; 什么是谓词 1-1&#xff0c; 一元谓词 1-2&#xff0c; 二元谓词 1&#xff0c; 什么是谓词 返回bool类型的仿函数&#xff0c; 叫着谓词&#xff0c; 分为一元谓词和二元谓词 1-1&#xff0c; 一元谓词 operator()接收一个参数&#xff0c;叫着一元谓…

python第1天之常识及环境安装

前言&#xff1a; 当谈到编程语言的流行度时&#xff0c;Python绝对是其中之一。Python是一种高级编程语言&#xff0c;其语法简单易懂&#xff0c;适用于各种不同的应用领域&#xff0c;包括Web开发、数据分析、人工智能等。在本文中&#xff0c;我们将探讨一些关于Pyth…

【JavaScript】3.2 JavaScript性能优化

文章目录 1. 避免全局查找2. 避免不必要的属性查找3. 使用快速的JavaScript方法4. 避免不必要的DOM操作5. 使用Web Workers进行后台处理总结 性能优化是任何编程语言的重要组成部分&#xff0c;JavaScript也不例外。在这个章节中&#xff0c;我们将探讨如何优化JavaScript代码&…

GAN:WGAN

论文&#xff1a;https://arxiv.org/pdf/1701.07875.pdf 发表&#xff1a;2017 WGAN 算法流程 从GAN 到 WGAN 的转变 相比于原始 GAN&#xff0c;WGAN 只需要修改以下几点&#xff0c;就能使得训练更稳定&#xff0c;生成质量更高&#xff1a; 1. 此时的判别器相当于做回归…

【DDD】领域驱动设计总结——如何构造领域模型

文章目录 一 分离领域二 领域对象分类2.1 实体(ENTITY)2.2 值对象(VALUE OBJECT)2.3 服务(SERVICE)2.4 模块&#xff08;&#xff2d;ODULE&#xff09; 三 管理领域对象的生命周期3.1 聚合&#xff08;AGGREGATE&#xff09;3.2 工厂&#xff08;FACTORY&#xff09;3.3 存储库…

记i18n ally工具检测语言失败的一则思路

情况 只有某个文件检测不到汉字&#xff0c;其余都可以检测出来&#xff0c;困扰许久&#xff0c;发个博客记一下思路 解决方法&#xff1a; 1、肯定不是i18n ally工具的问题&#xff0c;因为其他的vue都能检测成功 2、是这个文件的问题 采用排除法 先删掉所有代码&#…

《Effective C++》条款27

尽量少做转型动作 class A { public:A(int x) :a(x) {};virtual void add(){a;} private:int a; }; class B :public A { public:B(int x) :b(x),A(x) {};virtual void add(){static_cast<A>(*this).add();b;}private:int b; }; 如上描述把子类转型为A类&#xff0c;调用…

解决keil右键Go To Definition跳转不过去的问题

解决&#xff1a; 在魔法棒中如图所示打上√

rabbitmq技术

1&#xff0c;docker运行rabbitmq docker run --restartalways -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq 2&#xff0c;新增管理员用户 rabbitmq服务&#xff0c;添加用户以及授权_rabbitmq添加用户授权_ROBOT玲玉的博客-CSDN博客

flask web开发学习之初识flask(二)

文章目录 一、创建程序实例并注册路由1. 为视图绑定绑定多个URL2. 动态URL 二、启动开发服务器1. 自动发现程序实例2. 管理环境变量3. 使用pycharm运行服务器4. 更多的启动选项5. 设置运行环境6. 调试器7. 重载器 一、创建程序实例并注册路由 app.py # 从flask包中导入flask类…

NoSQL 数据建模错误会降低性能

数据建模错误是破坏性能的最简单方法之一。当您使用 NoSQL 时&#xff0c;特别容易搞砸&#xff0c;&#xff08;讽刺的是&#xff09;NoSQL 往往用于对性能最敏感的工作负载。NoSQL 数据建模最初可能看起来非常简单&#xff1a;只需对数据进行建模以适应应用程序的访问模式。但…

Elastic Search

ElasticSearch 持续更新中… 选择es的原因 在数据量非常大的时候&#xff0c;业务进行模糊查询会导致索引失效&#xff0c;查询效率低下&#xff0c;使用es进行查询&#xff0c;可以提高查询速度。 text和keyword类型的区别 keyword 类型是不会分词的&#xff0c;直接根据字…

矢量图与位图区别

文章目录 目的区别 目的 了解矢量图与位图区别。 区别 矢量图和位图是两种不同类型的图形图像&#xff0c;它们之间的主要区别在于存储和表示图像的方式&#xff0c;以及在不同应用场景下的优势和劣势。 项目Vector GraphicsBitmap存储方式矢量图使用数学公式和几何图形的描…

linux /proc 文件系统

/proc系统是一个伪文件系统&#xff0c;它只存在内存当中&#xff0c;而不占用外存空间&#xff0c;以文件系统的方式为内核与进程提供通信的接口。 /proc目录下有很多以数字命名的目录&#xff0c;每个数字代表进程号PID它们是进程目录。系统中当前运行的每一个进程在/proc下都…

【C++】异常处理 ② ( 异常捕获类型 | 异常捕获机制 - 严格匹配异常类型 | 未知异常捕获 - 不知道异常类型 )

文章目录 一、异常捕获机制 - 严格匹配异常类型1、异常捕获机制 - 严格匹配异常类型2、代码示例 - 异常捕获严格匹配异常类型 二、异常捕获机制 - 未知异常捕获1、未知异常捕获 - 不知道异常类型2、代码示例 - 未知异常捕获 一、异常捕获机制 - 严格匹配异常类型 1、异常捕获机…