EK算法復雜度分析


引理: EK算法每次增廣使$s$到所有頂點$v\in V-\{s,t\}$的最短距離$d[v]$增大.

采用反證法, 假設存在一個點$v\in V-\{s,t\}$, 使得$d'[v]< d[v]$.

取$v$為第一個使最短距離減小的點, 設增廣后的圖$G'$中路徑$s\leadsto u \rightarrow v$為$s$到$v$的最短路

因此可以得到

$$d[u]=d[v]-1, d'[u]\ge d[u]$$

那么顯然邊$(u,v) \notin E$, 因為若$(u,v) \in E$, 則有

$$d[v]\le d[u]+1 \le d'[u]+1 = d'[v]$$

與假設矛盾.

故EK算法一定是增加了流$f(v,u)$, 即邊$(v,u)$在$G$的最短路上, 固有

$$d[v]=d[u]-1\le d'[u]-1=d'[v]-2$$

與假設矛盾, 故引理成立.

 

定理: EK算法最多增廣次數為$O(VE)$.

若增廣路$p$的殘留容量等於邊$(u,v)$的殘留容量, 則稱邊$(u,v)$是增廣路$p$的關鍵邊, 下面用引理證明每條邊最多做關鍵邊$\frac{|V|}{2}-1$次.

對於關鍵邊$(u,v)$, 由於$(u,v)$在最短路上, 有

$$d[v]=d[u]+1$$

而增廣后, $(u,v)$將從$G$中消失, 重新出現的條件是$(v,u)$出現在增廣路上.

則有

$$d'[u]=d'[v]+1$$

由引理知道

$$d'[v]\ge d[v]$$

故有

$$d'[u]\ge d[v]+1=d[u]+2$$

所以每次出現至少會使最短距離$+2$, 而其距離最大為$|V|-2$, 所以每條邊最多做關鍵邊$\frac{|V|}{2}-1$次, 總的增廣次數就為$O(VE)$.

 

所以采用BFS進行增廣的話, EK算法將達到復雜度$O(VE^2)$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM