首页 文章

网络流量更新值[关闭]

提问于
浏览
1

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

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

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

1 回答

  • 1

    有一个解决方案here .

    假设e是u和v之间的边 .

    容量增加

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

    减少容量

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

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

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

相关问题