upd 2020-07-21 增加了Routings: the Lindstrm–Gessel–Viennot lemma章节
upd 2020-07-14 17:36 增加了完美匹配的部分,已经快看不懂了,枯了????
upd 2020-07-14 增加了欧拉路径和BEST theorem 章节
做笔记,不然学了忘



把计数问题转化为计算矩阵行列式

预备知识

adjacency matrix 中文是不是邻接矩阵?

有向图 The adjacency matrix A=A(G)A = A(G) is theV×VV×V matrix whose entries are

auva_{uv}= number of edges from u to v.

无向图 The (undirected) adjacency matrix A=A(G)A = A(G) is the V×VV ×V matrix whose entries are

auva_{uv} = number of edges connecting u and v.

一些结论

【读书笔记】组合计数中的行列式方法

不解释,邻接矩阵定义和矩阵乘法定义

算矩阵幂AnA^n ,如果AA可对角化是容易计算的

嗯其实也有办法,我找到了《矩阵分析与应用》(第2版)7.3.3矩阵幂的计算,我放在末尾附录了


【读书笔记】组合计数中的行列式方法

第一个等号是等比数列的求和,第二个等号是克拉姆法则


【读书笔记】组合计数中的行列式方法

不解释

xx我楞了一下,应该是1×11×1

det(AxI)=(xλ1)...(xλk)det(A-xI)=(x-\lambda_1)...(x-\lambda_k)

证明那里Q(x)=(1λ1x)...(1λkx)Q(x)=(1-\lambda_1x)...(1-\lambda_kx)我楞了一下,你把A对角形式带进去就比较容易理解了


【读书笔记】组合计数中的行列式方法

u,vu,vi,ji,j记号混用,意思是那么个意思

联系了前面的Corollary 1.4.2

应用

Example1 项链染色

nn个珠子围成一圈,给你kk种颜色来染色,要求相邻颜色不同,求方案数目f(n,k)f(n,k)。(旋转和翻转视为不同的方案)

kk种颜色想成kk个节点,完全图KkK_k ,邻接矩阵是A=JIA=J-IJJ是全1矩阵

AAkk个特征值是1,1,...,1,k1-1,--1,...,-1,k-1

答案就是此图中长度为nn的closed walk的数目

利用前面的Corollary 1.4.3

答案是(k1)n+(k1)(1)n(k-1)^n+(k-1)(-1)^n

Example2 Words with forbidden subwords,1

给定一长nn的字符串,只由{a,b}组成,且不会有子串aa(子串是连续的)。问你方案数目fnf_n

说实话这个递推方程都能直接写,fn=fn1+fn2,f1=2,f2=3f_n=f_{n-1}+f_{n-2},f_{1}=2,f_{2}=3

建图就是节点a和节点b,边a→b,b→a,b→b

A=(0111) A=\begin{pmatrix} 0 & 1 \\ 1 & 1 \end{pmatrix}
An=(Fibonacci[n1]Fibonacci[n]Fibonacci[n]Fibonacci[n+1]) A^n=\begin{pmatrix} Fibonacci[n-1] & Fibonacci[n] \\ Fibonacci[n] & Fibonacci[n+1] \end{pmatrix}

fnf_nAn1A^{n-1}的元素和,是Fibonacci[n+2]

Example3 Words with forbidden subwords,2

给定一长nn的cyclic word,只由{a,b}组成,且不会有子串aa,abba(子串是连续的)。问你方案数目gng_n

不会,吃了没文化的亏,看不懂cyclic word是啥

我认为是好比babbb,然后它就是你的重复单元

。。。babbb|babbb|babbb|babbb。。。里找子串

这样就解释通了

【读书笔记】组合计数中的行列式方法

Example4 Monomer-dimer problem

给你1×1和1×2的砖都是无数个,问你无重叠填充m×nm×n大矩形的方案数目

这里介绍简单的情形,m=3,n=5m=3,n=5

强制加上顺序,一列一列的铺,共有6条竖线

每次从上往下数,突出计0,不突出计1

一种方案的图解如下,

【读书笔记】组合计数中的行列式方法

111–110–>011–>101–>010–>111.​

这正好对应图GG从111到111的长为55路径

要求的答案就是111到111的长度为6的路径数

GG到底长什么样呢?规律不是很明显

比如:

000到000肯定是0条边,

111到111有3种铺法(2+1,1+2,1+1+1),111到111有3条边

101到111有1条

110到111有2条(1+1,2)

图G长这样

【读书笔记】组合计数中的行列式方法

接着图的邻接矩阵写出来就可以上手算啦

应用续1-生成树

这里研究的第一个问题就是图的生成树计数问题 (节点带序,1-2-3和1-3-2不同)

记号说明

【读书笔记】组合计数中的行列式方法

A principal cofactor Lv(G)L_v(G) is obtained from L(G)L(G) by removing the vvth row and vvth column for some vertex v.

基尔霍夫矩阵树定理

【读书笔记】组合计数中的行列式方法

证明我看不懂

矩阵树定理的应用-一些典型图的生成树数目

【读书笔记】组合计数中的行列式方法

给一个完全图的生成树数目的证明:

【读书笔记】组合计数中的行列式方法

塔特有向矩阵树定理

【读书笔记】组合计数中的行列式方法

有向矩阵树定理证明

【读书笔记】组合计数中的行列式方法

应用续2-欧拉回路,the BEST theorem

一些定义

  1. An Eulerian path is a path in the graph that visits every edge exactly once.
  2. If the path starts and ends at the same vertex,then it is called an Eulerian cycle.
  3. We say GG is an Eulerian graph if it has an Eulerian cycle.

一个有向图是欧拉的充要条件

Theorem 1.4.8 A directed graph is Eulerian if and only if it is connected and every vertex vv satisfies indeg(v)=outdeg(v)indeg(v) = outdeg(v).

定理1.4.8 一个有向图而言,它是欧拉的当且仅当对所有节点出度等于入度。


BEST定理

【读书笔记】组合计数中的行列式方法


BSET定理推论

在欧拉有向图中,每个节点的有向生成树数目都是相等的。

【读书笔记】组合计数中的行列式方法


k-ary de Bruijn sequence定义

A k-ary de Bruijn sequence of order n

定义为一个cyclic word,长度是knk^n,用的字母表是{0,1,…,k-1},

它的每一个subword正好遍历【长度为nn,用字母表为{0,1,…,k-1}组成的knk^n个序列】(每个出现一次)

举个例子,我从维基百科截的图:

【读书笔记】组合计数中的行列式方法

BSET theorem在k-ary de Bruijn sequences of order n计数 中的应用

建图呗。下面这也是维基截的图。

比如你想求解2-ary de Bruijn sequences of order 3的数目,每个节点的序列长度是3,

数哈密顿路径。(收集的序列就是点上的序列)

或者,你想求解2-ary de Bruijn sequences of order 4的数目,每个节点的序列长度是3,

数欧拉环。 (收集的序列就是【边和边的发出点】构成的序列)

【读书笔记】组合计数中的行列式方法

下面定理证明中用到的是把长度为n-1的序列作为点,找到欧拉环。

【读书笔记】组合计数中的行列式方法

彩蛋-超排列

中科院物理所公众号的一篇推送

Wikipedia Superpermutation

应用续3-Perfect matchings: the Pfaffian method

一些定义

  1. 一个图GG的完美匹配MM是说一系列边,使得GG的每一个点都在且仅在MM的一条边上。或者你从字面理解:2m2m个点正好分成mm组,每组2个,…

  2. skew-symmetric matrix AT=AA^T=-A (就是说关于主对角线对称的元素是相反数,aij=ajia_{ij}=-a_{ji})

  3. Pfaffian的定义。emm这里书讲得不清楚,直接截图维基。

    Pfaffian是对满足AT=AA^T=-A的矩阵AA定义的。

    【读书笔记】组合计数中的行列式方法

  4. 定理 det(A)=Pfaffian(A)2det(A)=Pfaffian(A)^2 证明看不懂

  5. 有向图的邻接矩阵 当然有[S(G)]T=S(G)[S(G)]^{T}=-S(G)

    【读书笔记】组合计数中的行列式方法

用2×1的砖密铺a×b的大矩形的方法数

假设了bb是偶数是因为:都是奇数肯定密铺不了

【读书笔记】组合计数中的行列式方法

这里不写了 ┏(゜ロ゜;)┛

应用续4-Routings: the Lindstrm–Gessel–Viennot lemma

一些定义

  • DAG 有向无环图
  • wt(e)\mathrm{wt}(e) 边的权重
  • wt(P)=wt(e)\mathrm{wt}(P)=\prod \mathrm {wt}(e) 路径的权重
  • wt(R)=i=1nwt(P)\mathrm{wt}(R)=\prod _{i=1}^n \mathrm {wt}(P) routing的权重
  • 源,汇 Let S ={s1,…,sn} and T ={t1,…,tn} be two (not necessarily disjoint) sets of vertices,which we call sources and sinks,respectively
  • Routing定义 A routing from S to T is a set of paths P1,…, Pn from the n sources s1,…,sn to the n sinks t1,…,tn such that no two paths share a vertex.
  • Let π be the permutation of [n] such that PiP_i starts at source sis_i and ends at sink tπ(i)t_{π(i)}, and define sign® = sign(π).
  • path matrix Q定义 qij=P pathfrom sito tjwt(P)q_{ij}=\sum\limits_{P\ path from\ s_i to\ t_j }\mathrm{wt}(P) 考虑Q的元素时只是看sis_itjt_j的所有路径

原文如下

【读书笔记】组合计数中的行列式方法

the Lindstrm–Gessel–Viennot lemma

维基百科词条-Lindstrm–Gessel–Viennot lemma

式子右边的求和是对SSTT的所有routings

【In particular】那里是说,

如果正好图还有这样的性质:每条边权都是1,而且SSTT的所有routing都是1->1,2->2…这样的形式,那么detQ=number of routings from S to TdetQ=number \ of \ routings\ from\ S\ to \ T

【读书笔记】组合计数中的行列式方法

Lindstrm–Gessel–Viennot lemma 应用

Example1 Binomial determinants

【读书笔记】组合计数中的行列式方法
(a1,...,anb1,...,bn)\begin{gathered} \begin{pmatrix} a_1,...,a_n \\ b_1,...,b_n \end{pmatrix} \end{gathered}记号表示的是那个行列式

…开始我还看不懂为什么there are (aibj)\begin{gathered} \begin{pmatrix} a_i \\ b_j \end{pmatrix} \end{gathered} SE paths from AiA_i to BjB_j

SE path 是说southeast ,我以为是往东往北了

since every SE routing from A to B takes Ai to Bi for all i, 这是因为0≤a1 <···<an and 0≤b1 <···<bn ; points A ={A1,…,An} and B ={B1,…,Bn} where Ai = (0,ai) and Bi = (bi,bi) for1≤i≤n 然后你还要要走SE path


Example2 Counting permutations by descent set

【读书笔记】组合计数中的行列式方法

先定义一个n排列的decent set是说一个集合SS,集合SS的元素是所有的index i使得πi>πi+1\pi_i>\pi_{i+1}

然后问你 number of permutations of [n] with descent set{c1,...,ck}\{c_1,...,c_k\}

可以构造一个A到B的SE routings构成bijeciton,答案是(c1,...ck,n0,c1,...,ck)\begin{gathered} \begin{pmatrix} c_1,...c_k,n \\ 0,c_1,...,c_k \end{pmatrix} \end{gathered}(前面的行列式记号)

计算行列式

这里方法太多了哈,方法不要太多

Of course, when we wish to evaluate a new determinant, one first step is to check whether it is a special case of some known determinantal evaluation

确实确实,能找到现成的或者是现成的特例情形绝不自己动手

附录

利用Cayley-Hamilton定理变形一下,

先求特征值,再解nn个线性方程构成的方程组

算法和例子如下,如果矩阵阶数nn也很大的话就。。。。

【读书笔记】组合计数中的行列式方法

书用的是Handbook of enumerative combinatorics

资料来自网络

相关文章:

  • 2021-10-06
  • 2022-12-23
  • 2021-04-04
  • 2022-12-23
  • 2021-06-22
  • 2021-04-23
猜你喜欢
  • 2022-02-23
  • 2021-08-08
  • 2022-03-10
  • 2021-05-13
  • 2022-01-02
  • 2021-11-12
  • 2021-11-27
相关资源
相似解决方案