网络流学习笔记
今天重温了网络流,感觉收获颇丰
网络流其实可以抽象成流水问题,有
- 增广路:从
到 的一条路径中流的值都大于零的一条路就叫增广路
讲解法之前先介绍一下建反边的操作的意义:因为每次我们都会去寻找增广路但是我们并不知道当前这条是不是最优方案,因此我们需要一个反悔操作来帮我们找到最终答案,因此反边就出现了,反边的意思就是把原本是
1|0EK
EK算法的核心就是每次在图中寻找一条增广路并更新流量,直到找不到新的增广路为止。时间复杂度是
代码:
点击查看代码
2|0Dinic
EK算法因为每次只寻找一条增广路所以时间复杂度比较高,如果在稠密图中就显得不优秀,所以每次寻找多个增广路的Dinic算法就出现了。
Dinic算法的思路是对于离源点距离一样的点建分层图,然后在回溯时更新边权。
但是这样还是略慢,怎么办?别急,我们有当前弧优化。
当前弧优化的意思就是一条路已经被增广过一次了,那么它就不会再被增广了,那其实在增广的时候完全不需要考虑它了,那我们就另开一个数组记录当前点需要从那个点向后遍历就行了。
时间复杂度是
代码:
点击查看代码
以上是最大流的讲解。
3|0费用流:最小费用最大流
在考虑要最大流的同时需要使花费最小,显然普通的最大流完成不了这个,但是想要完成也很简单,只需要用SPFA或者dijkstra维护一下找增广路的过程就行了。
代码:
点击查看代码
__EOF__
)
本文作者:Rose_Lu
本文链接:https://www.cnblogs.com/roselu/p/18314719.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/roselu/p/18314719.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2023-07-21 cdq分治
2023-07-21 平衡树专栏