【网络流】线性规划的最小割建模方式

前几天在师大附中听课,大概了解了一些关于网络流的建模方式,然后今天上午做了一些题目,在这里总结一下。

最小割的线性规划建模方式:

  有一些0/1变量Xi怎么怎么样之后会消耗某些代价或者获得某些利益,而最后的总收益可以写成如下的形式:

          min{ Σmax{Xi-Xj,0}*Wi }

    其中Wi必须是正数。

     那么假设源为1,汇为0,就将Xi连一条流量为Wi的边到Xj。

    如果有形如1-Xi之类的形式就是从源向Xi连边,Xi-0这种形式就是Xi向汇点连边。

  那么如果Wi是负数怎么办?

       比如Xi*Wi(Wi<0)

          Xi*Wi=(-Xi)*(-Wi)=(1-Xi)*(-Wi)+Wi

  这样就化成正数了,然后后面的Wi是一个常数,可以全部提到外面去。

  比如我随便YY一个题目。。一堆棋子,其中把第I个变成白色有Wi的不和谐度,变成黑色有Bi的不和谐度,如果某个i和j颜色不一样就会有Ai,j的不和谐度,要求不和谐度最小。。

  恩。。假设1是黑色,0是白色,那么线性规划出来就是

   min{Σmax{Xi,0}*Bi+Σmax{1-Xi,0}*Wi+Σmax{Xi-Xj,0}*Ai,j+Σmax{Xj-Xi,0}*Ai,j}

  那么怎么连边就显而易见了啊。。按照上面的规则连就是了,1代表源,0代表汇。

呀好丑TAT

  有时候会出现让你最大化收益的情况,其实是一样的,因为max{Ai}=-min{-Ai}

  你在里面加个负号就行了,然后化一化就好。

  如果有依赖怎么办?比如说要先选i才能选j

  那么就加上 max{Xj-Xi,0}*INF就行。如果j是1,i是0的话就会有INF的代价。好口怕QAQ。

  比如说最大闭权子图就可以这么做,按照公式推出来建边就行了,显然是正确的OwO。比如选第i件物品的代价是Wi(可正可负)

  Ans=max{min{ΣXi*Wi}+Σmax{Xj-Xi,0}*INF}=-min{-Σ{Xi*Wi}-Σmax{Xj-Xi,0}*INF}

  然后将Wi分正负进行处理,后面第二部分的那个减号就把Xj-Xi改成Xi-Xj就行了。

  线性规划建模很无脑的。。只要初中数学及格就能建了。

  总之网络流也就是建模要想一下(这不废话么摔(╯‵□′)╯︵┻━┻),跑最大流的话……随便吧,反正我是更喜欢ISAP。

 

posted @ 2015-03-30 22:04  Houjikan  阅读(1702)  评论(0编辑  收藏  举报