网络流量更新值

时间:2014-11-19 13:01:00

标签: algorithm math networking flow network-flow

我正在从我的书中练习算法问题并遇到了这个问题:

  

您将获得一个有n个节点和m个边缘的定向网络G,一个源s,一个接收器t和一个从s到t的最大流量f。假设每个边的容量都是正整数,请描述一个O(m + n)时间算法,用于在以下两种情况中更新流f。

     

(i)边e的容量增加1。

     

(ii)边e的容量减少1。

看起来它就像走过网络流边缘和调整流程一样简单,但我不认为它真的那么简单。维基百科仅提供O(n ^ 2 m)或O(n m ^ 2)的算法。任何帮助或想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

有一个解决方案here

假设e是u和v之间的边缘。

容量增加

增加容量的想法是在残差流图中简单地对从s到t的路径进行DFS。

容量减少

如果在最大流量中未使用边缘,则完成。

否则,我们的想法是在剩余流程图中查看是否存在从u到v的替代路径。这需要O(n + m)。如果找到,则可以将最大流量增加1。

否则,您需要减少流量。你可以通过找到从u到s的路径,流量可以沿着该路径增加1,以及从t到v的路径,流量可以沿着该路径增加1。 (增加的方向相反,因此减少了从s到t的流量)。