线性规划对偶问题学习笔记
今天做FJ省队集训感觉需要用KM,然后来学
由于我数学太弱,可能会用比较通俗的语言解释,数学符号混乱注意。
线性规划
线性规划通常可以用矩阵的形式表示为:
定义 (m imes n) 的矩阵 (A) 和向量 (mathbf{b}=left[b_{1}, cdots, b_{m} ight]^{T}, mathbf{c}=left[c_{1}, cdots, c_{n} ight]),求(mathbf{x}=[x_1,cdots,x_n]^T),满足以下条件
这里B、X就当它是一个竖着的数组,只是为了方便用数学语言表示之后的乘
这是什么意思呢?首先cx就是(sum_{i} x_ic_i),即物品总价值
然后有若干个约束,AX<=b 就是我们开对每一行(A_i),有(sum_j A_{i,j}x_jleq b_i)
表示每单位每个物品 (j) 需耗费(A_{i,j})单位材料 (i),(b_i)为材料总单位数
对偶问题
每个线性规划问题,称为原问题,都可以变换为一个对偶问题。上述问题的对偶问题为:
我们现在考虑另一个公司要买原来公司的材料,y表示购买单位材料的价值。显然原来的企业只有卖材料的收益比卖物品高的时候才会卖材料,那么我们只要最小化购买单位材料的总价值,之前物品的收益就最高。感性理解一波,相当于从上面逼近。
by是所有材料的价值,(A^Ty)是一种物品的材料价值
对偶问题推论
我们知道 (A_{i} mathbf{x} leq b_{i}) 会对偶成 (y_{i},) 且 (y_{i} geq 0) 。那么对于 (A_{i} mathbf{x} geq b_{i}) 和 (A_{i} mathbf{x}=b_{i}) 的条件又如何对偶?
(A_{i} mathbf{x} geq b_{i}) 可以写成 (-A_{i} mathbf{x} leq-b_{i},) 那么就可以照常对偶。
对于 (A_{i} mathbf{x}=b_{i},) 我们可以写成两个条件 (A_{i} mathbf{x} leq b_{i}) 且 (-A_{i} mathbf{x} leq-b_{i}) 。这样会对偶出两个变量 (y_{i}^{prime}) 和 (y_{i} ") 。而
他们的系数是恰好相反的,因此可以合并成 (left(y_{i}^{prime}-y_{i}^{prime prime}
ight)) 乘系数的形式。而 (y_{i}^{prime}-y_{i}^{prime prime}) 没有 (geq 0) 的限制。因此(A_{i} mathbf{x}=b_{i}) 会对偶出变量 (y_{i},) 且 (y_{i}) 没有 (geq 0) 的限制。
单纯形算法
看不懂 不会 挖坑
例题
NOI2008 志愿者招募
ZJOI2013 防守战线
KM算法
https://www.cnblogs.com/fzl194/p/8834847.html
这东西也不难懂,大概就是给每个点分配一个权值,然后权值相加等于边权的时候才能匹配。不能匹配的时候就把左边都减1,右边都加1,那么对于原来的边不受影响,还新增了可能匹配的边,然后总权值之减了1(左边n个点,右边n-1个点),一定是最优的。