首页 > 其他分享 >网络流

网络流

时间:2024-05-27 12:22:39浏览次数:12  
标签:结点 增广 网络 算法 出边 Dinic 我们

最大流

对于网络 \(G = (V, E)\) ,给每条边指定流量,得到合适的流 \(f\) ,使得 \(f\) 的流量尽可能大。此时我们称 \(f\) 是 \(G\) 的最大流。

Dinic

算法思想

考虑在增广前先对 \(G_f\) 做 BFS 分层,即根据结点 \(u\) 到源点 \(s\) 的距离 \(d(u)\) 把结点分成若干层。令经过 \(u\) 的流量只能流向下一层的结点 \(v\) ,即删除 \(u\) 向层数标号相等或更小的结点的出边,我们称 \(G_f\) 剩下的部分为层次图(Level Graph)。形式化地,我们称 \(G_L = (V, E_L)\) 是 \(G_f = (V, E_f)\) 的层次图,其中 \(E_L = \left\{ (u, v) \mid (u, v) \in E_f, d(u) + 1 = d(v) \right\}\) 。

如果我们在层次图 \(G_L\) 上找到一个最大的增广流 \(f_b\) ,使得仅在 \(G_L\) 上是不可能找出更大的增广流的,则我们称 \(f_b\) 是 \(G_L\) 的阻塞流(Blocking Flow)。

定义层次图和阻塞流后,Dinic 算法的流程如下。

  1. 在 \(G_f\) 上 BFS 出层次图 \(G_L\) 。

  2. 在 \(G_L\) 上 DFS 出阻塞流 \(f_b\) 。

  3. 将 \(f_b\) 并到原先的流 \(f\) 中,

  4. 重复以上过程直到不存在从 \(s\) 到 \(t\) 的路径。

注意到在 \(G_L\) 上 DFS 的过程中,如果结点 \(u\) 同时具有大量入边和出边,并且 \(u\) 每次接受来自入边的流量时都遍历出边表来决定将流量传递给哪条出边,则 \(u\) 这个局部的时间复杂度最坏可达 \(O(|E|^2)\) 。为避免这一缺陷,如果某一时刻我们已经知道边 \((u, v)\) 已经增广到极限(边 \((u, v)\) 已无剩余容量或 \(v\) 的后侧已增广至阻塞),则 \(u\) 的流量没有必要再尝试流向出边 \((u, v)\) 。据此,对于每个结点 \(u\) ,我们维护 \(u\) 的出边表中第一条还有必要尝试的出边。习惯上,我们称维护的这个指针为当前弧,称这个做法为当前弧优化。

Dinic 算法的时间复杂度是 \(O(|V|^2|E|)\) ,然而绝大部分情况跑不满。

1.在单位容量的网络上,Dinic 算法的总时间复杂度是
\(O(|E| \min(|E|^\frac{1}{2}, |V|^{\frac{2}{3}}))\) 。
在单位容量的网络上,如果除源汇点外每个结点 \(u\) 都满足 \(\mathit{deg}_{\mathit{in}}(u) = 1\) 或 \(\mathit{deg}_{\mathit{out}}(u) = 1\) ,Dinic 算法的总时间复杂度是
\(O(|E||V|^{\frac{1}{2}})\) 。对于二分图最大匹配问题,我们常使用 Hopcroft–Karp 算法解决,而这一算法实际上是 Dinic 算法在满足上述度数限制的单位容量网络上的特例。

ISAP

和 Dinic 算法一样,我们还是先跑 BFS 对图上的点进行分层,不过与 Dinic 略有不同的是,我们选择在反图上,从 \(t\) 点向 \(s\) 点进行 BFS。

执行完分层过程后,我们通过 DFS 来找增广路。

增广的过程和 Dinic 类似,我们只选择比当前点层数少 \(1\) 的点来增广。

与 Dinic 不同的是,我们并不会重跑 BFS 来对图上的点重新分层,而是在增广的过程中就完成重分层过程。

具体来说,设 \(i\) 号点的层为 \(d_i\) ,当我们结束在 \(i\) 号点的增广过程后,我们遍历残量网络上 \(i\) 的所有出边,找到层最小的出点 \(j\) ,随后令 \(d_i \gets d_j+1\) 。特别地,若残量网络上 \(i\) 无出边,则 \(d_i \gets n\) 。

容易发现,当 \(d_s \geq n\) 时,图上不存在增广路,此时即可终止算法。

和 Dinic 类似,ISAP 中也存在 当前弧优化。

而 ISAP 还存在另外一个优化,我们记录层数为 \(i\) 的点的数量 \(num_i\) ,每当将一个点的层数从 \(x\) 更新到 \(y\) 时,同时更新 \(num\) 数组的值,若在更新后 \(num_x=0\) ,则意味着图上出现了断层,无法再找到增广路,此时可以直接终止算法(实现时直接将 \(d_s\) 标为 \(n\) ),该优化被称为 GAP 优化。

/!!!!!!!!!!!
2.最小割问题:对于网络 \(G = (V, E)\) ,找到合适的 \(s\) - \(t\) 割 \(\{S, T\}\) ,使得 \(\{S, T\}\) 的容量尽可能小。此时我们称 \(\{S, T\}\) 是 \(G\) 的最小割。
3.最小费用最大流问题:在网络 \(G = (V, E)\) 上,对每条边给定一个权值 \(w(u, v)\) ,称为费用(cost),含义是单位流量通过 \((u, v)\) 所花费的代价。对于 \(G\) 所有可能的最大流,我们称其中总费用最小的一者为最小费用最大流。

标签:结点,增广,网络,算法,出边,Dinic,我们
From: https://www.cnblogs.com/WJChp/p/18215243

相关文章

  • Matlab实现RNN-LSTM卷积神经网络
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义随着深度学习技术的快速发展,循环神经网络(RNN)及其变种长短期记忆网络(LSTM)在处理序列数据方面展现出了强大......
  • 网络安全基础
    一、网络设备基础1.1园区网络安全部署场景一般园区网络中,由最基础的路由器与交换机组成网络,为了安全,在网络中部署防火墙在那些区域需要部署防火墙在网络的出入口区域部署在重要的服务器区域部署数据中心区的服务器一般只对内网用户提供服务,而DMZ区域面向外部用户提供......
  • 万字详解YOLOv8网络结构Backbone/neck/head以及Conv、Bottleneck、C2f、SPPF、Detect
    YOLO目标检测创新改进与实战案例专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例简介YOLOv8是由Ultralytics开发的最先进的目标检测模型,推升了速度、准确性和用户友好性的界限。YOLO这一缩写代表“你......
  • 锐捷(ruijie)无线网络基础配置-通过CLI命令配置
    场景:AC旁挂在三层接入交换机上,交换机连接瘦AP1和瘦AP2;接入交换机做为DHCP地址池下发AP管理地址和用户的业务地址;AP管理VLAN和设备互联VLAN使用VLAN10,用户业务VLAN使用VLAN20;AP1关联SSIDtest1,使用本地转发模式转发用户数据流量;AP2关联SSIDtest2,使用集中转发模式转发用户......
  • Linux虚拟机有线网络图标消失
    上不了网了chkconfignetworkoffchkconfignetworkonserviceNetworkManagerstopserviceNetworkManagerstart作者:Chting链接:https://www.jianshu.com/p/037de7b3024f来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。我直呼好厉......
  • 零基础学Java第二十三天之网络编程
    网络编程1.网络编程实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为:网络编程+IO流+多线程2.网络编程三要素网络通讯的模型:请求-响应,客户端-服务端三要素:IP地址,端口,协议(数据传输的规则)2.1.IP地址IP地址:网络中计算机的唯一标识(IP地址是一个32位的二......
  • 零基础学Java第二十三天之网络编程Ⅱ
    1.InetAddress类用来表示主机的信息练习:C:\Windows\system32\drivers\etc\hosts一个主机可以放多个个人网站www.baidu.com/14.215.177.37www.baidu.com/14.215.177.38www.taobao.com/183.61.241.252www.taobao.com/121.14.89.2532.Socket3.TCP编程API:Socket,S......
  • 【Linux 网络】网络基础(三)(网络层协议:IP 协议)
    在复杂的网络环境中确定一个合适的路径。一、TCP与IP的关系IP层的核心作用是定位主机,具有将数据从主机A发送到主机B的能力,但是能力并不能保证一定能够做到,所以这时就需要TCP起作用了,TCP可以通过超时重传、拥塞控制等策略来保证数据能够发送到B主机。所以,TC......
  • 病毒分析实验室 Malware Lab 网络配置
    按如图配置:主机它作为虚拟网络的网关。VM想要访问互联网就必须把网关设置为它。主机上的配置是把能连到互联网的网卡(WLAN无线网)“网络共享”给VMNet0虚拟网卡。打开控制面板-网络和internet-网络和共享中心-更改适配器设置右键能连互联网的网卡-属性-点......
  • .NET集成DeveloperSharp实现http网络请求&与其它工具的比较
     爆了,爆了,DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远。 支持.NetCore2.0及以上,支持.NetFramework4.0及以上http请求调用是开发中经常会用到的功能。在内,调用自有项目的WebApi等形式接口时......