格路计数学习(抄写)笔记
2 Dyck 路
2.1 格路
定义 2.1 在平面直角坐标系中,横坐标和纵坐标都是整数的点称为格点,平面格路是指从 一个格点到另一格点只走格点的路,格路的长度是指其所走的路的步数。
2.2 自由路
定义 2.2 对于一条从 (0,0) 到 (n,m) 的格路,若只使用上步 U=(0,1) 和右步 L=(1,0),则我们称其为 (n,m) 自由路。
定理 2.1 记 F(n,m) 为 (n,m) 自由路的数量,F(n,m) 为 (n,m) 自由路的数量,则 F(n,m)=(n+mn)。
2.3 (n,m)-Dyck 路的计数
定义 2.3 对于一条从 (0,0) 到 (n,m) 的自由路,若其始终不经过对角线 y=mnx 下方,则我们称之为 (n,m)-Dyck 路。
记 D(n,m) 为 (n,m)-Dyck 路的数量,记 D(n,m)。
考虑一条 (n,m)-Dyck 路对应的 LU 序列。
定义 2.4 对于从 (0,0) 到 (n,m) 的 2 条格路 (P,Q) ,其中 P=u1u2⋯un+m,Q=v1v2⋯vn+m (ui,vi∈{L,U})。若 ∃i,ui+1⋯un+mu1⋯ui=Q,则我们称格子 P,Q 等价(即循环同构)。将 P 的等价路全集记为 [P]。
定义 2.5 对于任意格路 P ,记 Pk=uk+1uk+2⋯un+mu1⋯uk。则 [P]={Pk|k=1,2,3,⋯,n+m}。定义 P 的 周期 为使得 P=Pk 的最小数 k ,用 period(P) 表示,则显然有 #[P]=period(P)。
引理 2.1 若 (n,m)=1,则 ∀P∈F(n,m),有:
period(P)=n+m
证明:
显然有 period(P)≤n+m。考虑反证法:
若 period(P)<n+m,设为 r。设 n+m=ar+b (b<r)。
则由定义得 P=Pr=P2r=⋯=Par。所以有 Pb=P,则推出 b=0。又因为 r<n+m , 所以 a>1。
因为 a>1,所以 a|n 且 a|m,与 (n,m)=1 矛盾,所以 period(P)=n+m。
引理 2.2 当 n 和 m 互质时,[P] 有且仅有一条 (n,m)-Dyck 路。
证明:
首先证明存在性:
若 P 不是一条 (n,m)-Dyck 路,则其一定存在一个点在对角线下方。设这些点当中离对角线最远 的点是 v,从这个位置断开,将 P 分为两个子路 L1,L2。则 P 可以表示为 P=L1L2。构建一条新 的格路 P′=L2L1,则 P′ 显然是一条 (n,m)-Dyck 路。
然后证明唯一性:
容易发现,我们只需要证明对角线下方距离对角线最远的点有且只有一个。
设两点距离对角线距离相同,则这两点形成直线与对角线斜率 mn 相同。由 n,m 互质可知对角线 下方不存在这样的两个整点。
由上述两个引理我们就可以立刻得出:
定理 2.2 当 (n,m) 互质时,(n,m)-Dyck 路的数量为:
D(n,m)=1n+m(n+mn)
2.4 有 k 个峰的 (n,m)-Dyck 路计数
定义 2.6 对于一条从 (0,0) 到 (n,m) 的自由路中的连续两步,若其为 UL
,则我们称之为一个峰;若其为 LU
,则我们称之为一个谷。
定理 2.3 记 F(n,m;k) 为所有有恰好 k 个峰的 (n,m) 自由路的集合,F(n,m;k)=#F(n,m;k)。则从 (0,0) 到 (n,m) 的 k 个峰的自由路数量为:
F(n,m;k)=(nk)(mk)
这个很好理解,相当于在 n 个 L
中选择 k 个作为峰,在 m 个 U
作为峰,这两部分显然是独立的。每一种选法都能够对应一种方案。
定理 2.4 记 FUL(n,m;k) 为所有有恰好 k 个峰,且首步为 U,末步为 L 的 (n,m) 自由路的集合,FUL(n,m;k)=#FUL(n,m;k)。则有:
FUL=(n−1k−1)(m−1k−1)
起始的一段 U
一定会与后面形成一个峰,结尾的一段 L
一定会和前面形成峰。那么这个公式就是易于理解,显然成立的。注意到他这么定义的动机就是要引入不能越过对角线的限制了。
定理 2.5 记 D(n,m;k) 为所有有恰好 k 个峰的 (n,m)-Dyck 路的集合,D(n,m;k)=#D(n,m;k)。则当 n,m 互质时,恰有 k 个峰的 (n,m)-Dyck 路的个数为:
D(n,m;k)=1k(n−1k−1)(m−1k−1)
证明:
对于任意格路 P∈FUL(n,m;k) ,其恰好有 k−1 个谷,我们将其断开分成若干子路。则有 P=L1L2⋯Lk。
与 引理 2.1 类似,将 L 看做元素,P 的 周期 为 k。
因此每条 Dyck 路的每个峰唯一对应 FUL(n,m;k) 中的一个元素。 同样的,我们这样的格路也找 到离对角线最远的点切开,交换两端。这个最远的点一定是谷。所以每个 FUL(n,m;k) 中的元素都可以 唯一对应 Dyck 路中的一个峰。所以这个公式显然成立。
2.5 t-Dyck 路计数
定义 2.7 对于一条从 (0,0) 到 (n,m) 的自由路,若其始终不经过对角线 y=tx 下方,则我们称之为 t-Dyck 路。特别地,若 m=tn ,则我们称之为 n 阶 t-Dyck 路。
注意,因为 (n,tn)≠1 ,所以不满足之前所述定理的使用条件。
定理 2.6 有 k 个峰的 n 阶 t-Dyck 路的个数是:
D(n,tn;k)=1k(n−1k−1)(tnk−1)
证明:
记 m=tn+1 ,则显然 (n,m)=1。带入 定理 2.5。
D(n,tn+1;k)=1k(n−1k−1)(tnk−1)
考虑 D(n,tn+1;k) 中的任意元素 P ,因为 tn+1n>t≥1 ,所以前两步必然为 U
。则设去掉第一 个 U
的路径为 P′。
因为 ∀x∈Z ,tn∈Z。所以去掉第一个 U
不会使得 P′ 到 y=tx 下方去。
类似地,因为 y=tn+1nx 与 y=tx 之间没有整点,所以加上一个 U
会让路径到 tn+1nx 上面去。
因此两个集合一一对应。
定理 2.7 n 阶 t-Dyck 路的个数是:
D(n,tn)=1tn+1(tn+nn)
**证明:** 随便化一下式子,然后范德蒙德卷积易证。
值得注意的是,卡特兰数本质就是 n 阶 t-Dyck 路的 t=1 的特殊情况。即 D(n,n)=1n+1(2nn)。
定理 2.8 从 (0,0) 到 (n,m) 的有 k 个峰的 t-Dyck 路的个数是:
Dt(n,m;k)=m+1−tnn(nk)(mk−1)
定理 2.9 从 (0,0) 到 (n,m) 的 t-Dyck 路的个数是:
Dt(n,m;k)=m+1−tnn+1(n+mn)
证明比较复杂。论文也没写。有兴趣翻参考文献。
2.6 Dyck 路的另一种等价定义
n 阶 Dyck 路是在 x 轴上分以上步 U1=(1,1) ,下步 D=(1,−1) 从 (0,0) 到 (2n,0) 的格路。这个很好理解。相当于将原格路旋转 45∘,然后做相应的缩放即可。
n 阶 t-Dyck 路是在 x 轴上方以上步 Ut=(1,t),下步 D=(1,−1),从 (0,0) 到 ((t+1)n,0) 的格路。
n 阶 t-Dyck 路的全体记作 ~Dt(n),~Dt(n)=#~Dt(n)。
~Dt(n) 和 ~D(n,tn) 之间存在双射。构造双射的一个方法如下:
对于 P,我们将其倒序得到 P′,然后把 L 替换为 Ut,U 替换为 D 即可。 这个还是可以利用将整个格子图旋转至对角线水平理解。
3 不相交格路
3.1 n 阶不交 Dyck 路计数
定义 3.1 从 (0,0) 到 (n,n) 的两条 Dyck 路 P、Q 称为一个 n 阶 Dyck 路对。若 Q 始终不穿过 P,则 (P,Q) 是一个 不交 Dyck 路对,否则称为 相交 Dyck 路对。
定理 3.1 n 阶不交 Dyck 路对数为
∣∣∣CnCn+1Cn+1Cn+2∣∣∣
其中,Cn=1n+1(2nn),是卡特兰数的第 n 项。
证明: 构造映射 (P,Q)→(~P,~Q),其中 ~P=UUPLL,~Q 为将 Q 向 (1,1) 平移一格后得到从 (1,1) 到 (n+1,n+1) 的 Dyck 路。那么 (P,Q) 相交当且仅当 (~P,~Q) 有交点。而且没有交点的 ~P 一定满足开头是两个 U
,结尾是两个 L
。那么就是两个起点两个终点的 LGV
引理了。
定理 3.2 k 条 n 阶不交 Dyck 路对数为
det(Cn−i−j)ki,j=1=∣∣
∣
∣
∣
∣∣Cn−2Cn−3⋯Cn−kCn−k−1Cn−3Cn−4⋯Cn−k−1Cn−k−2⋮⋮⋱⋮⋮Cn−k−1Cn−k−2⋯Cn−2k−1Cn−2k∣∣
∣
∣
∣
∣∣
证明: 这个也可以直接平移起终点然后 LGV
证。
3.2 不交自由路对计数
定义 3.2 设 P、Q 是两条自由路,如果 Q 始终不穿越 P,则称 (P,Q) 是从 (0,0) 到 (n,m) 的两条不交自由路对,用 Fnc 表示。如果 P、Q 除了起点以及终点之外没有公共点,则称 (P,Q) 是一个不接触自由路对,用 Fnt 表示。
定理 3.3 从 (0,0) 到 (n,m) 的不接触自由路对个数是
Fnt(n,m)=1n(n+m−1n−1)(n+m−2n−1)
证明: 想必不用证了,直接就是一个裸的 LGV
,整理一下式子就是这个样子。
定理 3.4 从 (0,0) 到 (n,m) 的不交自由路对个数是
Fnc(n,m)=1n+1(n+m+1n)(n+mn)
证明: 令 P 在 Q 上方,那么可以将 P 向上平移一格,将 Q 向右平移一格,那么不交就会变成接触。
然后在 P 最后加上一个 L
,Q 最后加上一个 U
补全就可以得到 Fnc(n,m)=Fnt(n+1,m+1)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)