最大流(Maximum Flow)
一个菜🐔倔强的取经之路。
为了知识的严谨性,本文相关的定义是按照算法导论(第三版) copy and paste。我的理解和总结会适当的添加在这些定义后面用来帮助大家理解。我认为一些重要东西都已经加粗和高光标记了。本文算是对这一块内容的学习总结,如有错误欢迎大家指正,交流。
1.流网络和流(Flow networks and flows)
首先我们来看看流网络和流的定义。
流网络(Flow networks):
G = ( V , E ) G=(V,E) G=(V,E) 是一个有向图,图中每条边 ( u , v ) ∈ E (u,v) \in E (u,v)∈E 有一个非负的 容量值(Capacity) c ( u , v ) ≥ 0 c(u,v) \geq 0 c(u,v)≥0。如果边集合 E E E 包含一条边 ( u , v ) (u,v) (u,v),则图中不存在反方向的边 ( v , u ) (v,u) (v,u)。如果 ( u , v ) ∉ E (u,v) \notin E (u,v)∈/E,则为方便起见,定义 c ( u , v ) = 0 c(u,v)=0 c(u,v)=0,并且在图中不允许自循环(self-loop)。
在流网络中,我们需要区分两个节点: 源结点(Source) s s s 和 汇点(Sink) t t t。对于每个节点 v ∈ V v \in V v∈V,流网络都包含一条路径 s → v → t s \rightarrow v \rightarrow t s→v→t。因此, 流网络图是连通的,并且由于除源结点外的每个结点都至少有一条进入的边,我们有 ∣ E ∣ ≥