Note -「Matroid」

cirnovsky /

Disclaimer: From Quack.

☆ 拟阵

拟阵的定义与常见性质 & 拟阵交算法

☆ 拟阵的定义与常见性质

§ 独立集系统和拟阵

定义独立集系统S=(EI)S=(E,\mathcal{I})EE是基本元素的集合,I2E\mathcal{I} \subseteq 2^{E}I\mathcal{I}中的元素称为独立集。

I\mathcal{I}需要满足遗传性:如果AIBAA \in \mathcal{I},B \subseteq A,那么BIB \in \mathcal{I}

举例:

定义在无向图G(VE)G(V,E)上的独立集系统,I\mathcal{I}是不构成环的边集合,显然满足遗传性。

求无向图的最大生成树,实际上是先给EE中每个元素赋予一个权值(边权),然后求一个权值最大的独立集。

回忆一下kruskal算法,每次选一条边权最大的边,如果把它加入答案不形成环,就把它加入答案。

推广一下,给定任意独立系统,任意给每个元素一个非负的权值,要求权值最大的独立集,容易得到下面的贪心算法:

  1. 将元素按权值从大到小排序。

  2. 按顺序依次考虑每个元素,如果把这个元素加入答案后仍然是一个独立集,就加入答案。

不幸的是,这个算法只有在特定条件下才会给出最优解。

比如考虑求二分图图的最大权值匹配,定义独立集为可以形成匹配的边集。考虑一个4个点3条边的图V={u_1,u_2,u_3,u_4},w(u_1,u_2)=w(u_3,u_4)=5,w(u_1,u_4)=8,w(u_2,u_3)=1V=\{u\_1, u\_2, u\_3, u\_4\}, w(u\_1,u\_2)=w(u\_3, u\_4)=5, w(u\_1, u\_4)=8, w(u\_2, u\_3) = 1,贪心算法会选择边(u_1,u_4),(u_2,u_3)(u\_1, u\_4), (u\_2, u\_3),权值是9,最优解是(u_1,u_2),(u_3,u_4)(u\_1, u\_2), (u\_3,u\_4),权值是10。

我们把贪心算法能够使用的独立集系统称为拟阵(matroid),比如上面定义在无向图边集上的独立集系统(一个边集是独立集当且仅当不包含环),贪心算法实际上就是kruskal算法,为了方便,给它一个名字叫图拟阵(graphic matroid)。

特别地,很多问题只要求取一个最大的独立集,即元素权重都是单位1的特殊情况,如果这个独立集系统是拟阵,我们称这种拟阵叫做unweighted matroid。

§ 拟阵的性质

那么如何判定一个独立集系统MM是不是拟阵呢?下面三条定义是等价的:

  1. MM是拟阵,任意给元素分配非负的权值,贪心算法能得到最优解。
  2. 假设有2个独立集I_1,I_2,I_2=I_1+1I\_1, I\_2, |I\_2| = |I\_1|+1,那么eI1I2,I1eI\exists e \in I_1 - I_2, I_1 \cup e \in \mathcal{I}。 通俗地讲,就是如果2个独立集大小相差1,那么一定可以从大的独立集那里拿一个给小的,使新的集合还是独立集。
  3. AEA \subseteq EI_1,I_2AI\_1, I\_2 \subseteq AAA上的极大独立集,那么I_1=I_2|I\_1|=|I\_2|。也就是EE的任意子集上的极大独立集大小相同。
证明

links

接下来引入几个概念:

  1. 秩(Rank):根据上面第3条,EE的任意子集AA上的极大独立集大小相等。这个大小就是AA的秩,记为r(A)r(A)
  2. 基(Basis):AA的基上的任意极大独立集称为AA的基。
  3. 回路(Circuit):极小的非独立集(相关集),即它本身不是独立集,但删掉任意一个元素后都是独立集。

为了方便理解,我们以图拟阵为例子. 图拟阵中任意边集AEA \subseteq Er(A)r(A)是其生成子图的生成森林边数, 基就是任意生成森林,回路就是一个简单环。

再看一个独立集系统,它的元素集合是一些维数相同的向量,独立集的定义就是线性无关的向量集合。根据线性代数的知识,任意向量集合的极大线性无关组大小相同,即满足上面的判断独立集是否是拟阵的第3条,所以该独立集系统是一个拟阵,之后我们称它为线性拟阵。 线性拟阵的秩,基都和线性代数中吻合,回路就是极小的线性相关组。

为了后面证明的方便,再引入一个概念:

  1. 闭包(closure):cl(A)={er(A+e)=r(A)}cl(A)=\lbrace e|r(A+e)=r(A)\rbrace

闭包的性质:若ecl(A)e \in cl(A),则cl(A)=cl(A+e)cl(A) = cl(A+e),也就是说,cl(A)=cl(cl(A))cl(A)=cl(cl(A))

☆ 拟阵交

§ 问题定义

有两个拟阵M_1=(E,I_1),M_2=(E,I_2)M\_1=(E,\mathcal{I}\_1),M\_2=(E,\mathcal{I}\_2),求II_1I_2I \in \mathcal{I}\_1 \cap \mathcal{I}\_2且使得I|I|尽量大。

注意这里的I_1,I_2\mathcal{I}\_1,\mathcal{I}\_2是“集合的集合”,II是“集合”。

§ 算法感性认识

∆ 类比二分图最大匹配

许多时候,一个组合优化问题并不能表示成一个拟阵,但是却可以表示成两个拟阵甚至更多拟阵的交。比如二分图匹配,之前我们已经举了一个反例说明它虽然是个独立集系统,但并不是一个拟阵。然而,我们可以把它表示成两个拟阵的交:

我们用G(L,R,E)G(L,R,E)表示一个二分图,L,RL,R分别是两边的顶点集合,EE是边集,也是拟阵的基本元素集合。

定义拟阵M_1=(E,I_1)M\_1=(E,\mathcal{I}\_1): 边集AI_1A \in \mathcal{I}\_1 当且仅当AA中边的左端点互不相同。

定义拟阵M_2=(E,I_2)M\_2=(E,\mathcal{I}\_2): 边集AI_2A \in \mathcal{I}\_2 当且仅当AA中边的右端点互不相同。

M_1,M_2M\_1,M\_2是拟阵这一点可以自行验证。那么II_1I_2I \in \mathcal{I}\_1 \cap \mathcal{I}\_2I|I|尽量大的II就是二分图的一组最大匹配。

然后回忆匈牙利算法的过程,实际上就是找增广路。假设我们是从左边的点出发找到了增广路,设这条路的边为e_1,e_2,,e_2k,e_2k+1e\_1,e\_2,\cdots,e\_{2k},e\_{2k+1}(下标为偶数的边是之前的一些匹配边),之前的整个匹配边集为II,那么I+e_1e_2+e_2k+e_2k+1I+e\_1-e\_2+\cdots-e\_{2k}+e\_{2k+1}是新的一个匹配边集。

我们从拟阵的角度来看这个过程,I+e_1I+e\_1仍然是拟阵M_1M\_1的独立集,即I+e_1I_1I+e\_1 \in \mathcal{I}\_1。但多了一条边之后,右边的某个点就会和22条边相关,右边的独立性被破坏。所以又变成I+e_1e_2I_2I+e\_1-e\_2 \in \mathcal{I}\_2,又让右边满足独立,而且是去掉一个元素,左边肯定还是独立。

最终I+e_1e_2+e_2k+e_2k+1I+e\_1-e\_2+\cdots-e\_{2k}+e\_{2k+1}在保持左边独立性的前提下让独立集大小增加1,而且右边也是独立的,于是就找到了一条增广路。

这个过程本质上是在奇数步尝试增加一个元素,并且保持M_1M\_1的独立性,然而这可能会导致M_2M\_2的独立性被破坏,所以在偶数步又去掉一个元素,使得重新满足M_2M\_2中的独立性,直到在某个奇数步能找到一个元素,使得加上这个元素也不会破坏右边的独立性。我们也尝试把这种方法应用在一般的拟阵交问题上。

但是有一个问题,用上面的方法找增广路,在第ii步找一个元素e_ie\_i,它符不符合要求是和e_1,e_2,,e_i1e\_1,e\_2,\cdots,e\_{i-1}的选择有关的,这样搜索空间就相当大了,所以我们需要把增广路的条件放宽一点,后面会证明放宽之后找到的解也一定是最优解。

考虑奇数步,原本的条件是I+e_1e_2+e_2k+e_2k+1I_1I+e\_1-e\_2+\cdots-e\_{2k}+e\_{2k+1} \in \mathcal{I}\_1,但是这个条件太难了,我们放宽成Ie_2k+e_2k+1I1I-e\_{2k}+e\_{2k+1} \in \mathcal{I}_1。同理偶数步放宽成Ie_2k+e_2k1I2I-e\_{2k}+e\_{2k-1} \in \mathcal{I}_2

∆ 算法流程

有两个拟阵M_1=(E,I_1),M_2=(E,I_2)M\_1=(E,\mathcal{I}\_1),M\_2=(E,\mathcal{I}\_2),求交。

设目前得到的答案集合II,初始时II为空集。显然IIEE的子集。

EE中每个元素建一个点,属于II的元素为左部,不属于的为右部,建成二分图。再另建源点SS和汇点TT

  • 如果eEI,I+eI1e \in E - I, I + e \in \mathcal{I}_1,连边(S,e)(S,e)

  • 如果eEI,I+eI2e \in E - I, I + e \in \mathcal{I}_2,连边(e,T)(e,T)

  • 如果e_xI,e_yEI,Ie_x+e_yI1e\_x \in I, e\_y \in E - I, I - e\_x + e\_y \in \mathcal{I}_1 ,连边(e_x,e_y)(e\_x,e\_y)

  • 如果e_xI,e_yEI,Ie_x+e_yI2e\_x \in I, e\_y \in E - I, I - e\_x + e\_y \in \mathcal{I}_2 ,连边(e_y,e_x)(e\_y,e\_x)

然后对这个图求SSTT的最短路,把最短路中在集合II中的元素从集合II中去掉,把最短路中不在集合II中的元素(SSTT除外)加入集合II,进行下一次建图。

易知每次II的大小会增加11,算法在SSTT不连通时终止,此时II就是答案。

r=max(r(M_1),r(M_2)),n=Er=\max(r(M\_1),r(M\_2)),n=|E|,我们每次构建出来的图都是nn个点,rnrn条边的图。由于增广次数不超过rr,时间复杂度O(r2n)O(r^2n)

感性理解连边

由于是把左部的点e_xe\_x换成右部的点e_ye\_y,所以都是Ie_x+e_yI - e\_x + e\_y

连边的方向可以先感性理解:有一种想法是就像上面说的一样,奇数步I_1\mathcal{I}\_1,偶数步I2\mathcal{I}_2。还有一种想法是,因为连好之后是从SS直接到右部点e_ye\_ye_ye\_y相关的一条信息是I+e_yI1I + e\_y \in \mathcal{I}_1,这个右部点接下来会向左走增广路,那么和这个右部点相关的另外一条信息就应该和I2\mathcal{I}_2有关了。

§ 算法正确性证明

正确性证明分为两个方面:

  • 证明对于每一步增广得到的IIII1I2I \in \mathcal{I}_1 \cap \mathcal{I}_2

  • 证明不能再增广的时候得到的是大小最大的II

∆ 一方面

对于这个问题,我们的证明思路是,设增广路上的左部点是x_1,,x_nx\_1,\cdots,x\_n,右部点是y_1,,y_n,y_n+1y\_1,\cdots,y\_n,y\_{n+1}。我们想证明的是Ix_1x_n+y_1++y_n+y_n+1I1I-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_1Ix_1x_n+y_1++y_n+y_n+1I2I-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_2

先证Ix_1x_n+y_1++y_n+y_n+1I1I-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_1,由于y_1y\_1这个点是直接和SS相连的,满足I+y_1I1I + y\_1 \in \mathcal{I}_1,我们只需要证IIIx_1x_n+y_2++y_n+y_n+1I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1}具有相似的性质,以至于在I+y_1I1I + y\_1 \in \mathcal{I}_1式中,可以直接把II替换为Ix_1x_n+y_2++y_n+y_n+1I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1}

具体来说,可以先证Ix_1x_n+y_2++y_n+y_n+1I1I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_1。假设我们已经证明了,由于增广路是最短路,所以I+y_iI1(i2)I+y\_i \notin \mathcal{I}_1 (i \ge 2),所以r(I)=I=r(Ix_1x_n+y_2++y_n+y_n+1)=r(I+y_2++y_n+y_n+1)r(I)=|I|=r(I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1})=r(I+y\_2+\cdots+y\_n+y\_{n+1})(第三个等号成立是由于两个集合的闭包相等),又因为I+y_1I1I + y\_1 \in \mathcal{I}_1,那么沿用拟阵上最优化问题的思路,相当于集合里面的元素为I+y_1I + y\_1,加进去不形成环就往里加,最终所有的元素都能加进去。现在集合里面的元素增加了,变成I+y_1++y_n+y_n+1I+y\_1+\cdots+y\_n+y\_{n+1},在排序的时候把y_iy\_i排到x_ix\_i前面,加进去不形成环就往里加,最终加进去的元素集合就是Ix_1x_n+y_1++y_n+y_n+1I-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n+y\_{n+1}

所以说剩下就是如何证Ix_1x_n+y_2++y_n+y_n+1I1I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_1

对拟阵M=(E,I)M=(E,\mathcal{I})定义交换图D_M(I)(II)D\_M(I)(I \in \mathcal{I})。交换图是一个二分图,左部是II,右部是EIE-I,如果对于xI,yEIx \in I,y \in E-I,有Ix+yII-x+y \in \mathcal{I},那么就连无向边(x,y)(x,y)。我们证明一个辅助证明的定理:

III \in \mathcal{I}JJ是一个大小等于II的由EE中元素组成的集合,如果在D_M(I)D\_M(I)中存在唯一一个IJI-JJIJ-I的完美匹配,则JIJ \in \mathcal{I}

NN为完美匹配,把NN中的边重定向,从EIE-I连向II,其余边从II连向EIE-I。由于匹配是唯一的,那么图中不存在环,所以可以拓扑排序,即可以把所有点重标号,使得边都是从标号小的指向标号大的。又因为从右部连回左部的边只有匹配大小这么多条,且是一一对应的连边,所以在处理右部连回左部的边时,我们给右部和左部的点相同大小的标号,那么这个图就有一个关键性质:左部点连向的右部点满足右部点的标号都不小于左部点的标号。

接下来使用反证法,设JJ不是独立集,那么JJ中必定存在环CC,设y_iy\_i是环中标号最大(且为ii)的右部元素,由于之前的构造,对于环中其他的右部元素yy,其匹配点x_ix\_iyy是没有边的。没有边就说明Ix_i+yII-x\_i+y \notin \mathcal{I},也就是说ycl(Ix_i)y \in cl(I-x\_i),即Cy_icl(Ix_i)C-y\_i \subset cl(I-x\_i)

两边同时取闭包cl(Cy_i)cl(Ix_i)cl(C-y\_i) \subset cl(I-x\_i),因为CC是环,所以y_icl(Cy_i)y\_i \in cl(C-y\_i),所以y_icl(Ix_i)y\_i \in cl(I-x\_i),但是这和(x_i,y_i)(x\_i,y\_i)是交换图的匹配边矛盾。这样我们就证明了这个定理。

Ix_1x_n+y_2++y_n+y_n+1I1I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_1,只需让J=Ix_1x_n+y_2++y_n+y_n+1J=I-x\_1-\cdots-x\_n+y\_2+\cdots+y\_n+y\_{n+1},那么由最短路可知匹配是完美且唯一的,这样就证出来了。

证明另外一边Ix_1x_n+y_1++y_n+y_n+1I2I-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n+y\_{n+1} \in \mathcal{I}_2也是一样的,容易想到是利用I+y_n+1I2I+y\_{n+1} \in \mathcal{I}_2,然后证明IIIx_1x_n+y_1++y_nI-x\_1-\cdots-x\_n+y\_1+\cdots+y\_n是差不多的东西。

∆ 另一部分

直接证Min-Max Formula。

max_III=min_UEr_1(U)+r_2(EU)\max\_{I \in \mathcal{I}}|I| = \min\_{U \subseteq E}{r\_1(U)+r\_2(E - U)}

首先容易证明II,UE,Ir_1(U)+r_2(EU)\forall I \in \mathcal{I}, \forall U \subseteq E, |I| \leq r\_1(U)+r\_2(E - U)

  • II分成A=IUA=I \cap UB=IAB=I-A两部分。
  • AU,AI_1r_1(U)AA \subseteq U, A \in \mathcal{I}\_1 \rightarrow r\_1(U) \geq |A|
  • BEU,BI_2r_2(EU)BB \subseteq E - U, B \in \mathcal{I}\_2 \rightarrow r\_2(E - U) \geq |B|

我们设UU为交换图中可以到达TT的点集。上面我们证了r_1(U)IUr\_1(U) \geq |I \cap U|。现在我们证r_1(U)IUr\_1(U) \le |I \cap U|。反证法,如果r_1(U)>IUr\_1(U) > |I \cap U|,这就说明能到达TT的点组成M1M_1的独立集的大小是要大于在交换图的左部且能到达TT的点数,也就是说存在一个交换图中右部的点yy,使得IU+yI_1I \cap U + y \in \mathcal{I}\_1。有可能是I+yI_1I + y \in \mathcal{I}\_1,但这说明SS要向yy连边,而yy又能到TT,那么SSTT依旧连通,矛盾。也有可能是存在一个xIUx \in I-U,使得Ix+yI_1I - x + y \in \mathcal{I}\_1,但这说明xx要向yy连边,而yy又能到TT,那说明xx也能到TT,但xUx \notin U,也矛盾。对于r_2(EU)IAr\_2(E - U) \le |I - A|的证明也类似,这里就不再重复。

综上,我们证明了算法结束的时候存在一个UU,使得I|I|能取到最大值,这就证明了算法的正确性。

§ 推广

∆ 带权拟阵交

相当于每个元素有权值,求独立集的交,使得权值和最大。

依赖于拓展的Min-Max Formula。

实际的算法中,我们只要在交换图中定义点权,左部点(xIx \in I)的点权设为w(x)-w(x),右部点(yEIy \in E-I)的点权设为w(y)w(y),求最短路的过程改为求一条从SSTT的路径,第一关键字是点权最大,第二关键字是经过的边数最小即可。证明略。

∆ 多个拟阵交

由于拟阵的交不是拟阵,所以不能两两求交。可以把多个拟阵的交规约到哈密顿路问题上,从而证明多个拟阵的交是NP-hard的。证明略。

§ 例题

∆ 二分图匹配

上面的分析就用的二分图匹配。这里略。

∆ 最小树形图

定义拟阵M_1=(E,I_1)M\_1=(E,\mathcal{I}\_1): 边集AI_1A \in \mathcal{I}\_1 当且仅当AA的边看作无向边时无环。

定义拟阵M_2=(E,I_2)M\_2=(E,\mathcal{I}\_2): 边集AI_2A \in \mathcal{I}\_2 当且仅当AA的边每个点入度不超过一,特别地根入度为零。

∆ Colorful Tree

给定带权无向图 G(V,E)G(V, E) ,每条边拥有一个 11n1n−1 中的颜色,求一个权最大的生成树,满足每种颜色只出现一次。

定义拟阵M_1=(E,I_1)M\_1=(E,\mathcal{I}\_1): 边集AI_1A \in \mathcal{I}\_1 当且仅当AA的边无环。

定义拟阵M_2=(E,I_2)M\_2=(E,\mathcal{I}\_2): 边集AI_2A \in \mathcal{I}\_2 当且仅当AA的边每种颜色出现次数不超过一。