拟阵交
给定两个拟阵 \(M_1(S,I_1),M_2(S,I_2)\) 求两个拟阵的一个独立集 \(I\) 使得 \(I\in I_1,I\in I_2\) 且 \(I\) 满足一定条件(比如 \(|I|\) 最大,\(|I|\) 最大的同时 \(I\) 中元素权值和最大之类)
我们采用增量法
定义交换图 \(D_{M1,M2}\)
当 \(y\in I,x\in S\backslash I\) 且 \(I-y+x\in I_1\) 时,我们从\(y\)向\(x\)连一条边
当 \(y\in I,x\in S\backslash I\) 且 \(I-y+x\in I_2\) 时,我们从\(x\)向\(y\)连一条边
我们找到集合 \(X_1=\{ x|I+x \in I_1,x\in S\backslash I \},X_2=\{x|I+x \in I_2,x\in S\backslash I\}\)
我们每次找到一条 \(X_1\) 到 \(X_2\) 的最短路径(经过点数最少)即可
然后我们把路径上不在 \(I\) 中的点加入,在 \(I\) 中的点剔除
然后重建交换图
如果要求 \(|I|\) 最大的同时 \(I\) 中元素权值和最大,那么我们找经过点的权值和最大的同时经过点数最少的路径即可。