You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于线性规划中可行域顶点数量及非零分量特性的技术问询

关于线性规划中可行域顶点数量及非零分量特性的技术问询

嘿,我来帮你把这个线性规划里的顶点问题掰明白~先从你疑惑的组合数公式和非零分量特性的根源说起:

先明确顶点(Corner)的核心定义

首先得把线性规划里的顶点(也就是可行域的极点)说清楚:它是满足两个条件的向量$x$:

  • 满足约束$Ax = b$和$x \geq 0$
  • 不能被可行域内任意两个不同的点$x_1$、$x_2$的线性组合表示(简单说就是“凸多面体的尖儿,没法被其他点凑出来”)

为什么顶点最多有m个非零分量?

咱们默认$A$是行满秩的(也就是m个方程是线性无关的,没有冗余约束),n个未知数且$n>m$。
如果某个解$x$有超过m个非零分量,那这些非零分量对应的$A$的列向量,在m维空间里必然是线性相关的(因为m维空间里最多只能有m个线性无关的向量)。这意味着我们可以调整这些非零分量的取值——比如给某些分量加一点,另一些减一点,让它们的组合仍然满足$Ax=b$,同时能把其中某个分量降到0,得到两个新的可行点。原来的那个点其实就是这两个新点的线性组合,所以它根本不是顶点!

反过来,只有当$x$的非零分量对应的$A$的列向量是线性无关的时候,这个点才是顶点。而线性无关的列最多只能选m个(因为A的行秩是m),所以顶点最多有m个非零分量。

顶点数量公式$C(n,m)=n!/(m!(n-m)!)$的来源

这个组合数其实是在算候选顶点的最大可能数量
从n个未知数里挑出m个,让它们作为非零分量,剩下的$n-m$个直接设为0。然后解子方程组$A_{:,S}x_S = b$(这里S是你挑的那m个变量的下标集合)。如果这个子方程组有唯一解,而且解的每个分量都是正的(满足$x\geq0$),那这个点就是一个有效顶点。

当然不是所有的选法都能得到有效顶点——比如解出来可能有负分量,那就不符合约束,会被排除。但理论上最多有这么多个候选顶点,这就是那个公式的由来。

用两个3D平面的例子直观理解

咱们拿$m=2$(两个方程)、$n=3$(三个未知数)的情况举例,约束条件设为:

$x_1 + x_2 + x_3 = 4$
$x_1 + 2x_2 = 3$
同时满足$x_1,x_2,x_3 \geq 0$

现在按组合数$C(3,2)=3$种选法来试:

  • 选$x_1,x_2$作为非零分量,设$x_3=0$
    解方程组$\begin{cases}x_1 + x_2 = 4 \ x_1 + 2x_2 = 3\end{cases}$,得到$x_2=-1$,$x_1=5$。$x_2$是负数,不符合$x\geq0$,所以这个不是有效顶点。
  • 选$x_1,x_3$作为非零分量,设$x_2=0$
    解方程组$\begin{cases}x_1 + x_3 = 4 \ x_1 = 3\end{cases}$,得到$x_1=3$,$x_3=1$,都是正数,所以$(3,0,1)$是一个有效顶点。
  • 选$x_2,x_3$作为非零分量,设$x_1=0$
    解方程组$\begin{cases}x_2 + x_3 = 4 \ 2x_2 = 3\end{cases}$,得到$x_2=1.5$,$x_3=2.5$,都是正数,所以$(0,1.5,2.5)$是一个有效顶点。

另外你可能会问:有没有非零分量少于m的顶点?比如只有1个非零分量?咱们试一下:

  • 设$x_2=x_3=0$,代入第二个方程得$x_1=3$,但第一个方程是$3+0+0=3≠4$,不满足$Ax=b$,不是解;
  • 设$x_1=x_3=0$,第二个方程得$x_2=1.5$,第一个方程是$0+1.5+0=1.5≠4$,不满足;
  • 设$x_1=x_2=0$,第一个方程得$x_3=4$,第二个方程是$0+0=0≠3$,不满足。

所以这个例子里只有2个有效顶点,是从3个候选里筛选出来的——这也对应了我之前说的:组合数是最大可能的候选数,实际有效顶点数量可能更少。

再回到你提到的单个平面($m=1$,$n=3$)的例子:约束$x_1+x_2+x_3=4$,$x\geq0$。这时候选1个变量非零,另外两个为0,得到的$(4,0,0)$、$(0,4,0)$、$(0,0,4)$都是有效顶点,正好是$C(3,1)=3$个,完全符合公式。

备注:内容来源于stack exchange,提问作者user1049492

火山引擎 最新活动