分别称为流量限制条件和流量平衡条件 而在有上下界的网络流图中,由于多了流量下界
将有上下界的网络流图转化成普通的网络流图
首先建立附加源点ss和附加汇点tt对于原图中的边x->y,若限制为[b,c],那么连边x->y,流量为c-b对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和 若d(i)>0,那么连边ss->i,流量为d(i)若d(i)<0,那么连边i->tt,流量为-d(i)在新图上跑ss到tt的最大流 若新图满流,那么一定存在一种可行流 此时,原图中每一条边的流量应为新图中对应的边的流量+这条边的流量下界
在原图中,假设每条边的实际流量为
我们可以将原图中的边改为上界为
举个栗子 原图 按照上面的方法改造过的新图 这个图的可行流为1,还原成原图的实际流量为 很显然满足流量限制条件,但是不满足流量平衡条件 即
由于需要满足流量平衡条件
在原图中添加一条边t->s,流量限制为[0,inf] 即让源点和汇点也满足流量平衡条件 这样就改造成了无源汇的网络流图 其余方法同上
同 无源汇可行流
同 无源汇可行流
同有源汇可行流
在新图上跑ss到tt的最大流 若新图满流,那么一定存在一种可行流 记此时
添加附加源汇的作用:为了满足流量平衡条件,在新图中进行相应的补流或分流 只要连接附加源汇的边满流,新图中s->t的任意一种可行流都是原图的可行流 跑ss->tt的最大流了之后,相当于是使连接附加源汇的边满流,进而求出了一种可行流 再将t->s的边拆掉(使s->t变成一个有源汇的网络流图),跑s到t的最大流,加上跑出来的最大流即为原图中一种可行的最大流
同 无源汇可行流
求ss->tt最大流 连边t->s,inf 求ss->tt最大流 答案即为边t->s,inf的实际流量
第一遍做的时候并无t->s这条边,所以s->t的流量已经尽力往其它边流了 加上t->s这条边后,流过这条边的都是些剩余的流不到其他边的流量,从而达到尽可能减少T->S这边上的流量的效果,即减小了最终答案。
将有上下界的网络流图转化成普通的网络流图
首先建立附加源点ss和附加汇点tt对于原图中的边x->y,若限制为[b,c],费用为cost,那么连边x->y,流量为c-b,费用为cost对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和 若d(i)>0,那么连边ss->i,流量为d(i),费用为0若d(i)<0,那么连边i->tt,流量为-d(i),费用为0连边t->s,流量为inf,费用为0跑ss->tt的最小费用最大流 答案即为(求出的费用+原图中边的下界*边的费用)
注意: 有上下界的费用流指的是在
证明同 有源汇的可行流
重点理解“补流”和“分流”的作用 注意流的“等效”
新闻热点
疑难解答