学习报告-论对“解向量线性关系的不同方法”的新理解
学习报告-论对“解向量线性关系的不同方法”的新理解
线性关系分为线性相关和线性无关两种,解向量之间的线性关系,就是确定这个向量的一个最大子集,使得这个子集中的向量线性无关。
容易证明,这个子集的 \(size\) 是一定的,因为从高斯消元的角度来看,主元和自由元的个数是一定的。
但是我们要求这个子集(或这个子集的某种性质)的时候,真的就是用高斯消元吗?不是的,反之,高斯消元的局限性是很大的。比如我们已经对一些向量按照其权值排好了序,我们来执行高斯消元,如果我们是一个主元一个主元来进行消元,很可能我们已经排好的序就会被一次次 \(\texttt{swap}\) 打乱,而如果我们直接按照排序顺序强行消元,那么高斯消元本身这个算法就被打乱了。
这个时候,我们就需要一种方法,使其能按照我们排好的序一个个把向量加入集合中。因为子集 \(size\) 一定,不会多也不会少,所以这样做求出的答案一定是最优的。这个方法就是贪心。
贪心地一个个往集合中加入向量,如果每个向量有一个有值的主元没有被前面的向量覆盖,那么这个向量就可以加入集合中;否则这个向量被对应的主元消元。这样看来,贪心和高斯消元其实是一个东西。
那么为什么我们说高斯消元的局限性大?因为高斯消元原算法是一个主元一个主元来的,默认可以把所有向量全部加入集合中;但是贪心不一样,它可以按照我们指定的的任意顺序一个一个加入向量,再加上其运用了高斯消元里“消元”的思想,可以认为贪心是高斯消元的完全上位替代,所以大多数人更喜欢贪心。
额,那么高斯消元的好处在哪里呢?估计只有美学价值了。不得不说,高斯消元看起来确实比贪心好看一点点。