最大权值闭合子图的证明详解

2023-11-09

前面定义部分转自这篇博客

网络流——最小割求最大权闭合子图

定义

有一个有向图,每一个点都有一个权值(可以为正或负或0),选择一个权值和最大的子图,使得每个点的后继都在子图里面,这个子图就叫最大权闭合子图。
在这里插入图片描述
能选的子图有Ø,{4},{3,4},{2,4},{1,2,3,4},它们的权值分别为0,-1,5,-6,4.
所以最大权闭合子图为{3,4},权值为5.

解法

建立超级源点s,超级汇点t。
所有点权为正数的点i,建边 s->i,容量为点权。
所有点权为负数的点i,建边i->t,容量为点权绝对值。
原图建图后,边容量均为正无穷。
最大权闭合图的权值 = 正权点之和 - (s->t)最大流

在这里插入图片描述
源点s可以理解为最大可获得的权值(即正权点之和)
汇点t可以理解为最大的会损失的权值(负权点之和)

首先我们来说一下把s和i这条边割掉的意义:s到i这条边象征着i这个点,如果割掉表示不选这个点把i和T边割掉表示选这个点因为最小割的意义就是割掉尽量小的边始得T和S不连通

下面开始证明:

首先引入结论,最小割所产生的两个集合中,其源点S所在集合(除去S)为最大权闭合图,接下来我们来说明一些结论。


引入一下简单割的概念:割集的每条边都与S或T关联。(请下面阅读时一定分清最小割与简单割,容易混淆)


第一步
1)证明:最小割为简单割
那么为什么最小割是简单割呢?因为除S和T之外的点间的边的容量是正无穷,最小割的容量不可能为正无穷。所以割边一定和S和T相连,得证。


第二步
2)证明:网络中的简单割与原图中闭合图存在一一对应的关系。(即所有闭合图都是简单割,简单割也必定是一个闭合图)。也就是证明新图和原图之间的关系

1.证明闭合图是简单割(话句话说就是原图中构成闭合图的那些点是直接和S和T相连的):很明显我们建图本身就是直接把点连线到S和T,在S和T连向内部每一个点的每一条边都象征这一个点的是否选取
举个例子:
在这里插入图片描述
假如说我们选择3->4这个闭合图相当于保留s->3并且割掉4->t这条边,保留2->t,割掉S->1.同理其他闭合图也是一样

2.证明简单割是闭合图:首先你要明确我们是在新图上求最小割始得S到T不连通,而且割边只能是简单割,那么假如说我们保留了s到i的某一条边那么为了达到不连通i后继那些j点和T相连的就要割掉(因为不可能割掉i -> j因为其容量为INF)那么通过上面讲每个简单割的意义这里就可以转化成如果选了i这个点i的后继全部都要选上(满足闭合图的概念)
举个例子:
在这里插入图片描述
假如我们保留s->1这条边那么按道理3,2,4这几个点要被保留那么我们要把2->t和4->t这两条边割掉,那么S->3保留,你就会问会不会求解过程把S->3割掉那,你要明白这是最小割S->3这条边对于联通性已经没有影响了,而且这是正权边所以最小割一定不会去割掉这条边


第三步:
证明最小割所产生的两个集合中,其源点S所在集合(除去S)为最大权闭合图。

首先我们记一个简单割的容量为C,且S所在集合为N,T所在集合为M。
则C=M中所有权值为正的点的权值(即S与M中点相连的边的容量)+N中所有权值为负的点权值的绝对值(即N中点与T中点相连边的容量)。记(C=x1+y1);(很好理解,不理解画一个图或想象一下就明白了)

我们记N这个闭合图的权值和为W。

则W=N中权值为正的点的权值-N中权值为负的点的权值的绝对值。记(W=x2-y2);
则W+C=x1+y1+x2-y2。
因为明显y1=y2,所以W+C=x1+x2;
x1为M中所有权值为正的点的权值,x2为N中权值为正的点的权值。

所以x1+x2=所有权值为正的点的权值之和(记为tot).
所以我们得到W+C= tot.整理一下 W = tot-C.
到这里我们就得到了闭合图的权值与简单割的容量的关系。

因为tot为定值,所以我们欲使W最大,即C最小,即此时这个简单割为最小割,此时闭合图为其源点S所在集合(除去S)。得证。

至此,我们就将最大权闭合图问题转化为了求最小割的问题。求最小割用最小割容量=最大流,即可将问题转化为求最大流的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大权值闭合子图的证明详解 的相关文章

  • xss跨站之代码及http only绕过

    什么是http only 在cookie中设置了http only属性 那么通过js代码无法获取cookie 并不能防止xss漏洞 在上一节的靶场网站源代码里面 写上这一串代码就是启动http only 再加上带去cookie的代码 然后我
  • Hibernate工作原理(图解)

    在 Hibernate操作数据库一节的学习中 我们主要涉及到了 Configuration SessionFactory Session Transaction 和 Query 等多个接口 这些接口在 Hibernate 运行时都扮演着十分
  • 货币银行学入门知识

    用IT技术玩金融系列文章 将介绍如何使用IT技术 处理金融大数据 在互联网混迹多年 已经熟练掌握一些IT技术 单纯地在互联网做开发 总觉得使劲的方式不对 要想靠技术养活自己 就要把技术变现 通过 跨界 可以寻找新的机会 创造技术的壁垒 金融
  • ncl泰勒图(均方根误差、标准差、相关系数)

    最近学习了一下泰勒图的做法 对2001年泰勒的文章进行了简单学习 说一点自己的理解 泰勒图一般是用来评估多个模式对观测数据的模拟能力 包括标准差 中心型均方根误差 相关系数这三部分 这三部分可以构建一个三角关系 相关系数是用来量化模式之间的
  • SQLyog安装教程详解

    安装SQLyog的详细步骤 1 复制连接 https pan baidu com s 19DHHrCqvg 0 StazHqGhcg 提取码 1111 2 等待下载 3 解压到新建文件夹 4 点击解压后的X64 右键 以管理员的身份运行 5
  • WEB前端网页设计-Bootstrap5 提示框 & JavaScript 对象

    目录 Bootstrap5 提示框 如何创建提示框 指定提示框的位置 JavaScript 对象 真实生活中的对象 属性和方法 JavaScript 对象 对象定义 实例 实例 对象属性 访问对象属性 实例 1 实例 2 对象方法 实例 实
  • PostgreSQL一些常用命令

    最近一直在学习Postgresql 下面是自己整理的Postgresql的常用命令 连接数据库 默认的用户和数据库是postgres psql U user d dbname 切换数据库 相当于mysql的use dbname c dbna
  • shuffleNet V2

    论文出发点 旨在设计一个轻量级但是保证精度 速度的深度网络 分析当前 1 直接用FLOP来衡量算力 不够准确 因为不同的网路 即使参数量相同 模型大小相同 但是模型速度还是存在差异 改为直接用速度 speed 来衡量 2 直接影响速度的因素
  • 最小二乘法的实现与线性回归的应用

    1 简介 简单线性回归中 您有一个因变量y和一个自变量X 该模型可以表示为 y m x b y mx b y
  • CTF-pwn入门–基础环境安装

    pwn的入门 环境安装 虚拟机安装 Linux ubuntu PWN的题大多数是在Linux上打 先安装一个Ubuntu是成为pwn手的开始 VMware Workstation Pro VMware Workstation Pro官网 U
  • 运行tomcat报错:Address localhost:1099 is already in use

    文章目录 1 报错展示 2 报错原因 3 解决方法 1 报错展示 报错语句 Address localhost 1099 is already in use 表示是1099端口已经被占用 2 报错原因 由于短时间内频繁运行tomcat服务器
  • 计算一个整数N的阶乘

    计算一个整数N的阶乘 时间限制 1Sec 内存限制 128MB 提交 1149 解决 775 题目描述 计算一个整数N的阶乘 输入 一个整数N 0 N 12 输出 整数N的阶乘 样例输入 5 样例输出 120 这是一道简单的c语言练习题 采
  • Linux安装Kafka

    相关链接 http kafka apache org downloads 1 使用Docker安装zookeeper 下载镜像 docker pull zookeeper 3 4 14 创建容器 docker run name zookee
  • python获取当前时间时分秒_python获取当前时间的用法

    1 先导入库 import datetime 2 获取当前日期和时间 now time datetime datetime now 3 格式化成我们想要的日期 strftime 比如 2016 09 21 datetime datetime
  • Qt对象树和QObject的构建/销毁顺序

    文章目录 Qt使用对象树组织QObject QObject的构建 销毁顺序 1 在堆上创建 使用new创建 2 在栈上创建 Qt使用对象树组织QObject 当以一个对象作为父对象创建QObject时 这个对象就会被添加到父对象的child
  • BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding

    参考 BERT原文 1810 04805 BERT Pre training of Deep Bidirectional Transformers for Language Understanding arxiv org 强推 李宏毅202
  • 办公网络问题解决

    1 有关办公网络PC机接入OA网络排查技巧 2 熟练运用 show mac address table show ip arp show arp 能解决80 的办公网络问题 3 arp表项记录了IP MAC 地址的对应关系 4 检查主机是否
  • matlab的narx的使用,matlab NARX做时间序列预测的问题

    NARX 神经网络做一个时间序列预测的时候碰到一些问题 1 目标 用input 178 2 预测output 178 1 数据和程序附后 2 问题 1 训练不多几次就会出现的时候 Maximum MU reached 从而训练停止 这个该如
  • (二)【平衡小车制作】电机驱动(超详解)

    一 硬件设计 1 直流减速电机 直流减速电机 即齿轮减速电机 是在普通直流电机的基础上 加上配套齿轮减速箱 齿轮减速箱的作用是 提供较低的转速 较大的力矩 简单的来说 STM32分配两个IO口给一个直流减速电机 并给予高低电平 来使得电机进

随机推荐

  • Qt容器(QMap/QHash 等)使用详解

    一 Qt容器的遍历器 Qt 的容器类提供了两种风格的遍历器 Java 风格和 STL 风格 每一种容器都有两种 Java 风格的遍历器 一种提供只读访问 一种提供读写访问 容器 只读遍历器 读写遍历器 QList
  • centOS 7下无法启动网卡(systemctl start network)错误解决办法

    遇到的问题 某天虚拟机无法连接ssh 检查发现虚拟机无法上网 执行systemctl start network报错 问题原因 NetworkManager与network冲突 因此停掉前一个服务即可启动network 解决方法 执行以下命
  • matlab 循环保存图片 命名不重复(转载合集仅供学习参考)

    参考一 https blog csdn net jzwong article details 51720859 ABstrategy codes snippets optimize v4 for i 1 n tmp img 1 1 i fi
  • dell计算机运行慢怎么解决方法,戴尔笔记本电脑运行速度慢怎么办?

    戴尔笔记本电脑运行速度慢怎么办 戴尔 Dell 是一家总部位于美国德克萨斯州朗德罗克的世界五百强企业 由迈克尔 戴尔于1984年创立 戴尔以生产 设计 销售家用以及办公室电脑而闻名 不过它同时也涉足高端电脑市场 生产与销售服务器 数据储存设
  • testlink用例转换导入

    testlink用例转换导入 我们在用testlink进行用例管理的时候 发现用例不能用excel进入导入 只支持xml文件格式的导入 这对我们写用例来说是不太方便的 我自己开发了一个testlink的excel用例转xml文件的小工具 便
  • c# 序列化和反序列化

    using System using System Text using System Runtime Serialization using System Runtime Serialization Json using System I
  • Spring Security 跳过登录检查/非页面登录/骗过spring security的 filter 登录检查拦截

    背景 最近在使用Spring security 做一个系统的SSO认证代理 另一个项目组开发的 基于 filter 拦截器检查session中是否已有用户登录信息 如果已在SSO登录的话 则直接跳过SSO的认证 由于Spring secur
  • webpack loader和plugin编写

    1 基础回顾 首先我们先回顾一下webpack常见配置 因为后面会用到 所以简单介绍一下 1 1 webpack常见配置 入口文件 entry app src js index js 输出文件 output filename name bu
  • msvcp140.dll是什么?怎么解决电脑提示msvcp140.dll丢失的问题?(分享解决方法)

    msvcp140 dll是动态链接库文件 是一种不可执行的二进制程序文件 允许程序共享执行特殊任务所需要的代码和其他资源 程序可根据DLL文件中的指令打开 启用 查询 禁用和关闭驱动程序 很多小伙伴在使用电脑软件的时候 有一些问题会搞不明白
  • crontab中执行多条命令

    在使用crontab中执行相关命令的时候存在如下情况 可能需要先更换工作目录然后再执行相关命令 可以在crontab中按照如下格式添加定时任务 00 cd opt task python application py 通过 连接符来执行多条
  • 记录错误 pom文件中<project标签报红

    1 找到本地仓库删除刚刚下载的对应依赖 pom中删除再撤销 若红线依然存在 试试第二步 一般鼠标移到红线上都会有提示 有可能是没有版本号导致的 然后看看是哪一个依赖错了 去本地仓库删了 再重新下载 2 将自己seeting文件中的阿里云镜像
  • WebGL入门前三节(附源码和学习建议)

    在正式进入webgl之前 我想有必要简单了解一下渲染管线 毕竟它贯穿webgl学习的整个过程 渲染管线流程图 除此之外 需简单了解一下webgl着色器简单语法 向量与矩阵 常见内置变量 常见数据类型 常见修饰符 vec3 gl PointS
  • 基于opencv实现人脸识别及签到系统

    首先需要安装opencv dlib face recongnition库 opencv安装起来比较简单 其他两个库的安装请看关于face recognition的安装最简单方式 时间和我都在往前走的博客 CSDN博客 这里代码可以直接用 不
  • UTC、RTC、UNIX时间戳、localtime 理解

    UTC RTC UNIX时间戳 localtime 理解 UTC 时间 UTC是世界协调时间时 UTC 是现在全球通用的时间标准 全球各地都同意将各自的时间进行同步协调 UTC 时间是经过平均太阳时 以格林威治时间GMT为准 地轴运动修正后
  • 集合框架( ArrayList LinkedList)

    集合框架 存储多个数据 对象 使用数组 数组 存储相同数据类型一段连续的空间 限制 定长 添加 删除 统计比较麻烦 存储的是单列的值 学号 学生信息 订单号 订单详情 中文名称 英文名称 集合框架 一些接口和类 java util包 Col
  • 泛型反射,如何用泛型反射获得当前类泛型的具体类型

    有时候我们需要知道当前类所传入的泛型的具体类型而进行下一步操作 这是我们可以使用泛型反射 1 假如Dao层的接口有很多共同的方法 增删改查 我们可以对他进行提取到一个公共接口IBaseDao
  • 地质灾害监测的主要内容

    地质灾害就地质环境或地质体变化的速度而言 可分为突发性地质灾害与缓变性地质灾害两大类 其中崩塌 滑坡 泥石流是地质灾害的主要表现形式 我国是地质灾害多发的国家 全国共有较大型崩塌3000多处 滑坡2000多处 泥石流2000多处 中小规模的
  • 通过JavaAPI访问HBase

    先开始创建表 create emp001 member id address info 放入数据 put emp001 Rain id 31 put emp001 Rain info birthday 1990 05 01 put emp0
  • 九、1~8文章的阶段案例

    一 案例 现在我们来做一个相对综合一点的练习 书籍购物车 案例说明 1 在界面上以表格的形式 显示一些书籍的数据 2 在底部显示书籍的总价格 3 点击 或者 可以增加或减少书籍数量 如果为1 那么不能继续 4 点击移除按钮 可以将书籍移除
  • 最大权值闭合子图的证明详解

    前面定义部分转自这篇博客 网络流 最小割求最大权闭合子图 定义 有一个有向图 每一个点都有一个权值 可以为正或负或0 选择一个权值和最大的子图 使得每个点的后继都在子图里面 这个子图就叫最大权闭合子图 能选的子图有 4 3 4 2 4 1