线性规划对偶问题学习笔记
线性规划对偶问题学习笔记
今天做FJ省队集训感觉需要用KM,然后来学
由于我数学太弱,可能会用比较通俗的语言解释,数学符号混乱注意。
线性规划
线性规划通常可以用矩阵的形式表示为:
定义 \(m \times n\) 的矩阵 \(A\) 和向量 \(\mathbf{b}=\left[b_{1}, \cdots, b_{m}\right]^{T}, \mathbf{c}=\left[c_{1}, \cdots, c_{n}\right]\),求\(\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_j\leq 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}\right)\) 乘系数的形式。而 \(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个点),一定是最优的。