拟阵学习笔记(各处抄的,未完)

昨天 CMD round 要用♿ 不会就来学了

🐒🐧🏄‍ 🤖🎪👻

基础定义性质

拟阵和基、环

定义 1.1

给定全集 \(U\)\(U\) 和一个 \(U\) 上的集族 \((U,F)\) 被称作拟阵当:

\[\varnothing\in F\\ A\in F,B\subseteq A\Rightarrow B\in F\\ A,B\in F,|A|<|B|\Rightarrow \exists b\in B-A,\text{s.t.} A\cup\{b\}\in F \]

\(U\) 中的元素叫做边,\(F\) 中的元素 \(S\in F\) 叫做独立集。

第二条叫做遗传性质,第三条叫做交换性质。

定义拟阵的基为极大独立集,环为极小非独立集。

引理 1.1

拟阵的所有基大小相等。

证明:显然小的基可以通过交换性质变大,由于交换性质。

定理 1.1

对于两组不同的基 \(A,B\)\(\forall x\in A-B,\exists y\in B-A,\text{s.t.} A-\{x\}+\{y\}\) 也是一组基。

证明:考虑独立集 \(A-\{x\}\)(由遗传性质知道)和 \(B\) 的交换性质。那么 \(y\in B-(A-\{x\})= B-A\)

定义 1.2

给定拟阵 \((U,F)\),对于任意集合 \(S\subseteq U\),记秩函数为 \(S\) 子集的极大独立集大小。根据引理 \(1.1\),这些 \(S\) 的基(在拟阵 \((S,\{S'\mid S'\subseteq S,S'\in F\})\) 上应用)相等。

性质 1.1

有界性:\(\forall S\subseteq U,0\le r(S)\le |S|\)

单调性:\(\forall A\subseteq B\subseteq U,r(A)\le r(B)\)

次模性:\(\forall A,B\subseteq U,r(A\cup B)+r(A\cap B)\le r(A)+r(B)\)

下面证明第三条性质。

\(Z_{S}\)\(S\) 上的基。

不妨设 \(Z=Z_{A\cap B},Z_{A\cup B}\) 是从 \(Z\) 交换扩充而来。分割 \(Z_{A\cup B}\)\(Z'=Z_{A\cup B}\cap (A\cap B)\)\(E_{A}=Z_{A\cup B}\cap (A-B),E_B=Z_{A\cup B}\cap(B-A)\)

由构造知道,\(Z\subseteq Z'\),又 \(Z\) 是极大的,故 \(Z=Z'\)

此时

\[r(A\cup B)+r(A\cap B)=|E_A|+|E_B|+2|Z|\\ =(|E_A|+|Z|)+(|E_B|+|Z|)\\ \le |Z_A|+|Z_B|=r(A)+r(B) \]

定义 1.3

拟阵是二元组 \((U,F)\),其中 \(U\) 是全集,\(F=\{A\mid r(I)=I\}\) 是集族,\(r\) 是满足秩函数性质的函数。

引理1.2

上述定义等价于定义 1.1 。

证明:

\(0\le r(0)\le 0\),故 \(r(0)=0,\varnothing \in F\)

遗传性:对于 \(B\in F,A\subseteq B\)\(|B|=r(B)\le r(A)+r(B-A)\),而 \(r(A)\le |A|,r(B-A)=|B-A|,|A|+|B-A|=|B|\),故两者同时取上界,故 \(r(A)=|A|,A\in F\)

交换性:设 \(A,B\in F,|A|<|B|\)

反证:设已有 \(\forall b\in B,r(A\cup \{b_{1:n}\})=|A|\),则:

\[r((A\cup \{b_{1:n}\})\cup (A\cup {b_{n+1}}))+r((A\cup \{b_{1:n}\})\cap (A\cup {b_{n+1}}))\le r(A\cup \{b_{1:n}\})+r(A\cup \{b_{n+1}\})\\ r(A)+r(A\cup\{b_{1:n+1}\})=2r(A)\\ r(A\cup\{b_{1:n+1}\})=|A|\\ r(A\cup B)=|A|\text{ (recursive proof)}\\ \]

\(r(A)<r(B)\le r(A\cup B)\),矛盾。证毕。

因此,可以通过秩函数定义拟阵。

性质 1.2

1.设 \(X,Y\)\((U,F)\) 的不同环,\(\forall e\in X\cap Y\),存在环 \(C\subseteq X\cup Y-\{e\}\)

证明:

\(f\in X-Y\)。反证,设 \(X\cup Y-\{e\}\in F\)。由于 \(X\) 是环,\(X-\{f\}\in F\)

\(X\cup Y\) 中最大的包含\(X-\{f\}\) 的独立集是 \(Z\),而 \(Y\not\subseteq Z\),即至少有一个元素 \(\in Y,\not\in Z\)

\(|Z|\le |X\cup Y-\{f\}|-1\le |X\cup Y|-2<|X\cup Y-\{e\}|\) ,而 \(|Z|\) 是最大的独立集,故 \(X\cup Y-\{e\}\not\in F\),矛盾。

2.设 \(B\)\((U,F)\) 的基, \(\forall e\not\in B\)\(B\cup\{e\}\) 包含唯一环。

反证。若包含环 \(C_1,C_2\),这两个环都必定包含 \(e\)。由上可知 \(C_1\cup C_2-\{e\}\) 有环,即 \(B\) 有环。不成立。

几种特殊拟阵

定义 2.1

设有限全集为 \(U\)\(U\) 中的边 \(e\) 附有一个同一域上的向量 \(v_e\),并且这些向量维数相同。

设集族 \(F\)\(S\in F\) 当且仅当向量组 \(\{v_e\mid e\in S\}\) 线性无关。

此时称 \((U,F)\) 是线性拟阵。

引理 2.1

\((U,F)\) 是拟阵。

证明:

显然 \(\varnothing \in F\),且一个线性无关向量组任何子向量组都线性无关。

\(A,B\in F,|A|<|B|\),则 \(\{v_e\mid e\in A\}\) 张出空间的维数是 \(|A|\)\(\{v_e\mid e\in B\}\) 张出空间的维数是 \(|B|\)

由于 \(|A|<|B|\),必然存在 \(e'\in B-A,\) \(\{v_e\mid e\in A\}\) 不能线性表出 \(e'\)。那么 \(A\cup e'\in F\)

定义 2.2

构造一矩阵 \(M\),列向量是所有全集中的向量 \(v_e\)

此时称 \(M\) 可以线性表出 \((U,F)\)。并且 \(M\) 的秩和 \((U,F)\) 的秩相等。

定义 2.3

定义均匀拟阵:

设有限全集为 \(U\)\(F=\{S\mid S\subseteq U, |S|\le k\}\)

不难验证这是拟阵。

性质 2.1

均匀拟阵在 \(GF(p)(p>n)\) 下是线性拟阵。

证明:设向量 \(v_{e_i}=(1,\alpha_i,\alpha_i^2,\dots,\alpha_i^{k-1})\),其中 \(\alpha_i\) 为两两不同的 \(GF(p)\) 中的非零元。

-什么是 \(GF(p)\)

-有 \(p\) 个元素的有限域(Galois Field)

那么存在这个矩阵。只需证明:向量组大小不超过 \(k\) 当且仅当他们线性无关。

首先,如果向量组大小超过 \(k\),他们一定线性相关,因为维数只有 \(k\)

显然只需考虑大小等于 \(k\) 的向量组。

考虑以其为列向量矩阵,是范德蒙德矩阵;

\[A=\begin{bmatrix} 1& 1& \cdots & 1 \\ \alpha_1& \alpha_2& \cdots & \alpha_{k} \\ \alpha_1^2 & \alpha_2^2 & \cdots & \alpha_k^2\\ \vdots & \vdots & \ddots & \vdots \\ \alpha_1^{k-1}& \alpha_2^{k-1}& \cdots & \alpha_k^{k-1} \end{bmatrix} \]

\(\operatorname{det}(A)\neq 0\) 当且仅当 \(\alpha_i\) 两两不同,而这被满足了。这就说明这些向量线性无关。

定义 2.4

对于一个无向图 \((V(G),E(G))\),定义全集为 \(U=E(G)\),边集 \(S\) 属于 \(F\) 的充要条件是生成子图 \((V(G),S)\) 无环,即是生成森林。

此时称 \((U,F)\) 为图拟阵。

性质 2.2

图拟阵 \((U,F)\) 是拟阵。

证明:空集和遗传显然满足。

下面证明满足交换性质。

\(A,B\in F,|A|<|B|\),则 \((V(G),A)\) 的连通块数是 \(n-|A|\)\((V(G),B)\) 的连通块数是 \(n-|B|\)。则 \(n-|A|>n-|B|\),那么 \(B\) 中存在一条边 \(e'\) 连接 \((V(G),A)\) 中两个连通块,连上之后不会出现环。那么 \((V(G),A\cup \{e'\})\) 无环。那么 \(A\cup \{e'\}\in S\)

性质 2.3

图拟阵在任何域中均可被线性表出(当然所以图拟阵是线性拟阵)。

证明:

对于一条边 \((u,v)\),构造向量 \((v_1,v_2,\dots,v_n)\),其中 \(v_u=1,v_v=-1\),其他均为 \(0\)

对于一个带圈生成子图 \((V(G),A)\),遍历圈,如果正向访问到(\(e_i=(u,v)\)\(u\)\(v\))就赋权系数 \(\alpha_i=1\),否则 \(\alpha_i=-1\)。没有遍历到的 \(\alpha_i=0\)

容易验证此时每个点都被访问了两遍,一个正的一个负的,抵消得到 \(\sum v_e\alpha_e =\bf0\)

而不带圈的图如果线性相关,如果去掉系数为 \(0\) 的边向量,总有一个点只连接了一条边,它的贡献不可能被抵消,所以不带圈的图一定不线性相关。

注意到我们仅仅使用了单位元,单位元的逆元和零元,所以以上过程对任意域成立。

定义 2.5

给定一二分图,设左/右部点为 \(U\)\(F=\{A\mid A\subseteq U,A\text{ 可以被一组匹配覆盖}\}\)。则称 \((U,F)\) 为横截拟阵。

性质 2.4

横截拟阵是拟阵。

空集和遗传性显然。

\(A,B\in F,|A|<|B|\)

从一个点 \(u\in B\) 开始,找出匹配点,再回来到 \(A\) 中某个点再去匹配点;如此交替下去直到不能进行。若成环,则删去环;

由于 \(|A<|B|\),存在一个点这样的路一定在 \(B\) 中开始,\(B\) 的匹配点结束。此时找到了增广路,就可以把 \(A\) 加一个左部点进去。

拟阵上的算法

拟阵贪心

算法 3.1

设有一拟阵 \((U,F)\)

1.令初始解集 \(S\)\(\varnothing\)

2.循环:找到最小权值的未加入解集且能保证解集加上他独立的边 \(x\)\(S\cup\{x\}\to S\)

3.若不能找到,退出循环,输出 \(S\)

定理 3.1

上述算法得到的解集为最小带权基。

证明:设 \(X\)\((U,F)\) 的最小带权基。

\(X=\{x_1,x_2,\dots,x_r\},x_i\le x_{i+1}\)。归纳证明 $w(S)\le w(X) $。

\(S_i\) 为第 \(i\) 步得到的结果,\(X_i=\{x_1,x_2,\dots x_i\}\)

显然 \(S_0\)\(X_0\) 满足。下面认为 \(w(S_{i-1})\le w(X_{i-1})\)

\(u=S_i-S_{i-1}\),则根据交换性质,\(\exists v\in X_i,\text{s.t. }S_{i-1}\cup \{v\}\in F\),而 \(w(x_i)\ge w(v)\ge w(u)\),所以 \(w(S_i)\le w(X_i)\)

不难发现,这是 Kruskal 算法。

这也说明了我们线性基从小到大插入的正确性。

注:似乎可以证明非拟阵则贪心不正确。

可以规约得到拟阵最小/大带权环都是多项式时间不可解的。

拟阵交

定义 3.1

对于拟阵 \(M=(U,F)\),定义其对偶拟阵 \(M^*=(U,F^*)\),其中 \(F^*=\{A\mid \exists B\text{ is base}\subseteq U-A\}\)

性质 3.1

对偶拟阵是拟阵。

这里我们依靠定义 1.3,依托秩函数证明。

\[r^*(S)=\max_{A\subseteq S,A\subseteq F^*}|S|\\ =\max_{B\text{ is base of } M}|S-B|\\ =|S|-\min_{B\text{ is base of } M}|S\cap B|\\ =|S|-r(U)+\max_{B\text{ is base of } M}|B\cap (U-S)|\\ =|S|-r(U)+r(U-S) \]

这里证明几条公理。

有界性:\(\because r(U)\ge r(U-A),r^*(A)=|A|-r(U)+r(U-A)\le|A|\)

单调性:若 \(|A|<|B|\)\(r^*(B)-r^*(A)=|B|-|A|+r(U-B)-r(U-A)\ge |B|-|A|+|U-B|-|U-A|=0\)

次模性:设 \(A,B\in U\),则:

\[r(U-(A\cup B))+r(U-(A\cap B))\le r(U-A)+r(U-B)\\ r(U-(A\cup B))+|A\cup B|-r(U)+r(U-(A\cap B))+|A\cap B|-r(U)\le r(U-A)+|A|-r(U)+r(U-B)+|B|-r(U)\\ r^*(A\cup B)+r^*(A\cap B)\le r^*(A)+r^*(B) \]

定义 3.2

删除:

\(M(U,F)\) 为一拟阵,\(A\subseteq U\),定义 \(M-A=(U-A,\{B\mid B\in F\cap (U-A)\})\)

容易验证,\(M-A\) 是拟阵。而 \(r_{M-A}=r\)

收缩:定义 \(M/A\)\((M^*-A)^*\)

\[r_{M/A}(S)=|S|-r_{M^*-A}(U-A)+r_{M^*-A}(U-A-S)\\ =|S|-r_{M^*}(U-A)+r_{M^*}(U-A-S)\\ =|S|-(|U-A|-r(U)+r(A))+(|U-A-S|-r(U)+r(A\cup S))\\ =r(A\cup S)-r(A) \]

发现就是“强制考虑 \(A\) 的一组基的拟阵”。

在图拟阵中,这个操作的意思是边收缩,即合并两个顶点。

说明 3.1

拟阵求交。设有二拟阵 \(M_1(U,F_1),M_2(U,F_2)\)

\((U,F_1\cap F_2)\) 不一定是拟阵。拟阵交算法解决的是最大公共独立集问题,即 \(\max(|F|\mid F\in F_1\cap F_2)\)

可以规约得到,超过 2 个的拟阵交多项式时间不可解。

现在研究 \(2\) 拟阵交。

定理 3.2

最小最大定理。

\(\max(F)=\min_{A\subseteq U}(r_1(A)+r_2(U-A))\).

先证明 \(\le\)

\[|F|=|F\cap A|+|F\cap (U-A)|\\ \le r_1(A)+r_2(U-A) \]

接下来给出 \(\ge\) 的构造性证明。

定义 3.3

定义集合的闭包算子:对于 \(A\subseteq U,cl(A)=\{e\in U\mid r(A\cup \{e\})=r(A)\}\)

性质 3.2

1.若 \(A\subseteq B \Rightarrow cl(A)\subseteq cl(B)\)

证明:

\(\forall e\in cl(A)\)\(r(B\cap\{e\})+r(A)= r((A\cup\{e\})\cap B)+r(B\cup \{e\})\le r(A\cup \{e\})+r(B)\)

那么 \(r(B\cap\{e\})\le r(B)\),而 \(r(B\cap\{e\})\ge r(B)\),故 \(r(B\cap\{e\})= r(B)\)\(e\in cl(B)\)

2.\(\forall e\in cl(A),cl(A)=cl(A\cup\{e\})\)

证明:

\(cl(A)\subseteq cl(A\cup\{e\})\),只需证明 \(cl(A\cup\{e\})\subseteq cl(A)\)。类似地,设 \(f\in cl(A\cup\{e\})\),则

\[r(A)+r(A\cup\{e,f\})=r(A\cup\{e,f\})+r(A\cup(\{e\}\cap\{f\}))\le r(A\cup\{e\})+r(A\cup\{f\}) \]

\(r(A\cup \{f\})\ge r(A\cup \{e,f\})\),而 \(r(A\cup \{f\})\le r(A\cup \{e,f\})\),则 \(r(A\cup \{f\})= r(A\cup \{e,f\})\)

\(r(A\cup \{f\})=r(A),f\in cl(A)\)

3.\(cl(cl(A))=cl(A)\)

显然。

定理 3.3

羟基强基交换定理。

对于两组不同的基 \(A,B\)\(\forall x\in A-B,\exists y\in B-A,\text{s.t.} A-\{x\}+\{y\},B-\{y\}+\{x\}\) 都是基。

证明:

\(B+\{x\}\) 包含唯一环 \(C\),且 \(x\in C\)

\(x\in cl(C-\{x\})\),则 \(x\in cl((A\cup C)-\{x\})=cl(A\cup C)\)

由于 \(A\) 是基, \(U=cl(A)=cl(A\cup C)=cl((A\cup C)-\{x\})\)。故 \(cl((A\cup C)-\{x\})\) 有一个基,记为 \(A'\)

根据交换,\(\exists y\in A'-(A-\{x\}),\text{s.t.} A-\{x\}+\{y\}\in F\),即是基。

而由于 \(A'-(A-\{x\})\subseteq ((A\cup C)-\{x\})-(A-\{x\})\subseteq C-\{x\}\)\(\exists y\in C-\{x\},\text{s.t.}A-\{x\}+\{y\}\in F\)(是基)。由于 \(C\) 是环, \(B-\{y\}+\{x\}\) 也是基。

证毕。

定义 3.4

对于拟阵 \(M(U,F)\)\(A\in F\),定义交换图 \(D_M(A)\) 是二分图,左部点集是 \(A\),右部点集是 \(U-A\),连接 \(x\)\(y\) 的边存在当 \(A-\{x\}+\{y\}\in F\)

定理 3.4

\(A\in F,|A|=|B|,B\in F\),则 \(D_M(A)\) 中存在左部点 \(A-B\) 和右部点 \(B-A\) 的完美匹配。

构造拟阵 \(M'(U,F'),F'=\{e\mid e\in F,|e|\le |A|\}\)。显然这是拟阵,又显然 \(D_{M'}(A)=D_M(A)\)。那么 \(A,B\) 都是 \(M'\) 的基。

\(x\in B-A\),根据羟基交换定理, \(\exists y\in A-B\)\(A-\{y\}+\{x\},B-\{x\}+\{y\}\in F\)。那么 \((y,x)\) 边存在。取此为匹配,并令 \(B-\{x\}+\{y\}\to B\)。如此可证明。

定理 3.5

\(A\in F,|A|=|B|\)\(D_M(A)\) 中存在左部点 \(A-B\) 和右部点 \(B-A\) 的唯一完美匹配,则 \(B\in F\)

证明:

令此唯一完美匹配为 \(N\)。将 \(N\) 的边定向为从右到左,其他相反。显然,此新有向图是 DAG。所以可以标号使得每条边从小标号到大标号。将 \(N\) 的边按入点大小降序排序,使 \(N\) 中的边集 \(<(x_i,y_i)>(x_i<y_i,y_i\in B-A,x_i\in A-B)\) 满足 \((x_j,y_i)(j>i)\) 不存在于图中。

反证,若 \(B\not\in F\),那么设环 \(C\subseteq B\), 取最小的 \(i\) 使得 \(x_i\in C\),则 \(\forall x\in C-\{x_i\},(x,y_i)\not\in D_M(A)\)。那么 \(C-\{x_i\}\subseteq cl(A-\{y_i\})\)

\(cl(C-\{x_i\})\subseteq cl(cl(A-\{y_i\}))=cl(A-\{y_i\})\)。由于 \(C\) 是环,\(x_i\in cl(C-\{x_i\})\subseteq cl(A-\{y_i\})\),但 \((x_i,y_i)\in D_M(A)\),所以 \(A-\{y_i\}+\{x_i\}\in F\),那么 \(x_i\not\in cl(A-\{y_i\})\),矛盾。

定义 3.4

拟阵交的交换图:给定同一全集上的拟阵 \(M_1,M_2\),一个集合 \(A\in F_1\cap F_2\),定义 \(D_{M_1,M_2}(A)\) 是二分图,左部点是 \(A\),右部点是 \(U-A\),一条左部点 \(x\) 指向右部点 \(y\) 的边存在当且仅当 \(A-\{x\}+\{y\}\in F_1\),一条右部点 \(y\) 指向左部点 \(x\) 的边存在当且仅当 \(A-\{x\}+\{y\}\in F_2\)

算法 3.2

拟阵交算法。设 \(M_1(U,F_1),M_2(U,F_2)\) 是待交的二拟阵。

接下来,我们将看到一个及其类似匈牙利算法的过程。

先令 \(A=\varnothing\)。定义 \(X_1=\{x\mid\{x\}+A\in F_1\,x\not\in A\},X_2=\{x\mid\{x\}+A\in F_2\,x\not\in A\}\)

接下来,在交换图 \(D_{M_1,M_2}(A)\) 中找到一个从 \(X_1\)\(X_2\) 的最短路 \(P\)(从 \(X_1\) 开始,\(X_2\) 结束)。

\(A=A\Delta P\),是集合异或。

最后直到不能再找到任何一条这样的边,算法结束,此时得到的 \(A\) 就是最大公共独立集。

直接实现即可。

例题 3.1

UVA 12370

这个就是 Shannon 游戏的图拟阵版本。(稍有不同)。该游戏的性质将在后叙述。

首先显然图需要连通。联通之后,设 \(A\) 选点 \(u,v\),则加边方(\(B\))胜利条件为 \(M(E\cup\{(u,v)\},F)\)(这是一个图拟阵)有两个不交基,就是有两个不交生成树。

\((u,v)\) 是任意的,设原图不含两个不交生成树,不难发现,可以找到 \((u,v)\) 使得新图不含两个不交生成树。因此,我们只需对原图拟阵求不交基即可。等价于求 \(M,M^*\) 的最大公共独立集(“拟阵交”)。拟阵交算法可以解决这个问题,时间复杂度 \(O(Tnm^2)\)

// Problem: Game of Connect
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/UVA12370
// Memory Limit: 0 MB
// Time Limit: 3000 ms
// UOB Koala
//
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=305,INF=0x3f3f3f3f;
int Test;
vector<int> D[maxn];
int x[maxn],y[maxn],ex[maxn],fa[maxn],dis[maxn],pre[maxn],n,m;
bool X1[maxn],X2[maxn];
int Find(int x){
	return x==fa[x]?x:fa[x]=Find(fa[x]);
}
queue<int> q;
signed main(){
	cin>>Test;
	for(int zhicheng=1;zhicheng<=Test;zhicheng++){
		cin>>n>>m;
		for(int i=1;i<=m;i++){
			cin>>x[i]>>y[i];
			x[i]++,y[i]++;
			ex[i]=1;
		}
		int R=0;
		for(int i=1;i<=n;i++)fa[i]=i;
		for(int i=1;i<=m;i++){
			if(Find(x[i])!=Find(y[i]))fa[Find(x[i])]=Find(y[i]),R++;
		}
		if(R<n-1){
			cout<<"Case "<<zhicheng<<": NO"<<endl;
			continue;
		}
		while(1){
			for(int i=1;i<=n;i++)fa[i]=i;
			for(int i=1;i<=m;i++){
				if(!ex[i]&&Find(x[i])!=Find(y[i]))fa[Find(x[i])]=Find(y[i]);
			}
			for(int i=1;i<=m;i++){
				if(ex[i]&&Find(x[i])!=Find(y[i]))X1[i]=1;
				else X1[i]=0;
			}
			for(int i=1;i<=m;i++){
				if(ex[i]){
					for(int j=1;j<=n;j++)fa[j]=j;
					int cnt=0;
					for(int j=1;j<=m;j++)if(ex[j]&&j!=i&&Find(x[j])!=Find(y[j]))fa[Find(x[j])]=Find(y[j]),++cnt;
					if(cnt==n-1)X2[i]=1;
					else X2[i]=0;
				}else X2[i]=0;
			}
			for(int i=1;i<=m;i++)D[i].clear();
			for(int i=1;i<=m;i++){
				if(!ex[i]){
					for(int j=1;j<=n;j++)fa[j]=j;
					for(int j=1;j<=m;j++)if(!ex[j]&&j!=i)fa[Find(x[j])]=Find(y[j]);
					for(int j=1;j<=m;j++)if(ex[j]&&Find(x[j])!=Find(y[j]))D[i].push_back(j);
				}else{
					for(int j=1;j<=n;j++)fa[j]=j;
					int cnt=0;
					for(int j=1;j<=m;j++)if(j!=i&&ex[j])if(Find(x[j])!=Find(y[j]))++cnt,fa[Find(x[j])]=Find(y[j]);
					for(int j=1;j<=m;j++)if(!ex[j]&&(cnt==n-1||(cnt==n-2&&Find(x[j])!=Find(y[j]))))D[i].push_back(j);
				}
			}
			for(int i=1;i<=m;i++){
				dis[i]=INF,pre[i]=0;
				if(X1[i])dis[i]=0,q.push(i);
			}
			while(!q.empty()){
				int u=q.front();
				q.pop();
				for(auto v:D[u]){
					if(dis[v]>dis[u]+1){
						dis[v]=dis[u]+1,pre[v]=u;
						q.push(v);
					}
				}
			}
			bool ck=0;
			pair<int,int> ans={INF,INF};
			for(int i=1;i<=m;i++)if(X2[i]&&dis[i]<INF)ck=1,ans=min(ans,{dis[i],i});
			if(ck){
				int now=ans.second;
				while(now)ex[now]^=1,now=pre[now];
			}
			if(!ck)break;
		}
		int ans=0;
		for(int i=1;i<=m;i++)if(!ex[i])ans++;
		if(ans==n-1) cout<<"Case "<<zhicheng<<": YES"<<endl;
		else cout<<"Case "<<zhicheng<<": NO"<<endl;
	}
	return 0;
}

定理 3.6

算法 3.2 求出了最大公共独立集。

证明:

\(S=\{z\mid z\in U,z\text{ 可以通过 D 到达 } X_2\}\)

先证明 \(A\) 在每一次异或后总是公共独立集。

这里证明 \(A\in F_1\)\(F_2\) 类似。

设最短路 \(P=\{x_0,y_1,x_1,\dots,y_t,x_t\}\)\(B=A-\{y\}_{\ge 1}+\{x\}_{\ge 1}\),其中 \(y_i\in A,x_i\in U-A\)

\(A-B=\{y\}_{\ge 1},B-A=\{x\}_{\ge 1}\)\(|A-B|=|B-A|=t\)

注意到仅保留从左到右的边的基图是 \(D_{M_1}\),在此图上 \(A-B\)\(B-A\) 具有唯一(最短)匹配(路)。

所以 \(B\in F_1\)

考虑 \(r_1(A\cup B)=r_1(A\cup\{x\}_{\ge 1})=r_1(A)=r_1(B)\),第二个等号成立因为 \(\forall e\in cl(A),cl(A)\subseteq cl(A\cup\{e\})\)

\(x_0\in X_1\),所以 \(A+\{x_0\}\in F_1\)。考虑 \(B\) 应用交换,\(\exists x\in A-B+\{x_0\},B+\{x\}\in F_1\)

如果 \(x\neq x_0\),则 \(r_1(A\cup B)=r_1(B)\) 不成立,所以 \(B+\{x_0\}\in F_1\),也就是新的 \(A\)

这样就归纳地证明了 \(A\) 在每一次异或后总是公共独立集。

证明 \(|A|=r_1(S)+r_2(U-S)\) 以说明是最大的(也是对最大最小定理的构造性证明)。

只需证明(还有 \(r_2\)\(r_1(S)\le |A\cap S|\),因为 \(r_1(S)\ge |A\cap S|\)

反证,若 \(r_1(S)>|A\cap S|\)\(\exists x\in S-A,(A\cap S)\cup\{x\}\in F_1\)

如果 \(A\cup\{x\}\in F_1\),那么 \(x\in X_1\),而 \(x\in S\),可达 \(X_2\),而算法已结束,不存在这样的 \(x\)。矛盾。

所以一定 \(\exists y\in A-S,A-\{y\}+\{x\}\in F_1\)(由于 \(A\) 是独立集,一直交换即可)所以 \((y,x)\in D_{M_1,M_2}\)\(y\in S\),矛盾。

所以,\(r_1(S)\le |A\cap S|\),但 \(r_1(S)\ge |A\cap S|\),所以 \(r_1(S)=|A\cap S|\)

另一边同理,即证。这样就结合最小最大定理的 \(\le\) 证到了最大性。

所以算法 3.2 求出了最大公共独立集。

算法 3.3

带权拟阵交算法。

设有 \(\omega\mapsto U\to \R\)

拟阵交的结果要求最大化选的公共独立集的元素权值和。

只需把求最短路的过程改为:

点赋权 \(\omega'\)

\[\omega'(u)=\left\{\begin{matrix} \omega(u) & (u\in U-A)\\-\omega(u) & (u\in A) \end{matrix}\right. \]

求出以点权和作为第一关键字,经过点数为第二关键字的最短路即可。

posted @ 2023-12-16 16:38  British_Union  阅读(220)  评论(0编辑  收藏  举报