首页 > 其他分享 >LGV 引理学习笔记

LGV 引理学习笔记

时间:2024-05-26 14:55:14浏览次数:20  
标签:text sum 路径 笔记 bigvee 集合 引理 LGV

\(\text{LGV}\) 引理学习笔记

\(\text{LGV}\) 引理一般用于求解有向无环图中多条不相交路径的方案数,引理内容如下。

引理

定义 \(w(P)\) 指的是路径 \(P\) 上所有边权的乘积(在路径计数问题中认为所有边权均为 \(1\) 即可),\(e(A,B)\) 指的是 \(A\to B\) 的所有路径的 \(w\) 和。

对于一个由起点组成的集合 \(A\) 和终点组成的集合 \(B\),满足 \(|A|=|B|=n\) 且 \(A\bigcap B=\varnothing\),那么对于矩阵

\[M=\begin{bmatrix}e(A_1,B_1)&e(A_1,B_2)&\cdots&e(A_1,B_n)\\e(A_2,B_1)&e(A_2,B_2)&\cdots&e(A_2,B_n)\\\vdots&\vdots&\ddots&\vdots\\e(A_n,B_1)&e(A_n,B_2)&\cdots&e(A_n,B_n)\end{bmatrix} \]

\[\text{det}(M)=\sum_{p}(-1)^{r(p)}C(p) \]

其中,\(\text{det}(M)\) 指的是矩阵 \(M\) 对应的行列式,\(p\) 为 \(1\) 到 \(n\) 的排列,\(r(p)\) 为 \(p\) 的逆序对个数,\(C(p)\) 表示有多少个由 \(n\) 条路径组成的路径集合 \(P=\{P_1,P_2,\cdots,P_n\}\) 满足 \(P_i\) 为 \(A_i\to B_{p_i}\) 的路径,且 \(\forall i,j,P_i\bigcap P_j=\varnothing\),也就是所有的路径集合没有交点。

证明

考虑将行列式展开,得到:

\[\begin{aligned}\text{det}(M)&=\sum_{p}(-1)^{r(p)}\prod_{i=1}^{n}e(A_i,B_{p_i})\\&=\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}}w(P)\end{aligned} \]

计表示所有不相交路径组为 \(S_1\),相交路径组为 \(S_2\)。

那么可以继续化为:

\[\text{det}(M)=\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_1}w(P)+\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P) \]

有因为 \(C(p)=\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_1}w(P)\),那么我们只需证:

\[\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)=0 \]

现在考虑对于 \(P\in S_2\) 的字典序最小的二元组 \((i,j)\) 满足 \(P_i\bigcap P_j\ne\varnothing\),那么假设两条路径分别为 \(A_i\to u\to B_{p_i}\) 和 \(A_j\to u\to B_{p_j}\),不妨将两者调换成 \(A_i\to u\to B_{p_j}\) 和 \(A_j\to j\to B_{p_i}\)。那么调换后的新路径组 \(P'\) 一定满足 \(w(P)=w(P')\),而对应的排列 \(p'\) 相当于将 \(p\) 中的 \(p_i,p_j\) 调换,那么逆序对个数的奇偶性一定发生了改变,因此这两者对答案的贡献相反。又因为这样的调换不对其他的路径产生影响,所以 \(P'\) 满足条件的最小二元组一定也是 \((i,j)\),所以映射 \(f\) 满足 \(f(P)=P',f(P')=P\),构成双射。也就是 \(S_2\) 中的每一个路径集合,都一定存在一个和它对答案贡献相反的路径集合。所以有:

\[\begin{aligned}\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)&=\frac{\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)+\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(f(P))}{2}\\&=\frac{\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)-\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(f(f(P))}{2}\\&=\frac{\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)-\sum_{p}(-1)^{r(p)}\sum_{P=\{P_i:A_i\to B_{p_i}\}\bigvee P\in S_2}w(P)}{2}\\&=0\end{aligned} \]

那么引理得证。

应用

下面考虑这个引理对我们做题的帮助,不难发现,如果将整张图按照起点、普通点、终点的顺序依次排开,并且每一层之间没有连边,那么 \(\text{det}(M)\) 反映的就是偶数个交点的路径集合个数减去奇数个交点的路径集合个数。而对于一些特殊的图如网格图来说,如果能够推出当 \(p\) 中存在逆序对时一定不存在不相交的路径集合,那么 \(\text{det}(M)\) 反映的就是不相交路径集合的个数。

标签:text,sum,路径,笔记,bigvee,集合,引理,LGV
From: https://www.cnblogs.com/DycBlog/p/18213677

相关文章

  • OOP笔记 —— 多态(Polymorphism)
    多态就是同一个方法的不同实现(即:相同的函数名,不同的函数体)多态的精髓在于父类指针的使用:将子类的地址赋给父类指针,即父类指针指向子类对象注意:用指针去调用成员方法时,通过“->”符号1.虚函数(VirtualFunction)此处的虚函数是指非纯虚函数。定义:非纯虚函数是一个带有virt......
  • Netty_Redis_Zookeeper高并发实战-读书笔记
    转载自:https://www.cnblogs.com/leihongzhi/p/17381156.html 第1章    高并发时代的必备技能1.nettyNetty是JBOSS提供的一个Java开源框架,基于NIO的客户端/服务器编程框架,能够快速开发高并发、高可用、高可靠的网络服务器程序,也能开发高可用、高可靠的客户端程序。NIO是......
  • FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流
    ​OBS是一个开源的直播录制软件,英文全称叫做OpenBroadcasterSoftware,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、MacOS、Linux等操作系统。OBS的官网是https://obsproject.com/,录制软件名叫OBSStudio,它基于QT+FFmpeg编码。使用OBS实现直播功能的......
  • Vue3实战笔记(45)—VUE3封装一些echarts常用的组件,附源码
    文章目录前言一、柱状图框选二、折线图堆叠总结前言日前使用hooks的方式封装组件,在我使用复杂的图标时候遇到了些问题,预想在onMounted中初始化echarts,在使用hooks的时候,组件没有渲染完,使用实例会出现各种各样的问题,并且在hooks中使用一些外部属性也属实遇到了些麻烦......
  • Html简要笔记
    html在线文档:https://www.w3school.com.cn怎么创建文件我已经会了1,html快速入门<!--文档类型说明注释--><!DOCTYPEhtml><!--使用语言的地区en表示英国美国en-US--><htmllang="en"><!--html头--><head><!--charset文件的字符集--><met......
  • Z 算法 学习笔记
    问题引入寻找字符串\(T\)在字符串\(S\)中的出现位置。暴力算法暴力枚举\(S\)的每一位作为开头,向后匹配,若能将\(T\)匹配完毕就为\(T\)在\(S\)中的一次出现。记\(S\)的长度为\(n\),\(T\)的长度为\(m\),则时间复杂度最劣为\(O(nm)\)。优化上面的算法有很多冗......
  • 视差背景,GODOT游戏引擎学习笔记(五)
    背景图片资源今天周六玩了一天,现在晚上来更新一下帖子。前面几节我们学习了创建一个人物精灵节点使其移动。这节我们来学习创建背景。会用到三个图片文件。我已经上传到csdn了,链接如下:https://download.csdn.net/download/weixin_66990397/89356894?spm=1001.2014.3001.5501......
  • 开坑开坑,GODOT游戏引擎学习笔记(一)
    前言         本人重度游戏玩家,计科专业学生,玩了许多游戏已经逐渐电子羊尾,于是打算学习几个游戏引擎,一个方面是爱好,另一方面也是多掌握点技术。先打算从2D游戏开始学,目前引擎确定为GODOT,一个开源且适合新手的引擎。后续学习unity和虚幻等引擎也会继续更新,同时也会开......
  • Living-Dream 系列笔记 第58期
    T1第一问开桶统计即可。第二问我们采用双指针,不断地移动\(r\)直到包下含有最多单词数的区间,再移动\(l\)使答案更优并不断更新答案即可。具体有一些细节见代码。时间复杂度\(O(n\logn)\)。可以把代码中的两个map换成数组存hashvalue,时间可以降至\(O(n)\),但是我懒了......
  • TypeScript 学习笔记(十一):TypeScript 与微服务架构的结合应用
    TypeScript学习笔记(十一):TypeScript与微服务架构的结合应用1.引言在前几篇学习笔记中,我们探讨了TypeScript的基础知识、前后端框架的结合应用、测试与调试技巧、数据库以及GraphQL的结合应用。本篇将重点介绍TypeScript与微服务架构的结合应用,包括如何使用TypeSc......