以下转载
最大流问题是网络理论中的一个重要内容,在现实生活中有着相当广泛的应用,如交通运输网络中的车流、人流,供水系统中的水流,通讯网络中的信息流,金融系统中的现金流等。如何充分利用现有条件使网络具有最大的流通能力,这就是所谓的最大流问题。2001年高考12题就是以最大流问题为背景的信息流问题。
在给出最大流问题的算法之前,先介绍一些相关的最大流问题的概念。
⑴弧、有向图:把有向的边称为弧,由此得到的图称为有向图。
⑵收点、发点、中间点:只有流出没有流入的点称为发点,只有流入而没有流出的点称为收点,其它点称为中间点。
⑶流量:有向图上每条弧 为有向图上的点)的允许流量为 ,实际流量为 ,则 。
⑷可行流:从发点到收点的一个流量图,满足每条弧的实际流量不超过允许流量,且对于中间点,流入与流出的量应该相等。
⑸简化图:简化后实际流量没有变化的图。
⑹可增广图:排除已发现的可行流后,尚有可挖掘可行流的图。
由此可见,最大流问题就是寻找网络中流量最大的可行流。
下面介绍一种寻找最大流的简明算法。
步骤一:构造简化图,方法如下:
①当点 之间只有一个中间点 ,则将 去掉,以 作为弧 的允许流量。
②当点 之间有两条弧时,将两条弧上的容许流量之和作为改成一条弧后 的容许流量。
步骤二:寻找1个(或几个)可行流,并算出可行流的流量。
步骤三:构建可增广图,方法如下:
①当图中的弧 满足 = 时,将弧 去掉。
②当图中的弧 满足 < 时,将 - 作为弧 在可增广图中的容许流量。
重复以上步骤,直到可以清晰地找到所有可行流为止,得到的所有可行流的流量之和就是有向图的最大流量。