[图论]---[网络流]---最大权闭合子图

2023-11-17

最大权闭合子图

闭合图的概念

闭合图建立在有向图之上,对于 G = (V, E) 选取一个点的子集 V ’ ,V ’ 的任意一点的所有能到达的点也在集合 V ’ 内,则称 V ’ 为闭合子图。
最大权闭合子图即在G的所有闭合子图中,点权和最大的。
在这里插入图片描述

最大权闭合子图的求法

构建流量网络,将源点S与所有权值为正的点连一条边,容量为其权值;将权值为负的点向汇点 T 连一条容量为其点权绝对值的边。
原图中的边保留,容量设为INF。
上图所构建出的网络流图如下:
在这里插入图片描述

结论

结论:最小割所产生的两个集合中,源点S所在集合(除去S点)是原图的最大权闭合子图。

证明

引理1:上述方法构造的网络流图中,最小割是简单割(割集的每条边都与S或T相关联)
证明:易证。

引理2:网络流图中的简单割,与原图中的闭合图存在一一对应的关系(即所有闭合图对应一个简单割,简单割也对应一个闭合图)。
证明:
(1):如果闭合图不是简单割,那么说明有一条边容量为INF,则说明闭合图中有一条出边的终点不在闭合图中,矛盾。
(2):因为简单割不含INF的边,所以不含有连向另一个集合(除T)的点,所以其出边的终点都在简单割内部,符合闭合图定义。

证明最小割的两个集合中,源点S所在的集合是最大权闭合子图:
记:

  1. 一个简单割的容量为 C
  2. 源点S所在集合为N
  3. T所在集合为M

则:C = S与M中相连边的容量+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 = TOT-C
这就是闭合图权值和简单割容量的关系
TOT一定,要使W最大,那么C最小,此时简单割为最小割,闭合图为源点S所在集合。

例题

模板: 洛谷P3410 拍照.
同上,模板:洛谷P2762 太空飞行计划问题.
同上,模板:洛谷P4174 [NOI2006]最大获利.

这三个题目建模可以说一模一样,属于简单的最小割。下面的几道题就需要 动(diao) 点(dian) 脑(tou) 子(fa) 了。

思维: CF311E Biologist.
建模较难的最大权闭合子图: 洛谷P2805 [NOI2009]植物大战僵尸.

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

[图论]---[网络流]---最大权闭合子图 的相关文章

  • 【C语言】图的邻接表——超详细解析

    图的邻接表 我们重点分析一下无向图 邻接表 我们如何将图中所有顶点和边建立起联系 1 我们发现 V0这个顶点与V1和V3相连 通过右边的邻接表可以看到会出现一个以 V0为头结点的单链表 后面连接的元素就是V1和V3 在顶点数组中的下标 2
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-RC-u5 树与二分图

    2022 RoboCom 世界机器人开发者大赛 本科组 省赛 RC u5 树与二分图 文章目录 2022 RoboCom 世界机器人开发者大赛 本科组 省赛 RC u5 树与二分图 题目描述 输入格式 输出格式 输入样例 输出样例 思路 A
  • UVA-1601 万圣节后的早晨 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态 广度优先遍历 找到终点即为最短次数 注意 一次可以移动多个点 但是每个点只能移动一步 在同一次中 B可
  • hdu 2586 How far away ?

    Problem acm hdu edu cn showproblem php pid 2586 Meaning 给一棵 n 个点的树 和 n 1 条边的边权 多次询问树上两点的距离 Analysis 以任意顶点为根 DFS 预处理出所有结点
  • lambda

    外部变量访问方式说明符 不捕获任何变量 以引用方式捕获所有变量 用值的方式捕获所有变量 可能被编译器优化为const foo 以引用捕获foo 但其余变量都靠值捕获 foo 以值捕获foo 但其余变量都靠引用捕获 bar 以值方式捕获bar
  • [STL]vector常见用法详解

    目录 引入 常见用法介绍 1 vector的定义 2 vector容器内元素的访问 3 vector常用函数实例解析 1 push back 2 pop back 3 size 4 clear 5 insert 6 erase vector
  • Road Construction POJ - 3352(tarjan双连通缩点模板)

    题目描述 给一个无向连通图 至少添加几条边使得去掉图中任意一条边不改变图的连通性 即使得它变为边双连通图 include
  • 图论17(Leetcode864.获取所有钥匙的最短路径)

    用二进制表示获得的钥匙 假设n 钥匙个数 000000000代表没有钥匙 0000000001代表有idx为1的钥匙 0000000011代表有idx 1 2的钥匙 这方法巧妙又复杂 代码 class Solution static int
  • Financial Crisis【点双连通分量】

    题目链接 HDU 3749 你以为学了Tarjan会写几个边双就真的理解什么是双连通分量了吗 我原来真的不懂什么叫做点双BCC 不过这都没有关系 解决了这个问题之后 我终于知道了什么叫做点双连通分量了 这是一个绝对绝对经典的问题 首先讲一下
  • AcWing 378. 骑士放置(最大独立集&&匈牙利算法)

    输入样例 2 3 0 输出样例 4 解析 题意为求最大独立集 即为总点数 最小点覆盖 include
  • [UVA1364

    评测地址 网址1 网址2 题目描述 题意 给出n位骑士 然后有m个关系 每个关系以格式 a b a b a b给出 表达骑士 a a
  • 《算法图解》读书笔记(二)

    第六章 图 广度优先搜索 1 解决最短路径问题 shortest path problem 的算法被称为广度优先搜索 breadth first search 2 图由节点 node 和边 edge 组成 一个节点可能与众多节点直接相连 这
  • [NOI 2015复习][BZOJ 1509][NOI 2003]逃学的小孩(树的直径)

    题目链接 http www lydsy com JudgeOnline problem php id 1509 题目大意 要从一棵树中找出三个点 X Y Z X Y Z 使得 min dis A C dis B C dis A B min
  • UVA-10603 倒水问题 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 使用广度优先搜索和优先队列 如果找到最小的点则退出 找不到就遍历所有的情况 include
  • Two Arithmetic Progressions

    Two Arithmetic Progressions 题目链接 题意 思路 AC代码1 include
  • 1345:香甜的黄油(Dijkstra)---信息学奥赛一本通

    题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法 糖 把糖放在一片牧场上 他知道N 1 N 500 只奶牛会过来舔它 这样就能做出能卖好价钱的超甜黄油 当然 他将付出额外的费用在奶牛上 农夫John很狡猾 像以前的巴甫洛夫 他知道
  • 714阿里巴巴模拟面试

    介绍一下数据库分页 https www nowcoder com questionTerminal 3577280c810546658f06f19c01ff0345 给定一棵树 求出这棵树的直径 即两个节点距离的最大值 应该是左右子树遍历深
  • 图论--最近公共祖先LCA

    最近公共祖先LCA LCA Least Common Ancestors 即最近公共祖先 是指这样一个问题 在有根树中 找出某两个结点u和v最近的公共祖先 另一种说法 离树根最远的公共祖先 最近公共祖先是相对于两个节点来说的 一般来说 最近
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 数模培训第二周——图论模型

    图论中最短路算法与程序实现 图论中的最短路问题 包括无向图和有向图 是一个基本且常见的问题 主要的算法有Dijkstra算法和Floyd算法 Floyd算法 简介 Floyd Warshall算法 英语 Floyd Warshall alg

随机推荐

  • 牛客-中等及基础难度python

    5进制转换 写出一个程序 接受一个十六进制的数 输出该数值的十进制表示 coding utf 8 def main nums 16进制对照字典 num dict 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
  • AntV可视化图表G2-柱状图

    文章目录 前言 快速上手 特性 安装 浏览器引入 npm 安装 开始使用 浏览器引入方式 1 创建 div 图表容器 2 编写图表绘制代码 完整代码 在线代码 前言 G2 是一套基于可视化编码的图形语法 以数据驱动 具有高度的易用性和扩展性
  • 《Real-Time Rendering 3rd》提炼总结 RTR3读书笔记

    Real Time Rendering 3rd 提炼总结 毛星云 https zhuanlan zhihu com p 34207965 2 5 几何着色器 The Geometry Shader 几何着色器可以改变新传递进来的图元的拓扑结
  • npm 查看安装了哪些包的相关指令

    npm 查看安装了哪些包 指令1 npm list depth 0 depth 表示深度 我们使用的模块会有依赖 深度为零的时候 不会显示依赖模块 这个指令可以用来 显示 出我们的项目中安装了哪些模块 其实就是 package json 文
  • Linux网络服务:部署YUM仓库与NFS服务

    目录 一 理论 1 部署YUM仓库服务 2 NFS共享存储服务 二 实验 1 通过httpd服务建立yum仓库 2 通过vsftpd服务建立yum仓库 3 搭建NFS实现2台或3台服务器共享一个目录 一 理论 1 部署YUM仓库服务 1 Y
  • JdbcTemplate使用in条件查询sql

    在使用条件in的sql的时候 使用NamedParameterJdbcTemplat public Object getXXX String roleAuth long roleId NamedParameterJdbcTemplate n
  • Python基础(if条件判断)

    if条件判断的第一种情形 纯if if语句的语法规则 if 条件 代码 意思是如果条件成立就执行该代码 如果不成立 就不执行 money 100 if money gt 50 print 吃饭 print 回家 此处输出 吃饭 回家 若mo
  • SQLi LABS Less-4 联合注入+报错注入

    第四关是双引号 括号的字符型注入 推荐使用联合注入 报错注入 方式一 联合注入 参考文章 联合注入使用详解 原理 步骤 实战教程 第一步 判断注入类型 地址栏输入 id 1 and 1 a 页面正常显示 地址栏输入 id 1 and 0 a
  • OceanBase-一款功能无敌的多模数据库

    点击上方 小强的进阶之路 选择 星标 公众号 优质文章 及时送达 预计阅读时间 5分钟 NoSQL历史 KV型NoSql 代表 Redis 解决快速的读写问题 但是会丢失数据 搜索型NoSql 代表 ElasticSearch 支持快速的全
  • 拷贝构造函数和赋值构造函数声明为私有的作用

    转贴地址 http blog csdn net winer632 archive 2009 01 12 3762292 aspx 每个类只有一个赋值函数 由于并非所有的对象都会使用拷贝构造函数和赋值函数 程序员可能对这两个函数有些轻视 请先
  • 多线程练习之数字加减

    数字加减 题目 设计 4 个线程对象 两个线程执行减操作 两个线程执行加操作 使其返回结果为0 1 0 1 或为0 1 0 1 public class ThreadTest public static void main String a
  • 学生如何免费激活JetBrain所有产品(PyCharm,IDEA......)

    前提 版权意识的重要性不言而喻 抛去法律等的规则来说 可以近似理解为一种对别人付出的尊重 本文为学生免费激活JetBrain所有产品 PyCharm IDEA https www jetbrains com 进入jetBrains的官网 点
  • 雷军22年前写的代码 你见过吗?

    作为小米科技的创始人 董事长和首席执行官 雷军的名字如雷贯耳 网上出现一篇 刘强东的代码水平如何 的文章 有网友在下面回复 代码只服雷军 这个回复吸引了小编的注意 雷军的代码水平真的很牛吗 原来雷军年轻的时候 也是一名程序员 而且一干就是1
  • C语言用牛顿迭代法和二分法递归求解三元一次方程

    求解方程 2x 3 4x 2 3x 6 0 牛顿迭代法 牛顿迭代法公式 以下图片均来源于百度 牛顿迭代法用递归实现解三元一次方程 include
  • 实现3D物体拆解组装的详细步骤和示例代码

    拆分3D物体 使用3D建模软件将原始3D模型拆分成多个可独立控制的部分 并将每个部分导入到Unity中 创建GameObject并添加脚本 在Unity中 为每个部分创建一个独立的GameObject 并为其添加相应的脚本 这些脚本可以控制
  • Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多

    http blog csdn net lmj623565791 article details 45059587
  • c# Byte解压,压缩

    using ICSharpCode SharpZipLib GZip using System using System Collections Generic using System IO using System Linq using
  • 方差分析(ANOVA)的基本原理及R实现(单因素)

    方差分析 analysis of variance ANOVA 几乎是在统计学分析中最常用的方法 通过分析各变量的主效应 main effect 和交互效应 interaction effect 从而发现因变量 dependent vari
  • 音标发音规则

    一 辅音字母的读音规则 1 c 在字母e i y前读 s 如cell cit y cyst 其余情况下读 K 如cat club code 2 g 在字母e i y前读 如gene gin gym 其余情况下读 g 如beg golf ga
  • [图论]---[网络流]---最大权闭合子图

    最大权闭合子图 闭合图的概念 闭合图建立在有向图之上 对于 G V E 选取一个点的子集 V V 的任意一点的所有能到达的点也在集合 V 内 则称 V 为闭合子图 最大权闭合子图即在G的所有闭合子图中 点权和最大的 最大权闭合子图的求法 构