线性规划问题总结

线性规划问题

 

线性规划问题一般都是如下形式

给定若干个不等式

$a_{11}x_{1}+a_{12}x_{2}+……+a_{1n}x_{n}\ leq b_{1}$

$a_{21}x_{1}+a_{22}x_{2}+……+a_{2n}x_{n} \leq b_{2}$

$a_{31}x_{1}+a_{32}x_{2}+……+a_{mn}x_{n} \leq b_{m}$

满足未知变量.

$x_{i} \geq 0$

最大化函数

$\sum_{i=1}^{n}c_{i}x_{i}$

 

解决线性规划问题的有效方法是单纯形法。

 

网络流是线性规划的对偶问题,因为

对于每一个点流入流量$=$流出流量

对于每一条边流量$\leq$流量限制

故俩种算法之间可以互相代替。

 

单纯形

 占坑

 

网络流&&费用流

 

dinic算法

 

dinic算法就比较玄学了,每次dfs出一条流量流过的路径,然后暴力去跑

跑的时候先bfs一遍,dfs时保证按照深度递增顺序去搜索就能快一些

但是同时怎么保证正确性呢

每次有一定的流量流过就有一条边就给这条边的反向边加上流过的流量

这样就相当于我们可以后悔,撤回一些之前的操作

 

如果是费用流问题,那么就给每一个边加上一个边权表示流过代表的费用

每次用spfa跑出一条费用最小的路去流,同时也给反向边加流量,当然反向边的费用是对应边的相反数

这一路上记录一下每个点都是从哪个边来的是最短路,做的时候先走一遍取最小值是流过的流量

然后正常做就好了

 

什么时候用网络流?

 

个人理解:当题目条件具有明显的自适应性质。

即在这个约束条件下无法dp,同时还显然贪心等算法均不正确。

 

性质1:最大流$=$最小割

性质2:平面图最小割$=$对偶图最短路

补充:对偶图就是将平面图的每一片区域看作一个点,将分开俩个区域的边连到对应的俩个点上形成的新图

性质3:二分图最大独立集=点数-最大匹配

Hall定理:若二分图每个点度数均为$k$,则存在$k$完备匹配

 

最大权闭合子图

有$n$个物品,对应价值$v_{i}$(有正负),每个物品有若干个限制,即$x_{i}$与$y_{i}$必须一起选。

构图:正价值与$S$相连,负价值与$T$相连,限制之间用流量为$inf$的边表示不可割断的限制条件,流量为价值绝对值

做法:先将所有正的价值加起来,再减去最小割。

证明:割掉正价值物品相当于不选,割掉负价值相当于选了,这样有边相连的物品之间,要不选正值,要不割负值。

 

集合划分

每个变量$x_{i}\in{0,1}$,最小(大)化$\sum p_{i}x_{i}+\sum w_{i,j}max(x_{i}-x_{j},0)$

即每个物品有价值,若某几个物品不同时选或不选会付出代价

构图:根据选或者不选,即$x_{i}$取值划分成俩个集合,套用最小割模型

但是若题目改为某几个物品同时选或不选会付出代价

需要要求原图为二分图,然后进行黑白染色,即已经给所有物品划定了选或不选,再考虑集合划分

 

最小路径覆盖

每个点拆为入度和出度,相当于二分图,最小路径覆盖=点数-二分图最大匹配

每一对匹配点相当于原图中路径的延伸

posted @ 2018-09-15 20:05  2018szb  阅读(455)  评论(0)    收藏  举报