The Involution Principle
Catalan Paths
从 \((0,0)\) 走到 \((n,n)\), 每次只能向上或者向右走,不能穿过直线 \(y=x\) 的方案数。
设从 \((0,0)\) 到 \((n,n)\) 的路径集合为 \(S\), 从 \((1,0)\) 到 \((n+1,n)\) 的路经集合 \(S^+\), 从 \((0,1)\) 到 \((n+1,n)\) 的路经集合 \(S^-\), 显然有 \(|S^+|=\binom{2n}{n},|S^-|=\binom{2n}{n-1}\)。 对于一条路径 \(W\in S^+\cup S^-\),让 \(\phi W\) 表示一条路径,如果 \(W\) 没有穿过 \(y=x\), 那么 \(\phi W=W\),否则 \(\phi W\) 表示 \(W\) 关于 \(W\) 与 \(y=x\) 的第一个交点的对称路径。
显然对于任意一条路径 \(W\in S^-\), 它都会穿过 \(y=x\), 并且 \(\phi W\in S^+\), 所以 \(C_n=\binom{2n}{n}-\binom{2n}{n-1}=\frac{\binom{2n}n}{n+1}\)
Vandermonde Determinant
\(\det\begin{gathered}\begin{pmatrix} x_1^{n-1} & x_2^{n-1} & ... & x_n^{n-1} \\ x_1^{n-2} & x_2^{n-2} & ... & x_n^{n-2} \\ ... \\ x_1 & x_2 & ... & x_n \\ 1 & 1 & ... & 1 \end{pmatrix}\end{gathered}=\prod\limits_{1\le i<j\le n}(x_i-x_j)\)
Proof.
\(\text{The left-hand side}\colon\sum\limits_{\sigma\in S(n)}(\text{sign }\sigma)x_{\sigma(1)}^{n-1}x_{\sigma(2)}^{n-2}\cdots x_{\sigma(n)}^0\)
\(\text{The right-hand side}\colon(-1)^mx_1^{a_1}x_2^{a_2}\cdots x_n^{a_n}\ (\sum\limits_{i=1}^na_i=\binom{n}{2},m=\#\{j\colon x_j\text{ is taken from }x_i-x_j\})\)
考虑建立竞赛图 \(T\), 对于一条边 \(e=(u,v)\) 我们称 \(u\) 是赢家,并定义 \(e\) 的权重:\(w(e)=x_u\text{ with sign }e=\begin{cases}1 & u<v\\-1 & u>v\end{cases}\)
再定义 \(w(T)=\prod\limits_{e\in T}w(e),\text{sign }T=\prod\limits_{e\in T}\text{ sign }e\)
那显然就有 \(\prod\limits_{1\le i<j\le n}=\sum\limits_{T}(\text{sign }T)w(T)\)
从另一个方面也很好解释为啥这两个很容易能看成相等的,因为竞赛图个数和 \(\prod\limits_{1\le i<j\le n}\) 拆开之后的项数都是 \(2^{\binom{n}{2}}\)
于是现在只需要建立竞赛图与行列式的关系。
首先考虑所有无环的竞赛图,显然可以给 \(1,2...n\) 排一个序构成排列 \(\sigma\), 容易观察到 \(w(T_{\sigma})=x_{\sigma(1)}^{n-1}x_{\sigma(2)}^{n-2}\cdots x_{\sigma(n)^0},\text{ sign }T_{\sigma}=(-1)^{\text{inv }\sigma}=\text{sign }\sigma\)
所以有 \(\det=\sum\limits_{\sigma\in S(n)}(\text{sign }\sigma)w(T_{\sigma})\)
现在考虑想办法过滤掉有环的竞赛图,让集合 \(S\) 表示所有有环的竞赛图集合, \(S^+=\{T\in S\colon \text{sign }T=1\},S^-=\{T\in S\colon \text{sign }T=-1\}\)
对于一个有环的竞赛图 \(T\),显然会存在一些点对使得其入度相同,我们找出所有点对中最小的点 \(i_0\) 和与 \(i_0\) 入度相同的最小的点 \(j_0\), 那么对于一个点 \(k\not= i_0, j_0\), 不妨设 \(i_0\rightarrow j_0\),那么三元组 \(i_0,j_0,k\) 之间的连边关系只可能有下面四种情况:

显然有 \(\#\text{II}=\#\text I + 1\)
考虑设 \(\phi T\) 表示图 \(T\) 将边 \((i_0,j_0)\) 反向后得到的新图,显然有 \(\text{sign }T=-\text{sign }\phi T,w(T)=w(\phi T)\),且一个在 \(S^+\) 中,一个在 \(S^{-}\) 中,于是这些图的贡献会被抵消掉,故原式得证.
The Pfaffian
称对于集合 \(\{1,2...n\}\) 的任意一个两两划分为在 \(\{1,2...n\}\)上的一个匹配 \(\mu\),写作 \(\mu=i_1j_1,i_2j_2,...,i_{n/2}j_{n/2}\text{ with }i_k<j_k\text{ for all }k\),对于一个斜对称矩阵 \(A\),我们记一个符号 \(a_{\mu}=a_{i_1j_1}a_{i_2j_2}\cdots a_{i_{n/2}j_{n/2}}\)
为了定义 \(\mu\) 的符号,考虑画图列出 \(1,2...;\#\mu\) 表示匹配交叉的数量,并且 \(\text{sign }\mu=(-1)^{\#\mu}\)
对于这个矩阵 \(A\),我们定义 \(pfaffian\text{ Pf}(A)=\sum\limits_{\mu}(\text{sign }\mu)a_{\mu}\)
那么有定理 \(\det A=[\text{Pf}(A)]^2\)
Proof.
首先还是考虑行列式的常见形式 \(\det A=\sum\limits_{\sigma\in S(n)}(\text{sign }\sigma)a_{\sigma}\ (a_{\sigma}=a_{1\sigma(1)}a_{2\sigma(2)}\cdots a_{n\sigma(n)})\)
定义 \(S\) 是所有排列中至少包含一个奇环的排列的集合。对于 \(\sigma\in S,\text{let }\sigma=\sigma_1\sigma_2\cdots\sigma_t\) 为其环分解,其中 \(\sigma_1\) 是所有奇环中最小标号所在的奇环,然后定义

显然除了 \(\sigma_1=(k)\) 的情况有 \(a_{\sigma}=-a_{\sigma'},(\text{sign }\sigma)a_{\sigma}=-(\text{sign }\sigma')a_{\sigma'}\), 而对于 \(\sigma_1=(k)\) 的情况,显然有 \(a_{\sigma}=0\)。
于是可以获得结论:\(\det A=\sum\limits_{\sigma\in E}(\text{sign }\sigma)a_{\sigma}\),其中 \(E\in S(n)\) 是所有只包含偶环的排列。
要证明定理,需要找到一个 \((\mu_1,\mu_2)\) 到 \(\sigma\in E\) 的双射关系 \(\phi\) 使得 \((\text{sign }\mu_1)a_{\mu_1}\cdot (\text{sign }\mu_2)a_{\mu_2}=(\text{sign }\sigma)a_{\sigma}\),这里简单举一个例子:

先不考虑符号的问题观察一番。
考虑正向拼凑 \(\sigma\), 考虑如下过程:每次选出未访问过的最小标号点,然后依次沿着 \(\mu1,\mu2\) 中的匹配边走,最后一定会走出若干个偶环。
考虑反向求 \(\mu1,\mu2\) ,考虑如下过程:每次选一个偶环,从上面的最小标号点开始依次把边划分给 \(\mu1,\mu2\)。
现在就只用考虑符号是否能对上。
假设 \(\phi(\mu_1,\mu_2)=(-1)^{e(\sigma)}a_{\sigma},e_(\sigma)=\#\{i\colon i>\sigma(i)\}\)
令 \(\sigma\) 的环分解是 \(\sigma_1\sigma_2\cdots\sigma_t;\) 那么 \(\text{sign }\sigma=(-1)^t\)
所以只需要证明 \(\text{sign }\mu_1\cdot\text{sign }\mu_2=(-1)^{e(\sigma)+t}\) 即 \(\#\mu_1+\#\mu_2-e(\sigma)\equiv t\ (\text{mod 2})\)
容易证明,对于这个环分解,如果我们交换 \(i,i+1\) 的位置,得到的 \(\#\mu_1'+\#\mu_2'-e(\sigma)'\) 和 \(\#\mu_1+\#\mu_2-e(\sigma)\) 奇偶性相同,故可以把 \(\sigma\) 经过多次交换变成

把匹配画出来显然长这样

显然对于这个东西, \(\#\mu_1'=\#\mu_2'=0,e(\sigma)'=t\) ,故原定理得证.
The Involution Principle的更多相关文章
- Cognition math based on Factor Space (2016.05)
Cognition math based on Factor Space Wang P Z1, Ouyang H2, Zhong Y X3, He H C4 1Intelligence Enginee ...
- Atitit.软件开发的几大规则,法则,与原则Principle v3
Atitit.软件开发的几大规则,法则,与原则Principle v31.1. 修改历史22. 设计模式六大原则22.1. 设计模式六大原则(1):单一职责原则22.2. 设计模式六大原则(2):里 ...
- C#设计模式系列:开闭原则(Open Close Principle)
1.开闭原则简介 开闭原则对扩展开放,对修改关闭,开闭原则是面向对象设计中可复用设计的基石. 2.开闭原则的实现 实现开闭原则的关键就在于抽象,把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规 ...
- 开放封闭原则(Open Closed Principle)
在面向对象的设计中有很多流行的思想,比如说 "所有的成员变量都应该设置为私有(Private)","要避免使用全局变量(Global Variables)",& ...
- 最少知识原则(Least Knowledge Principle)
最少知识原则(Least Knowledge Principle),或者称迪米特法则(Law of Demeter),是一种面向对象程序设计的指导原则,它描述了一种保持代码松耦合的策略.其可简单的归纳 ...
- 接口分离原则(Interface Segregation Principle)
接口分离原则(Interface Segregation Principle)用于处理胖接口(fat interface)所带来的问题.如果类的接口定义暴露了过多的行为,则说明这个类的接口定义内聚程度 ...
- 依赖倒置原则(Dependency Inversion Principle)
很多软件工程师都多少在处理 "Bad Design"时有一些痛苦的经历.如果发现这些 "Bad Design" 的始作俑者就是我们自己时,那感觉就更糟糕了.那么 ...
- 里氏替换原则(Liskov Substitution Principle)
开放封闭原则(Open Closed Principle)是构建可维护性和可重用性代码的基础.它强调设计良好的代码可以不通过修改而扩展,新的功能通过添加新的代码来实现,而不需要更改已有的可工作的代码. ...
- 单一职责原则(Single Responsibility Principle)
单一职责原则(SRP:The Single Responsibility Principle) 一个类应该有且只有一个变化的原因. There should never be more than on ...
随机推荐
- toad for oracle 小技巧
在SQL*LOADER 工具上(或者称为SQLLDR,读为:“sequel loader”),因为它仍然是装载数据的主要方法,SQLLDR 能够在极短的时间内装 载庞大数量的数据. 我也是初使用,理解 ...
- Linux好学吗?怎么自学Linux?6个值得你去学习Linux的理由!
两个多月前,我对日常工作做出了一个非常重要的决定-我决定从Windows切换到Linux,将其作为个人和办公笔记本电脑的主要系统.除了开始时一些小的驱动程序问题之外,切换非常平稳,我不会考虑返回.如果 ...
- Just test it!!软件测试测起来!!
(图片: josh@unsplash,字数:700,时间:1分钟) (一) 一切的软件质量保障活动,归根结底,就两种类型. 一种是基于代码执行的,一种是不基于代码执行的. 测试之于肉眼自查.静态检查. ...
- Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入 entity 对应表中字段,如不对应,在xml中起别名 map ...
- goroutine间的同步&协作
Go语言中的同步工具 基础概念 竞态条件(race condition) 一份数据被多个线程共享,可能会产生争用和冲突的情况.这种情况被称为竞态条件,竞态条件会破坏共享数据的一致性,影响一些线程中代码 ...
- ~~网络编程(四):socket套接字~~
进击のpython ***** 网络编程--socket socket的中文意思叫做套接字,socket方法其实也叫套接字方法 我们研究过TCP/UDP协议,但是要是让我们自己搭建,就十分困难了 而这 ...
- java基础(一)注释
注释的三方方式: 1.多行注释 /* 多行注释01 多行注释02 多行注释03 */
- matplotlib颜色线条及绘制直线
plt.axhline(y=0,ls=":",c="yellow")#添加水平直线 plt.axvline(x=4,ls="-",c=&qu ...
- pandas第三方库
# 一维数组与常用操作 import pandas as pd # 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) ...
- PHP 类型比较
PHP 类型比较 虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较. 松散比较:使用两个等号 == 比较,只比较值,不比较类型 ...
