容量網絡的定義
設一個有向連通圖\(N=\langle V,E\rangle\),記\(n=|V|,m=|E|\).網絡
·容量:每條邊\(\langle i,j\rangle\)都對應一個非負實數\(c(i,j)\)spa
·\(N\)有兩個特殊頂點\(s\)和\(t\),\(s\)稱做發點(或源,Source),\(t\)稱做收點(或匯,Termination).其他的頂點稱做中間節點。blog
·稱\(N\)爲容量網絡,記做\(N=\langle V,E,c,s,t\rangle\).io
容量網絡上的可行流與最大流
設\(f:E\rightarrow \mathbb{R} ^*\),其中\(\mathbb{R} ^*\)爲非負實數集class
容量限制
\[\forall \langle i,j \rangle \in E,\ f(i,j)\le c(i,j) \]
平衡條件
\[\forall i\in V-\{s,t\}\\ \sum_{\langle j,i\rangle \in E}f(j,i)=\sum_{\langle i,j\rangle \in E}f(i,j) \]
知足以上條件的,稱\(f\)是\(N\)上的一個可行流。稱發點\(s\)的淨流出量爲\(f\)的流量,記做\(v(f)\),即:im
\[v(f)=\sum_{\langle s,j\rangle \in E}f(s,j)-\sum_{\langle j,s\rangle \in E}f(j,s) \]
最大流
流量最大的可行流稱做最大流,求給定容量網絡\(N\)上的最大流\(f^*\)的問題,稱做最大流問題。img
網絡流建模
多源/多匯問題
具備多個源和多個匯的網絡,能夠經過在源以前(或者匯以後)添加一個節點的方式轉換爲單源單匯問題,以下圖集合
正向邊反向邊共存問題
若是兩個頂點之間有方向相反的兩條邊鏈接,能夠在其中一條邊上增長一個頂點(以下圖綠色頂點),這樣能夠保證每兩個頂點之間只有一條邊。di
最大流問題的線性規劃表述
一個最大流問題能夠描述成以下的LP模型co
\[\max \ v(f)\\ {\rm s.t.}\quad\quad f(i,j)\le c(i,j),\ \ \langle i,j\rangle \in E \\ \sum_{\langle j,i\rangle \in E}f(j,i)-\sum_{\langle i,j\rangle \in E}f(i,j)=0,\ \ \forall i\in V-\{s,t\}\\ v(f)-\sum_{\langle s,j\rangle \in E}f(s,j)+\sum_{\langle j,s\rangle \in E}f(j,s)=0,\ \ f(i,j)\ge 0,\ \ \langle i,j\rangle \in E \\ v(f)\ge 0 \]
割集、割集的容量、最小割集
設容量網絡\(N=\langle V,E,c,s,t\rangle,A\subset V\)且\(s\in A,\ t\in \overline A\),稱:
\[(A,\overline A)=\{\langle i,j\rangle|\langle i,j\rangle\in E且i\in A,j\in \overline A\} \]
爲\(N\)的割集;割集能夠這麼理解:將這個網絡劃分爲兩個部分,源\(s\)位於其中一個部分,匯\(t\)位於另外一部分,而這兩個部分相互不連通,爲了使這兩部分不連通所須要砍掉的邊構成的集合就是割集。
稱:
\[c(A,\overline A)=\sum_{\langle i,j\rangle \in (A,\overline A)}c(i,j) \]
爲割集\((A,\overline A)\)的容量。容量最小的割集稱做最小割集。