当前位置: 首页 > news >正文

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

六、图与网络分析

最大流问题

最大流问题的数学规划模型为: 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 ,否则为无穷。而权重为无穷的弧我们一般会省略。

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

最小费用最大流

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

相关文章:

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

六、图与网络分析 最大流问题 最大流问题的数学规划模型为&#xff1a; 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 vf_{12}f_{13}\\ \begin{cases} f_{12}f_{13}-f_{57}-f_{67}0 \\ f_{13}f_{23}f_{34}f…...

C语言之结构体详解

C语言之结构体详解 文章目录 C语言之结构体详解1. 结构体类型的声明2. 结构体变量的创建和初始化3. 结构体的特殊声明4. 结构体的自引用结构体的自引用匿名结构体的自引用 5. 结构体内存对齐5.1 练习一5.2 练习三 6. 为什么存在内存对⻬? 1. 结构体类型的声明 struct tag {me…...

学习canvas

Canvas是一个基于像素的渲染引擎&#xff0c;它使用JavaScript API在画布上绘制图像。以下是它的一些优点和缺点&#xff1a; 优点&#xff1a; Canvas的渲染速度快&#xff0c;适合处理大量图像和高度动态的图像。 可以直接操作像素&#xff0c;从而能够创建出高质量、流畅的…...

浏览器的渲染原理

以下内容来源于渡一前端大师课&#xff0c;仅作个人学习记录。 渲染的第一步是 解析HTML 解析过程中遇到CSS解析CSS&#xff0c;遇到JS执行JS。为了提高解析效率&#xff0c;浏览器在开始解析之前&#xff0c;会启动一个预解析的线程&#xff0c;率先下载HTML中的外部CSS文件和…...

从 JSON 转 Java 实体的多种方法详解

将 JSON 数据转换为 Java 对象是现代应用程序开发中常见的任务。在 Java 中&#xff0c;有多种方法可以实现这一目标。本文将详细介绍几种常见的方法&#xff0c;以及它们的优缺点。 1. 手动映射&#xff08;Manual Mapping&#xff09; 手动映射是最基础的方法之一&#xff…...

数据库的多表查询(MYSQL)表表联立

根据以上三张表格&#xff0c;对三张表格进行不同的联立&#xff0c;查询并显示符合条件的内容。 1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。 mysql> SELECT d.deptno AS 部门编号, d.dname as 部门名称, d.loc as 部门位置, COUNT(e.emp…...

P8650 [蓝桥杯 2017 省 A] 正则问题(dfs )

多重括号&#xff0c;利用回溯来对上一层括号中的内容进行反馈 实现&#xff1a; 若为 x 长度加一 若为 &#xff08; 进入递归计算 (计算相当于子表达式) 若为 &#xff09; 结束当前递归 若为 | …...

【ESP32】手势识别实现笔记:红外温度阵列 | 双三次插值 | 神经网络 | TensorFlow | ESP-DL

目录 一、开发环境搭建与新建工程模板1.1、开发环境搭建与卸载1.2、新建工程目录1.3、自定义组件 二、驱动移植与应用开发2.1、I2C驱动移植与AMG8833应用开发2.2、SPI驱动移植与LCD应用开发2.3、绘制温度云图2.4、启用PSRAM&#xff08;可选&#xff09;2.5、画面动静和距离检测…...

No matching version found for @babel/compat-data@^7.23.5 处理

npm ERR! notarget No matching version found for babel/compat-data^7.23.5 处理 报错信息 npm WARN ERESOLVE overriding peer dependency npm ERR! code ETARGET npm ERR! notarget No matching version found for babel/compat-data^7.23.5. npm ERR! notarget In most …...

手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案

随着科技的不断发展&#xff0c;三防手持机作为一种多功能设备&#xff0c;正逐渐在各行业得到广泛应用。这款手持机采用高性能处理器&#xff0c;支持高精度北斗定位和工业本安防爆功能&#xff0c;并具备IP67级防水防尘性能和1.5米防跌落能力。因此&#xff0c;它在仓储管理、…...

蓝桥杯算法心得——仙界诅咒(dfs)

大家好&#xff0c;我是晴天学长&#xff0c;搜索型的dfs&#xff0c;差点开二维矩阵了&#xff0c;仔细一想&#xff0c;没那么夸张啊&#xff0c;哈哈哈&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1…...

List集合,遍历,数据结构

一.List常见的方法&#xff1a; 二. List集合的遍历方式 除了 迭代器遍历 增强for遍历 Lambda表达式遍历&#xff0c;还有自己独有的普通for遍历&#xff0c;列表迭代器遍历 1.迭代器遍历 2.增强for遍历 3.Lambda表达式遍历 4.普通for遍历 5.列表迭代器遍历 列表迭代器相对于…...

2的幂运算

2的幂 描述 : 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 题目 : LeetCode 231.2的幂 : 231. 2 的幂 分…...

优先队列经典例题leetcode思路代码详解

目录 leetcode215题.数组中的第k个最大元素 leetcode347题.前k个高频元素 leetcode295题.数据流的中位数 对优先队列感兴趣的朋友可以去看我上一篇文章。 优先队列基础讲解-CSDN博客 leetcode215题.数组中的第k个最大元素 215. 数组中的第K个最大元素 - 力扣&#xff08;…...

新型Python环境与依赖管理工具——pipenv

文章目录 pipenv介绍pipenv安装pipenv使用创建虚拟环境删除虚拟环境安装依赖查看包之间的依赖图卸载依赖在虚拟环境中执行命令shell环境下通过requirements.txt安装依赖导出requirements.txt文件查看虚拟环境的路径 pipenv介绍 pipenv可以看做是pip和virtualenv的组合体&#…...

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「内网穿透」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…...

kendo-splitter动态分配分隔框大小

通过size方法&#xff0c;动态改变框大小&#xff0c;参考链接&#xff1a;https://docs.telerik.com/kendo-ui/api/javascript/ui/splitter/methods/size vue画面 <kendo-button type"primary" click"changePane">button</kendo-button><…...

网站提示不安全?

随着互联网的普及和发展&#xff0c;网络安全问题日益严重。黑客攻击、数据泄露、恶意软件等问题层出不穷&#xff0c;给企业和个人带来了巨大的损失。在这个背景下&#xff0c;确保网站安全显得尤为重要&#xff0c;而使用SSL证书是解决这些问题的有效措施。 什么是SSL证书&am…...

C# 泛型编译特性对性能的影响

C#作为一种强类型语言&#xff0c;具有丰富的泛型支持&#xff0c;允许开发者编写可以应对不同数据类型的通用代码。然而&#xff0c;在泛型编译时&#xff0c;针对结构和类作为泛型参数时&#xff0c;会对性能产生不同的影响。 泛型编译行为 在C#中&#xff0c;泛型编译行为取…...

11-30 JavaWeb

修改与删除操作 防止空指针异常 localhost:8080 -> 分页查询 修改流程&#xff1a;(先查后改(两个servlet)) 修改&#xff1a; 传用户id(用户id怎么得到 -> 循环一次得到一个user 对象 user对象里用user.getId()得到用户id) UpdateUserQueryServlet.java &#xff08;…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...