LGV引理
行列式引出来的有趣的东西,是与图论的交界处。
LGV 引理大致内容为:
对于一张有向无环图,每条边上都有一个权值 w(e),记 weight(P) 表示路径 P 上所有边的权值乘积,对于一个起点组成的集合 A 和终点组成的集合 B,满足 |A|=|B|,记 e(i,j) 表示所有 Ai→Bj 的路径的 weight 之和,那么对于矩阵:
M=⎡⎢
⎢
⎢
⎢
⎢⎣e(1,1)e(1,2)⋯e(1,|B|)e(2,1)e(2,2)⋯e(2,|B|)⋮⋮⋱⋮e(|A|,1)e(|A|,2)⋯e(|A|,|B|)⎤⎥
⎥
⎥
⎥
⎥⎦
设 n=|A|,引理说明:
det(M)=∑S:A→B(−1)τ(p)n∏i=1weight(Pi)[Pi:Ai→Bpi]
S 表示不交路径组,pi 表示第 i 个起点对应的终点。
证明
考虑将行列式展开得到:
det(M)=∑p(−1)τ(p)n∏i=1e(i,pi)=∑p(−1)τ(p)n∏i=1∑Pi:Ai→Bpiweight(Pi)
考虑注意到 P1,P2,⋯,Pn 是路径组,考虑枚举路径组。
det(M)=∑T:A→B(−1)τ(p)n∏i=1weight(Ti)[Ti:Ai→Bpi]
此时的 pi 表示为第 i 个起点的终点为 pi。
此时和引理唯一的区别在与 T 可以是任意路径组。
那么只需要证明相交路径组没贡献为 0。
那我们只需要对于每个路径组 T 找到唯一对应的 Q,使得两者相加贡献为 0 即可。
构造方法为:
找到最小的 i 使得 Pi 与别的路径有交点,在选择 j 使得交点离起点最近,若有多个选最小的 j。
然后把 Pi 和 Pj 交换首个交点到末尾的路径。
那么此时逆序对个数奇偶性改变,后面的乘积不变。
注意:
直接使用 LGV 计算的答案只有在平面有向无环图中的意义为不交路径组的方案数。
因为注意到 LGV 处理的是点不交路径组,但是非平面图可能边相交,因此这种不合法的方案会被记录。
此时的意义为存在偶数个交点的路径组减去奇数个交点的路径数。
把 LGV 矩阵的第 (i,j) 的权值设为 (bj−ai+n−1n−1)。
直接跑行列式即可。
等价于从 (1,2) 走到 (n−1,m),(2,1) 走到 (n,m−1) 的路径不交方案数,求出方案数后手动行列式即可。
对于每一层可以很直接求邻接矩阵的行列式。
就是注意所说的问题,直接暴力求出每个起点到每个终点的路径方案数再套上行列式即可。
期望转计数,如果这道题知道每个机器人最终走到的终点的话那么可以直接使用 LGV 定理,其中矩阵中的点 (i,j) 的权值为 (mBj−Ai),A 为起点,B 为终点。
考虑拉普拉斯展开行列式,每次新加入一个一行一列。
具体而言:
M=⎡⎢
⎢
⎢
⎢
⎢
⎢⎣e(A1,B1)e(A1,B2)⋯e(A1,B|S|)e(A2,B1)e(A2,B2)⋯e(A2,B|S|)⋮⋮⋱⋮e(A|S|,B1)e(A|S|,B2)⋯e(A|S|,B|S|)⎤⎥
⎥
⎥
⎥
⎥
⎥⎦
设 f(S,mx) 表示当前考虑了集合 S,最大值小于等于 mx 的答案。
首先如果 B|S|<mx 直接有 f(S,mx−1)→f(S,mx)。
否则直接对最后一列做拉普拉斯展开:
det(M)=∑i∈Sci,|S|(−1)i+|S|Ai,|S|
Ai,j 为余子式。ci,|S| 表示矩阵中点的权值,设集合中第 i 小的元素为 pi,那么有:
f(S,mx)=|S|∑i=1(−1)i+|S|(mB|S|−Api)f(S∖pi,mx−1)
复杂度为 O(nm2n)
神秘搬的题目
给定一个 n×n 的矩阵主对角线上点的权值,求有多少种填完剩下位置的方案,使得每行每列的数都单调不降。
n≤5000
首先注意到左下角填数和右上角填数是对称的,不妨只考虑左下角。
一共只有对行和列分别的限制,我们观察一个维度限制一个维度。
我们对每一行观察,将每一行 (j,ai,j) 看成一个坐标,那么每一行对应一条路径 Pi,即从 (0,0) 走到 (i,ai,i) 的方案数,每次能从 (x,y) 走到 (x+1,≥y)。
在考察对列的限制,即对于每一行的路径,设 di,j 表示路径 Pi 上横坐标为 j 的点的纵坐标,如果不存在则忽略,那么 ∀j,di,j≤di+1,j。
考虑小于等于并不优美,将第 i 行所有值加上 i−1,不妨设 bi=ai+i−1,那么 ∀j,di,j<di+1,j,其实换句话说,就是 n 条路径,每条路径从 (0,0) 走到 (i,bi),每次只能从 (x,y) 走到 (x+1,≥y) ,求所有路径都不相交的方案数。
路径不相交自然想到 LGV 引理,但是 LGV 引理只能计数平面图 DAG,而这个图并非平面图,考虑转化为网格图计算。
转化一下对 d 的限制,把每条路径看成一个函数,设 gi,j 表示函数 i 纵坐标取到 j 的时候对应的横坐标。
那么有 ∀j,gi,j>gi+1,j, 那么考虑如下转化:
n 个起点,第 i 个起点位于 (i−1,0),第 i 个终点位于 (0,ai+i−1),每次只能从 (x,y) 走到 (x−1,y) 或者 (x,y+1),求有多少种不交路径数。
怎么对应原图的呢?考虑当前是第 i 次走水平步 (向左走),此时纵坐标为 j,那么对于对应原图的坐标 (i,j),最后一步对应 (i,bi)。
好,现在是我们熟知的网格图了,套上模板可知矩阵上 (i,j) 为 (bj+i−1i−1),答案为行列式的值。
∣∣
∣
∣
∣
∣
∣∣(b1+00)(b2+00)⋯(bn+00)(b1+11)(b2+11)⋯(bn+22)⋮⋮⋱⋮(b1+n−1n−1)(b2+n−1n−1)⋯(bn+n−1n−1)∣∣
∣
∣
∣
∣
∣∣
打开组合数:
∣∣
∣
∣
∣
∣
∣
∣∣(b1+0)!b1!0!(b2+0)!b2!0!⋯(bn+0)!bn!0!(b1+1)!b1!1!(b2+1)!b2!1!⋯(bn+1)!bn!1!⋮⋮⋱⋮(b1+n−1)!b1!(n−1)!(b2+n−1)!b2!(n−1)!⋯(bn+n−1)!bn!(n−1)!∣∣
∣
∣
∣
∣
∣
∣∣
把每一行的 (i−1)! 提出来
n∏i=11(i−1)!∣∣
∣
∣
∣
∣
∣
∣∣(b1+0)!b1!(b2+0)!b2!⋯(bn+0)!bn!(b1+1)!b1!(b2+1)!b2!⋯(bn+1)!bn!⋮⋮⋱⋮(b1+n−1)!b1!(b2+n−1)!b2!⋯(bn+n−1)!bn!∣∣
∣
∣
∣
∣
∣
∣∣
接下来你需要一些线性代数的基本功:初等矩阵变换去化简行列式,其实你会发现,行列式的值等价于范德蒙德行列式。
拿 3×3 的矩阵而言
∣∣
∣
∣∣111(b1+1)(b2+1)(b3+1)(b1+1)(b1+2)(b2+1)(b2+2)(b3+1)(b3+2)∣∣
∣
∣∣
先将第三行减去第二行的两倍,再用第二行减去第一行的一倍可以得到:
∣∣
∣∣111b1b2b3(b1+1)b1(b2+1)b2(b3+1)b3∣∣
∣∣
再将第三行减去第二行的第一行得到:
∣∣
∣
∣∣111b1b2b3b21b22b23∣∣
∣
∣∣
这个手法可以很好的推广到高维,具体地式子不再展开说明。
现在转化为求范德蒙德行列式的值,即:
∣∣
∣
∣
∣
∣∣11⋯1b1b2⋯bn⋮⋮⋱⋮bn−11bn−12⋯bn−1n∣∣
∣
∣
∣
∣∣
考虑将除了第一行的每一行同时减去上一行的 b1 得到
∣∣
∣
∣
∣
∣∣11⋯10b2−b1⋯bn−b1⋮⋮⋱⋮0bn−22(b2−b1)⋯bn−2n(bn−b1)∣∣
∣
∣
∣
∣∣
注意到此时第一列只有 (1,1) 非零,那么对第一列行列式展开那么得到值其实就为除去第一行第一列的行列式值。
此时除去第一行第一列之后,把每一列 (bi−b1) 提取出来再不断递归即可。
那么得到:
∣∣
∣
∣
∣
∣∣11⋯1b1b2⋯bn⋮⋮⋱⋮bn−11bn−12⋯bn−1n∣∣
∣
∣
∣
∣∣=∏1≤i<j≤n(bj−bi)
那么最终的答案也就为(右上角的方案和左下角的是对称的,方案数相同)
ans=(n∏i=11(i−1)!∏1≤i<j≤n(bj−bi))2
直接计算即可得到通过。
后记:使用一些高端的多项式科技可以加速计算。
现在考虑如果一个区间满足区间的最大不交路径组大小恰好为 i,那么说明转到 LGV 矩阵上之后存在恰好 i 行 i 列的子式的行列式值不为 0,换句话说,LGV 矩阵的秩大小为 i。
考虑现在对每条边赋予一个非零权值,利用拓扑序求出每个起点到当前点的权值乘积。(这里本来应该对每条边设一个形式元 x,然后准确表示,但是维度成本太高,随机一个权值使得秩变小的概率为 1p,证明同 P10102)
设 fi,j 表示第 i 个点从 j 走到这的权值乘积。
现在只需对每个区间求出 fi,j 形成的矩阵的秩,从而得到最大不交路径大小。
考虑扫描线,维护前缀线性基(不会的看幸运数字),将线性基中的编号 idi 全部拉出来从大到小排序,那么左端点在 [idi+1,idi) 的秩的大小为 i。
复杂度 O(nk2+mk)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具