我们给定了一个具有K
顶点的网络,并赋予a
和b
。所有边缘的容量为infinite
。对于从a
到的流b
,max flow
通过它的边缘称为瓶颈边缘,而通过该边缘传递的流量的容量称为流的瓶颈。M
给出一个整数。我们希望将M
瓶颈最小的大小的传输流从a转移到b。我们应该使用福特-富克森多少次来计算该流量?
O(1)运行是答案,但是如何?
假设你为每个边分配一个容量1,一次运行FF,并得到结果图。另外,将最大流量设为M'。直观地,我们发现最小割为$ M'$,这意味着在这种情况下,从a到b有M'条边不相交的路径。这告诉我们如何通过适当地缩放流量来获得⌈M / M'solution的解。例如,假设$ M = 5 $,并且将容量设置为1时,我们得到$ M'= 2 $。那么我们知道最小割为2。如果将容量增加到5/2 = 2.5,那么我们将确切地得到5的流量。由于这是非整数,因此我们会将某些边(形成从a到b的路径)的容量增加到3,再将一些容量增加到2。
你所得到的任何东西都不会比发现的东西低。如果你可以得到更低的值,例如说M''<⌈M / M'⌉,那么如果将所有边的容量设置为M'',则流程不会改变。根据最大流/最小割定理,这意味着存在M / M''> M'边的最小割。这与最小切割仅是M'相矛盾。
不错的算法+1。用简单的语言直观地说明这个问题,按比例缩放流量的作用是什么?
我已经更新了答案,以澄清一些要点。希望这可以帮助。
@MK如果M = 10且M'= 5,则缩放比例为2,如您所述。在这种情况下,瓶颈是2。不确定您要我纠正什么。
@MK如果M = 10,并且M'= 2,则瓶颈为5,并且从a到b有2条边缘不相交的路径。如果将所有边的容量缩放为5,则每条路径给出5,总流量为10,恰好是M。