zoukankan      html  css  js  c++  java
  • [整理]LGV 引理

    全称是 Lindström-Gessel-Viennot 引理,用于求解 DAG 不相交路径问题。
    设起点集合为 \(A=\{a_i\}\),终点集合为 \(B=\{b_i\}\),一条路径的权值 \(w(P)\) 是路径上所有边权之积。(这个边权是交换环就行,例如生成函数)
    设对于一个起点 \(a\) 和终点 \(b\)\(e(a,b)\) 是所有以它们为端点的路径权值和。那么以下行列式:

    \[\begin{vmatrix} e(a_1,b_1)&e(a_1,b_2)&\dots&e(a_1,b_n)\\ e(a_2,b_1)&e(a_2,b_2)&\dots&e(a_2,b_n)\\ \vdots&\vdots&\ddots&\vdots\\ e(a_n,b_1)&e(a_n,b_2)&\dots&e(a_n,b_n)\\ \end{vmatrix} \]

    的值就是所有 \(A\)\(B\) 的不相交路径权值之积的带符号和 \(\sum\limits_P(-1)^{\text{inv}(\sigma)}\prod w(P_i)\)
    其中 \(P=\{P_1,P_2,\dots,P_n\}\) 为不交路径集合,\(P_i\)\(a_i\)\(b_{\sigma(i)}\) 的路径;\(\sigma\) 是一个置换,\(\text{inv}(\sigma)\) 表示 \(\sigma\) 的逆序数。

    考虑证明这个东西,根据行列式的定义它等于 \(\sum\limits_{\sigma}(-1)^{\text{inv}(\sigma)}\prod\limits_{i=1}^ne(a_i,b_{\sigma(i)})\)
    右边这个东西整理一下变成 \(\sum\limits_{P:A\to B}(-1)^{\text{inv}(\sigma)}\prod w(P_i)\) 已经和原式几乎一样了,现在我们需要证明多出来的那些相交路径对答案没有影响。
    发现这东西还是挺显然的,我们只需要交换第一个交叉点对应的终点就可以两两匹配消掉,于是原定理得证。

    如果只需要计数路径,使所有权值为 \(1\) 即可。

    这东西的应用主要是在网格图上从一边走到另一边的不交路径计数,因为此时只有 \(\sigma=(1,2,\dots,n)\) 才不相交,右边就是路径条数。
    例题:洛谷模板 P6657。
    显然本题中 \(e(a_i,b_j)=\dbinom{b_j-a_i+n-1}{n-1}\),扔进去算一个行列式即可。

    另外,写成行列式后处理的技巧也需要注意,有一道不方便透露的模拟题中就是写成行列式后再消元成 Vandermonde 行列式,然后 FFT 优化卷积。

    内容来自_ajthreac_的博客(https://www.cnblogs.com/juruoajh/),未经允许,不得转载。
  • 相关阅读:
    Struts2学习总结——文件上传与下载
    String.StartsWith与 EndsWith在大量使用时效率果然极低
    使用CXF实现基于Rest方式的WebService
    使用CXF实现基于Soap协议的WebService
    Hibernate单向“一对多”关联
    Hibernate单向“多对一”关联
    Hibernate单向“一对一”关联
    Spring使用经验之Listener综述
    Eclipse3.4以上使用dropins的插件安装方式
    数据库第一、二、三范式
  • 原文地址:https://www.cnblogs.com/juruoajh/p/15529641.html
Copyright © 2011-2022 走看看