我正在寻找快速算法来计算动态图中的最大流量(添加/删除具有相关边的节点到图)。即我们在 G 中有最大流量现在添加/删除了相关边的新节点,我不喜欢重新计算新图的最大流量,事实上,我想使用该图以前可用的结果。
任何不是很消耗时间/内存的预处理都会被占用。
最简单的想法是重新计算流量。
另一个简单的想法是这样,保存之前 maxflow 计算中使用的所有扩充路径,现在添加 vertex v
,我们可以找到从源开始的简单路径(在上一步更新的容量图中),v
然后到达目的地,但是问题是这条路径应该很简单,对于这种情况,我找不到比 O(n*E) 更好的方法。(如果只是一条路径或路径不相交,这可以在 O(n+E) 中完成,但事实并非如此)。
同样对于删除上述想法的节点也不起作用。
此外,我的问题与另一个关于动态边缘添加/删除的问题无关。