zoukankan      html  css  js  c++  java
  • 【转】最大权闭合图

    转自:http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html

    性质:

    最大权闭合图的权值=原图中权值为正的点的和-最小割;

    闭合图:在一个图中,我们选取一些点构成集合,记为V,且集合中的出边(即集合中的点的向外连出的弧),所指向的终点(弧头)也在V中,则我们称V为闭合图。

    最大权闭合图:即在所有闭合图中,集合中点的权值之和最大的V,我们称V为最大权闭合图。

    建图后的网络的简单割不含原图G边集的任意一条边,又简单割必须和s或t相连。闭合图与简单割一一对应。取到最小割时,图G闭合图取到最大权。(权是图的,割是网络的)

    上图中闭合图有

         {5}、{2,5}、{4,5}

         {2,4,5}、{3,4,5}

         {1,2,3,4,5}、{1,2,4,5}

    最大权闭合图为{3,4,5}。

    在许多实际应用中,给出的有向图常常是一个有向无环图(DAG) ,闭合图的性质恰好反
    映了事件间的 必要条件的关系:一个事件的发生,它所需要的所有前提也都要发生。一个常
    见的例子就是制定大学的选课计划,其中一些课程需要以另一些课程为基础,这就是给出了
    有向无环图。若给所有课程打分,最大权闭合图对应了获益最大或效率最高的选课计划,解
    决了这个问题,就可以容易地选出一个最合理的选课计划。

    在另外一些实际应用中,给出的是一个一般有向图,即有可能出现圈。常见的例子就是
    工程分期,一个工程可能含有很多项目,项目之间也有依赖关系。有些项目是需要同期一起
    开发, 互相依赖的(即出现圈) 。这样,也可以利用最大权闭合图,将最先应该完成的项目选
    出来作为工程的第一期。

    下面给出将原问题的图 G 转化为网络N = (Vn ,En )的方法,从而转化为最小割模型。

    在原图点集的基础上增加源 和汇 t ;将原图每条有向边容量为无穷,设立源点s向图中正权值的点连边,容量为该点的值,

    设立汇点t,图G中权值为负的点向t连边,权值为该点值得绝对值。

    上图转变成网络N。

    定义:若一个s-t割满足割中的每条边只与源或汇点关联,称该割为简单割。
    s-t割满足割中的每条边只都与源 或汇 关联,称该割为简单割。根据定义网络N中的简单割不包含图G中的任一边(因为不相连)。

    1. 在本问题的网络 中,最小割是简单割。

    证明: 那么为什么最小割是简单割呢?因为除S和T之外的点间的边的容量是正无穷,最小割的容量不可能为正无穷。所以,得证。

    2.网络中的简单割与原图中闭合图存在一一对应的关系(即所有闭合图都是简单割,简单割也必定是一个闭合图)。

    证明闭合图是简单割:如果闭合图不是简单割(反证法)。那么说明有一条边是容量为正无穷的边,则说明闭合图中有一条出边的终点不在闭合图中,矛盾。

    证明简单割是闭合图:因为简单割不含正无穷的边,所以不含有连向另一个集合(除T)的点,所以其出边的终点都在简单割中,满足闭合图定义。得正。

    3.最小割所产生的两个集合中,其源点S所在集合(除去S)为最大权闭合图。

     则C=(M中所有权值为正的点的权值(即S与M中点相连的边的容量)+N中所有权值为负的点权值的绝对值(即N中点与T中点相连边的容量))。记(C=x1+y1);

     

     我们记N这个闭合图的权值和为W。

     

            则W=N中权值为正的点的权值-N中权值为负的点的权值的绝对值。记(W=x2-y2);

     

            则W+C=x1+y1+x2-y2。

     

            因为明显y1=y2,所以W+C=x1+x2;

     

            x1为M中所有权值为正的点的权值,x2为N中权值为正的点的权值。

     

            所以x1+x2=所有权值为正的点的权值之和(记为TOT).

     

            所以我们得到W+C=TOT.整理一下W=TOT-C.(c表示简单割)。

    TOT为定值,所以c为最小割的时候w最大。

     

  • 相关阅读:
    mysql 函数 存储过程 事件(event) job 模板
    protobuf 无proto 解码 decode 语言 java python
    mitmproxy fiddler 抓包 填坑
    android adb 常用命令
    android机器人 模拟 踩坑过程
    RabbitMQ添加新用户并支持远程访问
    Windows下RabbitMQ安装及配置
    Java mybatis mysql 常用数据类型对应关系
    easyExcel 踩坑
    linux防火墙查看状态firewall、iptable
  • 原文地址:https://www.cnblogs.com/sweat123/p/4912736.html
Copyright © 2011-2022 走看看