图论--网络流最大流问题
问题表述: 给定一幅图(n个结点,m条边),每一条边有一个容量,现在需要将一些物品从结点s(称为源点)运送到结点t(称为汇点),可以从其他结点中转,求最大的运送量。 在介绍最大流问题的解决方法之前,先介绍几个概念. 网络 :网络是一个有向带权图,包含一个源点和一个汇点,没有反向平行边。 网络流 :网络流即网上的流,是定义在网络边集E上的一个非负函数flow={flow(u,v)}, flow(u,v)是边上的流量。 可行流 :满足以下两个性质的网络流flow称为可行流。 容量约束 :每条边的实际流量不能超过改变的最大流量。 流量守恒 :除了源点s和汇点t之外,所有内部节点流入量等于流出量。 源点s :源点主要是流出,但也有可能流入。 源点的净输出值=流出量之和-流入量之和。 汇点t :汇点主要是流入,但也有可能流出。 汇点的净输入值=流入量之和-流出量之和。 对于一个网络可行流flow,净输出等于净输入,这仍然是流量守恒。 网络最大流 :在满足容量约束和流量守恒的前提下,在流网络中找到一个净输出最大的网络流。 反向弧: 若从u到v的边的 容量 为c ,这条边上有流量 f 流过(称为正向弧),则相当于v到u有一条容量为0的边,其流量为- f ,这条边就是反向弧。反向弧的作用主要是用于寻找增广路。 反向弧的意义: 反向弧的作用是起到有更优 决策 的时候会使当前选择的弧会自动放弃