码迷,mamicode.com
首页 > 其他好文 > 详细

《网络流学习笔记05--最小割最大流问题》

时间:2015-02-13 22:28:05      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:最小割   最大流   

【图的割:定义】

指的是对于某个顶点集合S属于V,从S出发指向S外部的那些边的集合,记为割(S,V\S]),边的容量之和称为割的容量。如果有s属于S,而t属于V\S,那么此时的割称为s-t割,如果将网络中的s-t割所包含的边都割去,就无法找到从源点s到汇点t 的路径。

割:设Ci为网络N中一些弧的集合,若从N中删去Ci中的所有弧,即:使得从顶点Vs到顶点Vt的路集为空集时,称Ci为Vs和Vt间的一个割。
最小割:图中所有的割中,边权值和最小的割为最小割。

实例:如右图所示的割集为 --表示无序对,->表示有序对
C1:{①->③,①->⑤}
C2:{④->②, ⑤->②}
C3:{③--④,③-- ⑤,①-> ⑤}
C4:{③--④,④-- ⑤, ⑤->②}
C5:{①-> ⑤,③-- ⑤,④-- ⑤,④->②}
C6:{①->③,③- - ⑤,④-- ⑤, ⑤->②}
技术分享

【对于给定的网络,为了保证没有从s到t的路径,需要删去的边的总容量的最小值是多少】

该问题称为最小割问题,

以下转自维基百科原文:http://en.wikipedia.org/wiki/Max-flow_min-cut_theorem

1. 在优化理论中,最大流最小割定理指:在一个网络流中,能够从源点到达汇点的最大流量,等于,如果从网络中移除就能够导致网络流中断的边的集合的最小容量和。

2. 定义:

      假设N=(V,E)是一个有向图,其中结点s和t分别是N的源点和汇点。 

      边(u,v)的容量c(u,v)定义为:能够通过该边的最大流量。

      通过每条边的f(u,v)的需要满足如下约束:

      (1)f(u,v) <= c(u,v),即容量约束。

      (2)对于任意v不属于{s,t},有sum{ f(u,v) } = sum{ f(v,u) },即流入某个中间结点的流量等于从这个结点流出的流量。

      网络流定义f定义为|f| = sum{ f(s,v) },代表从源点流入汇点的流量。

      最大流问题,是求得|f|的最大值。

      s-t割定义为对V的一个二划分,其中s和t属于不同的两个集合S和T。割集就是{ (u,v)| u属于S, v属于T }。显然,如果割集中的所有边被移除,那么|f| = 0。

      割的容量定义为c(S, T) = sum{ c(u,v), 其中u属于S,v属于T }。

      最小割问题,是求得这样一个s-t割C(S, T),使得S-T割的容量最小。

3. 最大流最小割定理

      一个s-t流的最大值,等于其s-t割的最小容量。

4. 应用: 项目权衡问题

4.1 问题

     假设有n个项目和m种设备。项目pi能够产生效益r_pi,设备qj需要耗费c_qj。每个项目需要多种设备,每种设备可以被多种项目使用。问题是,决定实施哪几个项目,以及购买哪几种设备,使得效益最高。

4.2 对应到最小割问题

      构建一个这样的网络:假设源点和汇点s和t,s与每个项目pi之间有一个边,其容量为r_pi;每个设备与t之间有一条边,其容量为c_qj。如果pi需要设备qj,那么pi与qi之间有一条边,其容量为无穷大。

【解决】求出该网络流的最小割,即是项目选择的最大效益。








《网络流学习笔记05--最小割最大流问题》

标签:最小割   最大流   

原文地址:http://blog.csdn.net/u013050857/article/details/43793505

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!