线性规划
哎哎,我怎么什么都不会啊。
参考了董克凡的集训队论文和这篇博文
写着写着发现太长了,于是把一些专题性的东西重新开了一篇来写。
线性规划
一般用于解决满足线性约束条件下的线性函数极值问题。
对于一组实数 \(a_1,a_2\cdots a_n\) 与一组变量 \(x_1,x_2\cdots x_n\)。其上的一个线性函数被定义为:
\(f(x_1,x_2\cdots x_n)=\sum\limits_{i=1}^na_ix_i\)
等式 \(f(x_1,x_2\cdots x_n)=b\),不等式 \(f(x_1,x_2\cdots x_n)\le b,f(x_1,x_2\cdots x_n)\ge b\) 统称为线性约束。
一个线性规划问题就是给定若干线性约束和目标线性函数,求出在满足约束下的函数极值。
称满足约束的一组解为可行解,使目标函数达到最优解的解为最优解,所有可行解构成的空间为解空间。
线性规划的标准形式:
形如:
最大化 \(\sum\limits_{i=1}^nc_ix_i\)
满足约束 \(\forall i\in[1,m],\sum\limits_{j=1}^na_{i,j}x_j\le b_i\)
\(\quad\quad\quad \forall i\in[1,n],x_i\ge 0\)
被称为线性规划的标准形式。容易发现,任何线性规划都可以转化成标准形式。
求的函数是最小值,直接取负后求最大值。
线性约束形如 \(f(x_1,x_2\cdots x_n)=b\),转化为 \(f(x_1,x_2\cdots x_n)\le b\land f(x_1,x_2\cdots x_n)\ge b\)
线性约束 \(f(x_1,x_2\cdots x_n)\ge b\) 可表示为 \(-f(x_1,x_2\cdots x_n)\le b\)
对于没有值域约束的变量 \(x\),将其表述为 \(x_0-x_1\),其中 \(x_0,x_1\ge 0\)。
线性规划的松弛形式
形如:
最大化 \(\sum\limits_{i=1}^nc_ix_i\)
满足约束 \(x_{i+n}=b_i-\sum\limits_{j-1}^na_{i,j}x_j,i\in [1,m]\)
\(\quad\quad\qquad x_j\ge 0,j\in [1,n+m]\)
的被称之为线性规划的松弛形式。
可以把它写成矩阵形式:
最大化 \(c^Tx\),满足约束 \(Ax=b,x\ge 0\)。
易于将标准形式转变为松弛形式,对于标准形式中的约束 \(f_i(x_1,x_2\cdots x_n)\le b_i\),新增变量 \(x_{i+n}=b_i-f_i(x_1,x_2\cdots x_n)\ge 0\),仍然满足限制。
线性规划解的性质
1.线性规划的解空间是凸空间:
显然任意一条线性约束对应的解空间是凸空间,故所有约束的解空间的交为凸空间。
一般来说,我们讨论的是有限空间内的最优解问题。
2.线性规划最优解的取值一定位于解空间的顶点。
不妨设有 \(k\) 个顶点 \(x_1,x_2\cdots x_k\)。
最优解 \(x_0\) 是若干顶点的线性组合,即 \(x_0=\sum\limits_{i=1}^k\lambda_ix_i\land\sum\lambda=1\),由于目标函数为线性函数,所以 \(f(x_0)=\sum\limits_{i=1}^k\lambda_if(x_i)\)。
对于所有顶点中,使得目标函数函数值最大的点 \(x_k\),显然有 \(f(x_0)=\sum\limits_{i=1}^k\lambda_if(x_i)\le\sum\limits_{i=1}^k\lambda_if(x_k)=f(x_k)\)。
故线性规划的最优解一定可以在顶点处取得。
3.线性规划的解具有单调性,局部最优解等于全局最优解
由于最优解一定在顶点处取得,不妨把目标函数可视化为高维空间中的低维平面在切这个解空间,最后在切到某个顶点时取得最优解。
在这个过程中,函数值是单调递增的,由于解空间是一个凸空间,故线性规划的解具有单调性,由此可得局部最优解等于全局最优解。
4.解空间的顶点对应松弛形式所有约束的一个基,一个基对应解空间的一个顶点
由于不想画图,使用了来自 Kenneth-Wong 博客的图。
对于一个松弛形式的约束:
取一个顶点 \((0,2,0)\) 分析,可以算出来一个完整解 \((0,2,0,2,2,2,3,0)\),则这几列线性无关。
若这几列线性相关,即存在行向量 \(\lambda\ne 0\) 使得 \(A\lambda=0\),那么存在显然两个解 \(x'=x+\theta\lambda,x''=x-\theta\lambda\),显然都满足 \(Ax=b\),可以控制 \(\theta\) 的取值使得 \(x',x''\) 都大于 \(0\),故 \(x',x''\) 都在解空间中,所以 \(x=\frac{x'+x''}{2}\),这是有问题的,因为凸空间的顶点不能被表示成空间内点的线性组合。故这些向量线性无关。
因为 \(m\le n\),在这里 \(n\) 是松弛后变量数,故有 \(m\) 为基变量,\(n-m\) 维非基变量,这 \(m\) 维是一个基。所以解空间的一个顶点对应一个基。对于一组解,可以把它写成如下的形式。
。
发现这就是上文我们描述松弛形式的式子,我们在这里再给出一些定义。
对于一个松弛形式的线性规划:
最大化 \(\sum\limits_{i=1}^nc_ix_i\)
满足约束 \(x_{i+n}=b_i-\sum\limits_{j-1}^na_{i,j}x_j,i\in [1,m]\)
\(\quad\quad\qquad x_j\ge 0,j\in [1,n+m]\)
将约束式子左边的变量称为基变量,他们代表了线性规划的一组解。式子右边的变量称之为非基变量。
求解线性规划-单纯形法
整理我们得到的结论:
线性规划的最优解在解空间的的顶点处取得。
线性规划具有单调性,局部最优解等于全局最优解。
解空间的一个顶点对应一个基,一个基对应一个顶点。
线性规划的松弛形式中,约束式子左边的 \(m\) 个变量是基变量,这些变量构成的基对应一个顶点。其余的 \(n\) 个非基变量对应自由变量。
尝试设计算法:随便选一个在顶点上的初始解,通过移动顶点,判断是否能让答案变得更大,直到不能再移动,根据线性规划解的性质,此时一定是最优解。
1.选取初始解:
若松弛形式的线性规划满足 \(\forall i\in[1,m],b_i\ge0\),此时有一组显然的初始解,取 \(x_{n+1}\cdots x_{n+m}\) 为基变量,剩下的非基变量取 \(0\),这显然是一组基,他对应了一个顶点,此时 \(x_{i+n}=b_i\)。注意一定要满足 \(b_i\ge 0\)(存在不满足的情况会在后面的篇幅讨论)。
2.移动顶点直到最优解:
这涉及了单纯形法的两个基本操作:转轴(pivot)和 simplex。
pivot
转轴即变量之间的代换,其作用为将基变量 \(x_B\) 与非基变量 \(x_N\) 互换位置,使 \(x_B\) 称为非基变量,\(x_N\) 替代 \(x_B\) 成为基变量,总而达到基的变换和函数值的变换。
具体地,用 \(x_B\) 替换 \(x_N\) 时:
\(x_B=b_i-\sum\limits_{j=1}^na_{i,j}x_j\)
\(x_N=\frac{(b_i-x_B-\sum\limits_{j\ne N}a_{i,j}x_j)}{a_{i,N}}\)
用这个式子将所有限制中的 \(x_N\) 替换并用这个式子替代 \(X_b\) 就实现了 \(x_B\) 和 \(x_N\) 的替换。注意一定要保证 \(a_{i,N}\ne 0\)。
simplex
从一个基本解出发,通过若干次 pivot 达到最优解的过程。
不妨举例,在松弛形式:
最大化 \(3x_1+x_2+2x_3\)
满足约束:
\(x_4=30-x_1-x_2-3x_3\)
\(x_5=24-2x_1-2x_2-5x_3\)
\(x_6=36-4x_1-x_2-2x_3\)
\(x_i\ge 0,i\in[1,6]\)
中,初始的基本解为 \((0,0,0,30,24,36)\),此时目标函数 \(f(x)=0\)。
将 \(x_1\) pivot 为基变量,因为此时 \(x_1\) 的系数为正,故增大 \(x_1\) 可向更优靠拢(也就是说实际上 \(x_2,x_3\) 也是可以的)。
考虑 \(x_4,x_5,x_6\) 对 \(x_1\) 的限制,易于得到分别为 \(x_1\le 30,x_1\le 12,x_1\le 9\),从中取对 \(x_1\) 限制最紧的一项作为 pivot 的对象,此处应选择 \(x_6\)。
将限制三修改为 \(x_1=9-\frac{x_2}{4}-\frac{x_3}{2}-\frac{x_6}{4}\),再修改可得到这次 pivot 后的线性规划:
最大化 \(27+\frac{x_2}{4}+\frac{x_3}{2}-\frac{3x_6}{4}\)
满足约束:
\(x_4=21-\frac{3x_2}{4}-\frac{5x_3}{2}+\frac{x_6}{4}\)
\(x_5=6-\frac{3x_2}{2}-4x_3+\frac{x_6}{2}\)
\(x_1=9-\frac{x_2}{4}-\frac{x_3}{2}-\frac{x_6}{4}\)
\(x_i\ge 0,i\in[1,6]\)
此次 pivot 后,目标函数值成为了 \(27\)。
这个线性规划和原规划是等价的,同时,因为我们选择了对新的基变量限制最紧的作为 pivot 对象,易于证明 pivot 后仍然满足 \(b_i\ge 0\)。
重复这一过程知道不存在 \(f(x)\) 中存在正系数,此时达到了局部最优解,根据以上的讨论,这就是全局最优解。
simplex(A,b,c){
initializition(A,b,c)
while exists i that c[i] > 0{
find the index p that
A[p][i] > 0 and minimizes b[p]/A[p][i]
if not exists : return unbounded
else : pivot(A,b,c,p,i)
}
}
即求解满足 \(Ax=b,\max\sum\limits_ic_ix_i\) 的过程。
注意当不存在对 \(i\) 做出有效约束的 \(p\) 时,原线性规划无界。
发现有一行 initializition
操作,即寻找原线性规划的一组可行解。在 \(\forall b_i\ge 0\) 使,可以选择等式左边所有变量作为基变量。但有时并不存在合适的初始解,这是下面要讨论的。
为了求出一组可行的初始解,引入一个辅助的线性规划:
最大化 \(-x_0\)
满足约束 \(x_{i+n}=b_i-\sum\limits_{j=1}^na_{i,j}x_j+x_0,i\in[1,m]\)
\(\quad\qquad x_i\ge0,i\in[0,n+m]\)。
若原线性规划存在可行解 \((x_1,x_2\cdots x_n)\),则 \((0,x_1,x_2\cdots x_n)\) 是辅助线性规划的一组可行解,又因为 \(x_0\ge 0\),故这就是辅助线性规划的最优解。
于是求出辅助线性规划的最优解,因为 \(x_0=0\),直接将其从线性规划中踢出,达到的就是原线性规划的一组可行解。
发现这组辅助线性规划的初始解是易于构造的,把 \(x_0\) 视为 pivot 中的换入变量,选择 \(b_p\) 最小的 \(p\) 作为换出变量,这次操作后,第 \(p\) 个限制便成了
\(x_0=-b_p+\sum\limits_{j=1}^na_{i,j}x_j+x_{p+n}\),满足 \(b_p>0\)。
对于其他的约束:
\(x_{i+n}=-b_p+b_i+\sum\limits_{j=1}^n(a_{p,j}-a_{i,j})x_j+x_{p+n}\),由于 \(b_p\) 是最小的,故 \(-b_p+b_i\) 大于 \(0\)。
对这个初始解 simplex 一遍即可。
求出最优解后,要把 \(x_0\) 剔除,若此时 \(x_0\) 为非基变量,由于 \(x_0-0\),直接删掉即可。若此时 \(x_0\) 为基变量,则先把它 pivot 成非基变量,再剔除即可。
例如,对于线性规划:
最大化 \(2x_1-x_2\)
满足约束
\(x_3=2-2x_1+x_2\)
\(x_4=-4-x_1+5x_2\)
\(x_1,x_2,x_3,x_4\ge0\)
引入辅助线性规划:
最大化 \(-x_0\)
满足约束
\(x_3=2-2x_1+x_2+x_0\)
\(x_4=-4-x_1+5x_2+x_0\)
\(x_0,x_1,x_2,x_3,x_4\ge0\)
\(x_4\) 对应的 \(b\) 最小,因此 \(\operatorname{pivot}(x_0,x_4)\) 得:
最大化 \(-4-x_1+5x_2-x_4\)
满足约束
\(x_3=6-x_1-4x_2+x_4\)
\(x_0=4+x_1-5x_2+x_4\)
\(x_0,x_1,x_2,x_3,x_4\ge0\)
得到基本解 \((4,0,0,6,0)\),通过一系列的 simplex,最后变成了
最大化 \(x_0\)
满足约束
\(x_3=\frac{14}{5}+\frac{4x_0}{5}-\frac{9x_1}{5}+\frac{x_4}{5}\)
\(x_2=\frac{4}{5}-\frac{x_0}{5}+\frac{x_1}{5}+\frac{x_4}{5}\)
\(x_i\ge0,i\in[0,4]\)
剔除 \(x_0\),考虑原来的目标函数 \(2x_1-x_2\),由于 \(x_2\) 为基变量,用非基变量替换,那么就有新的线性规划:
最大化 \(\frac{4}{5}+\frac{9x_1}{5}-\frac{x_4}{5}\)
满足约束:
\(x_3=\frac{14}{5}-\frac{9x_1}{5}+\frac{x_4}{5}\)
\(x_2=\frac{4}{5}+\frac{x_1}{5}+\frac{x_4}{5}\)
\(x_i\ge0,i\in[1,4]\)。
于是就可以 simplex 求解。
至此,我们成功了求解一个线性规划。
复习一下过程:
将普通的线性规划写成松弛形式。
若对所有的 \(i\in[1,m]\) 都有 \(b_i\ge0\),将 \(x_{n+1}\cdots x_{n+m}\) 当作基变量,否则,引入辅助线性规划。这一步的目的是为了得到一组初始的基本解。
得到基本解后,通过若干次 pivot 操作向更优的方向逼近并达到局部最优解,根据线性规划解的性质,得到的就是全局的最优解。
最后是时间复杂度,执行单次 pivot 操作的复杂度是 \(O(nm)\),但是其执行次数没有保证,故单纯形法不是多项式时间啊复杂度的,但由于其代码简单,实际运行效率很高,所以运用较为广泛。
不过,线性规划有多项式复杂度解法,只是 OI 中似乎不常用。
模板题,需要手写高精。
//省略高精模板
inline int sgn(db x){return x>=-eps&&x<=eps?0:(x<0?-1:1);}
int n, m, t, id[50]; db a[50][50], rs[50];
inline void rd(db &x){int y; std::cin >> y; x=y;}
void pivot(int x, int y){
std::swap(id[n+x], id[y]); db d = -a[x][y];
for(int i = 0; i <= n; i++) a[x][i] /= d; a[x][y] = -1.0/d;
for(int i = 0; i <= m; i++) if(i!=x&&sgn(a[i][y])){
d = a[i][y], a[i][y] = 0;
for(int j = 0; j <= n; j++) a[i][j] += a[x][j] * d;
}
}
void initialize(){
while(1){
int x=1,y=0;for(int i=1;i<=m;i++)if(a[i][0]<a[x][0])x=i;
if(sgn(a[x][0]) >= 0) break;
for(int j=1;j<=n;j++) if(sgn(a[x][j])>0&&(!y||id[j]>id[y])) y=j;
if(!y) puts("Infeasible"),exit(0); pivot(x, y);
}
}
void simplex(){
for(int i=1;i<=n+m;i++) id[i]=i;initialize();
while(1){
int x=0,y=1;for(int i=1;i<=n;i++)if(a[0][i]>a[0][y])y=i;
if(sgn(a[0][y])<=0) return;
for(int i=1;i<=m;i++) if(sgn(a[i][y])<0){
if(!x){x = i; continue;}
int op=sgn(-(a[i][0]*a[x][y]-a[x][0]*a[i][y]));
if(op<0||(op==0&&(!x||id[i]>id[x]))) x = i;
} if(!x) puts("Unbounded"), exit(0); pivot(x, y);
}
}
int main(){
eps.n=5,eps[4]=1;
std::ios::sync_with_stdio(false);
std::cin>>n>>m>>t;
for(int i=1;i<=n;i++) rd(a[0][i]);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++) rd(a[i][j]),a[i][j]=-a[i][j];rd(a[i][0]);
} simplex(); a[0][0].pt();
if(t){
for(int i=1;i<=m;i++) rs[id[i+n]]=a[i][0];
for(int i=1;i<=n;i++) rs[i].pt(' ');
}
}
将问题转换为线性规划问题
一道例题
\(A,B\) 两个人发现了 \(n\) 块石头,第 \(i\) 块对 \(A\) 的价值为 \(A_i\),对 \(B\) 的价值为 \(B_i\),且石头的价值与其体积成正比(即把一块石头切成两半,对于一个人的价值也是原来的一半)。
现在要分配这些石头,使得两个人得到的价值相同,最大化价值。
易于写成这些式子:
\(V_a=\sum\limits_{i=1}^np_iA_i,V_b=\sum\limits_{i=1}^n(1-p_i)B_i\)
最大化 \(V_a\)
满足 \(V_a=V_b\)
可以通过观察发现 \(V_a=V_b\) 可以放宽成 \(V_a\le V_b\)。因为这时候可以把一部分 \(V_b\) 转化成 \(V_a\) 的价值。故原规划可改写为:
最大化 \(\sum\limits_{i=1}^np_iA_i\)
满足约束
\(\sum\limits_{i=1}^np_i(A_i+B_i)\le\sum\limits_{i=1}^nB_i\)
\(\forall i,0\le p_i\le 1\)。
最大流问题
需满足除源汇以外的点流量守恒,但是不妨从汇点向源点连一条容量为 \(\infty\) 的边,使得流量守恒对每个点都成立。
用 \(c(u,v)\) 表示 \((u,v)\) 这条边的容量。\(f(u,v)\) 表示流量,显然最大流即 \(f(t,s)\)
可以写出线性规划:
最大化 \(f(t,s)\)
满足约束
\(f(u,v)\le c(u,v),(u,v)\in E\)
\(\sum\limits_vf(u,v)=\sum\limits_vf(v,u),u\in V\)
\(f(u,v)\ge0,(u,v)\in E\)
最小费用流问题
注意,不是最小费用最大流问题。即:
最小化 \(\sum\limits_{(u,v)\in E}f(u,v)w(u,v)\)
满足约束
\(f(u,v)\le c(u,v),(u,v)\in E\)
\(\sum\limits_vf(u,v)=\sum\limits_vf(v,u),u\in V\)
\(f(u,v)\ge0,(u,v)\in E\)
多物费用流问题
问题即:有 \(n\) 对源汇,\((s_1,t_1)\cdots(s_n,t_n)\),这些源汇共用一个流网络,对于一对 \((s_i,t_i)\),要求其流量不小于 \(d_i\),判断是否可行。
尝试写出其线性规划,由于只需判断是否可行,将目标函数置为 \(0\):
最大化 \(0\)
满足约束
\(\sum\limits_if_i(u,v)\le c(u,v),(u,v)\in E\land i\in[1,n]\)
\(\sum\limits_vf_i(u,v)=\sum\limits_vf_i(v,u),u\in V\land i\in[1,n]\)
\(f_i(t_i,s_i)\ge d_i,i\in[1,n]\)
\(f_i(u,v)\ge0,(u,v)\in e\land i\in[1,n]\)
这个问题已知唯一的多项式复杂度解法是使用多项式复杂度的算法解决以上那个线性规划。
对偶问题
不妨以这个规划作为引入:
最小化 \(7x_1+x_2+5x_3\)
满足约束
\(x_1-x_2+3x_3\ge10\)
\(5x_1+2x_2-x_3=\ge6\)
\(x_i\ge0,i=1,2,3\)
不难发现这个东西的下界至少是 \(10\)。因为约束中第一个式子每项的系数都小于目标函数,而线性规划的解满足任意变量都不为负值。
同理可以得到更紧的下界 \(16\)。因为两个约束式子相加,仍然满足系数小于目标函数。形式化的表达这样寻找下界的过程。
\(f(y_1,y_2)=y_1(x_1-x_2+3x_3)+y_2(5x_1+2x_2-x_3)\)
\(=(y_1+5y_2)x_1+(-y_1+2y_2)x_2+(3y_1-y_2)x_3\ge 10y_1+6y_2\)
就是在分别满足 \(y_1+5y_2\le7,-y_1+2y_2\le1,3y_1-y_2\le5\) 的情况下,最大化 \(10y_1+6y_2\)。
发现这也是一个线性规划的形式,即
最大化 \(10y_1+6y_2\)
满足约束
\(y_1+5y_2\le7\)
\(-y_1+2y_2\le1\)
\(3y_1-y_2\le5\)
\(y_i\ge0,i=1,2\)
把这个线性规划称为原规划的对偶。对这个规划再做一遍对偶,发现他又变成了原规划。也即,线性规划的对偶是相互的,最小化问题和最大化问题可以互相对偶成。
形式化的:
对于原始线性规划:
最小化 \(\sum\limits_{j=1}^nc_jx_j\)
满足约束 \(\sum\limits_{j=1}^na_{i,j}x_j\ge b_i,i\in[1,m]\)
\(x_j\ge0,j\in[1,n]\)
其对偶问题为:
最大化 \(\sum\limits_{i=1}^mb_iy_i\)
满足约束 \(\sum\limits_{i=1}^ma_{i,j}y_i\le c_j,j\in[1,m]\)
\(y_i\ge0,i\in[1,m]\)
用矩阵更形象的表述
最小化 \(c^Tx\),满足约束 \(Ax\ge b,x\ge0\) 与
最大化 \(b^Ty\),满足约束 \(A^Ty\le c,y\ge0\) 互为对偶线性规划
线性规划对偶的性质
定理一:(线性规划的弱对偶性)
若 \((x_1,x_2\cdots x_n)\) 为原问题的可行解,\((y_1,y_2\cdots y_m)\) 为其对偶问题的一组可行解,那么:
\(\sum\limits_{j=1}^nc_jx_j\ge\sum\limits_{i=1}^mb_iy_i\)
证明:
\(y\) 是原问题对偶问题的一组解,故一定满足 \(c_j\ge\sum\limits_{i=1}^ma_{i,j}y_i\),由于 \(x_i\ge0\),有:
\(\sum\limits_{j=1}^nc_jx_j\ge\sum\limits_{j=1}^n(\sum\limits_{i=1}^ma_{i,j}y_i)x_j\)
同理有 \(\sum\limits_{i=1}^m(\sum\limits_{j=1}^na_{i,j}x_j)y_i\ge\sum\limits_{i=1}^mb_iy_i\)
显然有 \(\sum\limits_{j=1}^n(\sum\limits_{i=1}^ma_{i,j}y_i)x_j=\sum\limits_{i=1}^m(\sum\limits_{j=1}^na_{i,j}x_j)y_i\)
故 \(\sum\limits_{j=1}^nc_jx_j\ge\sum\limits_{j=1}^n(\sum\limits_{i=1}^ma_{i,j}y_i)x_j=\sum\limits_{i=1}^m(\sum\limits_{j=1}^na_{i,j}x_j)y_i\ge\sum\limits_{i=1}^mb_iy_i\)
即对偶问题的可行解是原问题的解的下界,我们接下来要证明下界和上界可以同时取得。
定理二:(线性规划的对偶性)
若 \(x^*=(x_1,x_2\cdots x_n),y^*=(y_1,y_2\cdots y_m)\) 为原问题和对偶问题的最优解,那么:
\(\sum\limits_{j=1}^nc_jx_j=\sum\limits_{i=1}^mb_iy_i\)
这个定理的证明有点长,我再开一篇来写。
定理三:(互松弛定理)
\(x,y\) 是原问题和对偶问题的一组可行解,这两个都是最优解当且仅当满足下面两条:
\(\forall j\in[1,n],x_j=0\lor\sum\limits_{i=1}^ma_{i,j}y_i=c_j\)
\(\forall i\in[1,m],y_i=0\lor\sum\limits_{j=1}^na_{i,j}x_j=b_i\)
被称为互松弛定理。
四:一些有趣的事实
考虑原线性规划中存在约束 \(\sum\limits_{j=1}^ma_{r,j}x_j=b_r\)
将其拆成 \(\sum\limits_{j=1}^ma_{r,j}x_j=b_i\le b_r,-\sum\limits_{j=1}^ma_{r,j}x_j\le -b_r\)
这两个约束对偶后为 \(y_r',y_r''\ge0\),那么:
\(\sum\limits_{i\ne r}a_{i,j}y_i+a_{r,j}(y_r'-y_r'')\)
令 \(y_r=y_r'-y_r''\),则 \(y_r\in \mathtt{R}\),即等式限制对偶后称为无限制。同理可得大于等于的限制对偶后成为非正变量。