首页 > 其他分享 >网络流题型总结

网络流题型总结

时间:2023-06-23 15:33:53浏览次数:53  
标签:总结 题型 最大 容量 路径 网络 序列 二分

最近写了一段时间的网络流,现在应该总结一下了。
网络流就是将原问题抽象成包含顶点和边有容量限制的网络。
本文中有些题目的题解复制自网络,仅作个人学习总结之用。

1.最大流

最大流可以看作使用 flow 来做出一系列的限制,从而满足原题条件。

1.1 拆点

有时候某一个点还有额外的限制,这个时候就需要把一个点拆成两个点,用它们之间的边来描述限制。

LG2472 [SCOI2007] 蜥蜴

将整个网格地图看作一个网络,,某一个节点拆成两个点(称为左端点和右端点),之间连一条边表示跳的青蛙的限制数。相互之间如果可以通达就从右一端点向左一端点连边。s 向所有有青蛙的左端点连一条容量为青蛙数的边。能通达外部右端点向 t 连一条容量为 inf 的边。

1.2 分层图网络流

基于时间等因素,网络状态有所改变,这时候就需要构建分层图。

LG2754 [CTSC1999] 星际转移问题

注意到每个太空船的位置在随时间的改变而改变。
基于时间构建分层图。
首先判断无解,即地球和月球没有被太空船联通(并查集判断)。
我们将所有空间站+地球+月球称为一层节点。
接着枚举时间,每一新时刻构建一层节点,根据太空船的位置关系从上一层节点向这一层节点连边,容量限制为太空船的载客量,直到最大流大于等于地球人数 k。
由于 dinic 残量网络的性质,我们可以每次在残量网络上跑 dinic,将新增的流直接加到最大流上,因此时间上远远小于跑 t 遍 dinic 的理论复杂度。

LG2766 最长不下降子序列问题

[问题分析]
第一问时LIS,动态规划求解,第二问和第三问用网络最大流解决。
[建模方法]
首先动态规划求出 F[i],表示以第 i 位为开头的最长上升序列的长度,求出最长上升序列长度 K。
1、把序列每位 i 拆成两个点 <i.a><i.b> ,从 <i.a><i.b> 连接一条容量为1的有向边。
2、建立附加源 S 和汇 T ,如果序列第 i 位有 \(F_i=K\),从 S<i.a> 连接一条容量为1的有向边。
3、如果 \(F_i=1\),从 <i.b>T 连接一条容量为 1 的有向边。
4、如果 \(j>i\) 且 \(A_i < A_j\) 且 \(F_j+1=F_i\) ,从 <i.b><j.a> 连接一条容量为1的有向边。
求网络最大流,就是第二问的结果。把边 (<1.a>,<1.b>),(<N.a>,<N.b>),(S,<1.a>),(<N.b>,T) 这四条边的容量修改为无穷大,再求一次网络最大流,就是第三问结果。
[建模分析]
上述建模方法是应用了一种分层图的思想,把图每个顶点 i 按照 F[i] 的不同分为了若干层,这样图中从S出发到T的任何一条路径都是一个满足条件的最长上升子序列。
由于序列中每个点要不可重复地取出,需要把每个点拆分成两个点。单位网络的最大流就是增广路的条数,所以最大流量就是第二问结果。
第三问特殊地要求 x1 和 xn 可以重复使用,只需取消这两个点相关边的流量限制,求网络最大流即可。

1.3 二分图匹配

根据二分图匹配的性质,可以使用网络最大流求解。
同时二分图多重匹配可以使用网络最大流求解,二分图带权最大匹配可以使用最小费用最大流求解。
这一类题型的难点一般在于二分图的建模,而不是网络流模板的使用。

1.4 最小路径点覆盖

最小路径点覆盖问题指的是在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。
构建模型,定义原有向图为 G,新图为 G2。
将 G 拆点,分为左部点和右部点,令 G 中节点 x 的左部点为 l(x),右部点为 r(x)。若 G 有边 (x,y),那么连边 l(x)r(y)。这样作出的二分图就是 G2。

G 的最小路径覆盖 = n - G2 的最大匹配

LG2765 魔术球问题

两个能构成完全平方数的数之间小数向大数有边,不断加入新数,直到最小路径点覆盖 > 柱子数 n。最终答案就是加入的数的个数减一。
还有就是要输出路径,根据网络流的性质,一条边满流了就说明两点之间应该是同一根柱子的相邻关系,枚举一下边最后按照上述关系输出即可。

标签:总结,题型,最大,容量,路径,网络,序列,二分
From: https://www.cnblogs.com/xu2006/p/17499209.html

相关文章

  • CMU新课-《神经网络与NLP 2020春》视频及ppt分享
    课程介绍    神经网络促进了语言建模的快速发展,并且已被用于优化很多其他NLP任务,甚至解决很多过去不容易的新问题。本课程将首先对神经网络进行简要概述,然后主要讲解如何将神经网络应用于自然语言问题。每个部分都将以自然语言任务入手,介绍一个特定的问题或现象,描述为何难以建......
  • AAAI2020-图神经网络(GNN)过去、现在、应用和未来最新研究进展分享
       GNN是GraphNeuralNetwork的简称,是用于学习包含大量连接的图的联结主义模型。近年来,图神经网络(GNN)在社交网络、知识图、推荐系统甚至生命科学等各个领域得到了越来越广泛的应用。GNN在对图节点之间依赖关系进行建模的强大功能,使得与图分析相关的研究领域取得了突破。当信......
  • 深度学习经典-《神经网络与深度学习》最新
        这本书涵盖了深度学习的传统和现代的所有技术。主要关注的是深度学习的理论和算法。神经网络的理论和算法对于理解重要的概念特别重要,因此人们可以理解神经架构在不同应用中的重要设计概念。神经网络为什么工作?什么时候它们比现成的机器学习模式更有效?深度什么时候有用?为什......
  • 深度图神经网络半监督学习技术(对比、生成、预测)及模型整理分享
       我们扩展了最早出现在计算机视觉和自然语言处理领域的自监督学习的概念,对现有的图数据半监督学习(SSL)技术进行了及时和全面的回顾。具体来说,我们将现有的图SSL方法分为三类:对比、生成式和预测,如下所示。    对比学习:对比不同数据扩充方法生成的数据。关于样本对(内部......
  • 深度学习神经网络结构设计及可视化开源工具整理分享
    在训练庞大的深度神经网络,为了能够更好的理解运算过程,需要使用可视化的工具将其过程进行描述,比如,在tensorflow中使用TensorBoard来绘制图像生成的定量指标图以及附加数据。本资源整理了深度学习神经网络结构设计或可视化相关的开源工具,分享给大家。资源整理自网络,源地址:https......
  • PTA6-8次题目集(成绩计算系列)总结
    1.前言6-8次作业题量不大,难度较菜单计价较小,但实现过程依旧繁琐知识点输入和输出处理:你需要从用户或文件中读取输入数据(课程信息和学生成绩),然后相应地进行处理。你可以使用诸如读取控制台输入(Scanner 类)或从文件读取技术。字符串操作和解析:你需要将输入的字符串分割后提......
  • 21年最新DL-深度学习理论原理—理解神经网络的有效理论途径
    本书介绍    这本书提出了一种有效的理论方法来理解实际的深层神经网络。从网络输入图像开始,我们逐步解释如何通过求解逐层迭代方程和非线性方程,来确定训练网络输出的结果。一个主要的结果是网络的预测用近似高斯分布描述,网络的深宽比控制着与无限宽高斯描述的偏差。我们解释了......
  • 邱锡鹏DL经典-神经网络与深度学习
    本书介绍    近年来,以机器学习、知识图谱为代表的人工智能技术逐渐变得普及。从车牌识别、人脸识别、语音识别、智能助手、推荐系统到自动驾驶,人们在日常生活中都可能有意无意地用到了人工智能技术。这些技术的背后都离不开人工智能领域研究者的长期努力。特别是最近这几年,得益......
  • RHEL 网络配置 --- IP转发
    一、概要1.环境RockyLinux9.1CentOS7.9二、配置1.sysctl服务(1)检查状态systemctlstatussysctl(2)开启sudosystemctlstartsysctlsudosystemctlenablesysctl2.操作IP转发(1)查看状态sysctlnet.ipv4.ip_forward输出net.ipv4.ip_forward=0,0......
  • 21年深度学习-深度学习神经网络高效处理
    本书介绍    本书系统性讲解深度神经网络(DNN)相关的关键原理和技术。DNNs目前广泛用于许多人工智能应用,包括计算机视觉、语音识别和机器人学。虽然数字神经网络在许多人工智能任务中提供了最先进的精度,但它是以高计算复杂性为代价的。因此,能够有效处理深度神经网络以提高关键指......