【理论学习】拟阵
为什么要有拟阵?
我们先不说拟阵是什么,而说一下为什么拟阵这个东西会出现。
在线性代数里,我们有“线性无关”这个概念。但它是用于矩阵中的向量组的。
数学家(比如1935年的Hassler Whitney)想把“线性无关”这个概念以一种特别一般的形态抽象出来,就有了跟“矩阵”名字很像的拟阵结构。
什么是拟阵?
因此,矩阵中线性无关的向量组就给出了第一个拟阵的实例。
矩阵
拟阵是这样一个二元结构:
其中
;(遗传性) 若
且 ,那么存在某个元素 ,使得 。(交换性)
集族
继续用向量线性无关的例子来理解上面两个性质:
如果一堆向量线性无关,那么从里面取出任意几个向量,它们也肯定线性无关。
如果第二组向量的秩比第一组向量的秩大,那么第二组向量中一定能拿出第一组向量没法线性表示的一个向量,把这个向量和第一组向量合并起来就可以生成一个更大的线性无关组。
另外,如果存在独立子集
如果一个独立子集不存在扩展,那就称它是最大的(事实上一般这种性质会被叫做极大的,但下面的定理会告诉我们为什么它们在拟阵中是一样的)。
容易发现,一个拟阵的所有最大独立子集的大小都是相等的,这是因为,如果有某个最大集比另一个最大集更大,那么根据交换性,我们可以扩充那个较小的最大集,这与最大的定义矛盾。
图拟阵
拟阵的一个重要例子就是图拟阵
定义为 ,即 的边集。 如果
是 的子集,则 当且仅当 是无圈的。也就是说,一组边 是独立的当且仅当子图 形成一个森林。
此处省略
拟阵与贪心算法
拟阵有很多用处,最常见的用处就是证明贪心算法的正确性。也就是说,只要一个问题对象的结构可以被构造为一个拟阵,那么这个问题就可以直接用贪心算法正确求解。具体来说:
如果一个拟阵关联一个权重函数
给定一个加权拟阵
最小生成树问题就是一个最优子集问题,只要令边的权重函数为
所有最优子集问题都有一个统一的贪心算法:
GREEDY(
1
2 把
3 for 每个
4 if
5
6 return
该算法的正确性由拟阵的性质保证,不作证明。