杨表与钩子公式

本文介绍了杨表的基本概念,包括其定义、插入与删除操作,以及如何通过杨表研究排列问题。文中详细推导了计算杨表填数方案数的钩子公式,并探讨了该公式在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搬运 2019 袁方舟论文

我们先来简单认识一下杨表:
一个标准杨表是说,每一行严格上升,每一列严格上升
设杨表 λ=(λ1,λ2,…,λm)\lambda=(\lambda_1,\lambda_2,\dots,\lambda_m)λ=(λ1,λ2,,λm) 表示有 mmm 行,
每行有 λi\lambda_iλi 个数,并且 λ1≥λ2≥⋯≥λm\lambda_1\ge \lambda_2\ge\dots\ge \lambda_mλ1λ2λm
杨表的边角说的是 {(i,j)}\{(i,j)\}{(i,j)},使得 (i+1,j),(i,j+1)(i+1,j),(i,j+1)(i+1,j),(i,j+1) 都是空的
fλf_{\lambda}fλ 表示的是往形状为 λ\lambdaλ 的杨表中填数的方案数

  • 杨表的插入:设插入 xxx,从第一行开始,找到 >x>x>x 的最小的,设为 yyy,若不存在,就把 xxx 放到最后,否则令 x=yx=yx=y 然后继续插入,容易证明插入后还是杨表
  • 杨表的删除:删除一个边角位,若在第一行,则直接删除,否则在上一行找到一个小于它的最大的,然后重复这个过程,杨表删除后任然是杨表
    在这里插入图片描述
  • 杨表,排列,双射
    将一个排列插入杨表 PPP,并且整一个记录表 QQQ,设第 iii 次将 pip_ipi 插入时多出来的位置为 (x,y)(x,y)(x,y),那么我们在 Qx,yQ_{x,y}Qx,y 上写一个 iii,这样 P,QP,QP,Q 的形状相同且 QQQ 也为一个杨表
    在这里插入图片描述
    现在一个排列可以对应一对形状相同的杨表
    接着我们考虑操作,找到 QQQ 的最大值 mmm 的位置 (x,y)(x,y)(x,y),在 PPP 中删除这个位置,删除的数为 pmp_mpm
    也就是说,一对杨表可以对应唯一一个排列,于是我们知道:
    ∑λfλ2=n!\sum_{\lambda} f_{\lambda}^2=n!λfλ2=n!
  • 钩子公式
    我们希望对一个 λ\lambdaλ,求出它的填数方式 fλf_{\lambda}fλ
    有公式:fλ=n!∏hλ(i,j)f_{\lambda}=\frac{n!}{\prod h_{\lambda}(i,j)}fλ=hλ(i,j)n!
    其中 h(i,j)h(i,j)h(i,j) 表示在杨表中 (i,b≥j)(i,b\ge j)(i,bj)(a≥i,j)(a\ge i,j)(ai,j) 的点的个数
    我们尝试归纳证明,首先 n=1n=1n=1 是成立的,我们只需要证明:(枚举当前表上一步的表是啥)
    n!∏hλ(i,j)=∑μ→λ(n−1)!∏hμ(i,j),∑μ→λ∏hλ(i,j)∏hμ(i,j)=n\frac{n!}{\prod h_{\lambda}(i,j)}=\sum_{\mu\rightarrow \lambda}\frac{(n-1)!}{\prod h_{\mu}(i,j)},\sum_{\mu\rightarrow \lambda}\frac{\prod h_{\lambda}(i,j)}{\prod h_{\mu}(i,j)}=nhλ(i,j)n!=μλhμ(i,j)(n1)!,μλhμ(i,j)hλ(i,j)=n
    我们考虑需要重新计算的点,首先是只有插入点那行那列的点
    接着注意到一些点是可以约去的:
    在这里插入图片描述
    比如说这个图中,绿色的 ∏hλ(i,j)\prod h_{\lambda}(i,j)hλ(i,j) 等于蓝色的 ∏hμ(i,j)\prod h_{\mu}(i,j)hμ(i,j)(红色的是需要重新计算的点)
    在这里插入图片描述
    即算上 ∏(i,j)∈Bluehλ(i,j)∏(i,j)∈Greenhμ(i,j)\frac{\prod_{(i,j)\in Blue}h_{\lambda}(i,j)}{\prod_{(i,j)\in Green}h_{\mu}(i,j)}(i,j)Greenhμ(i,j)(i,j)Bluehλ(i,j),红色的为边角位
    我们定义 ct(i,j)=i−jct(i,j)=i-jct(i,j)=ijA(i,j)A(i,j)A(i,j)(i,j)(i,j)(i,j) 一直往下的点,B(i,j)B(i,j)B(i,j)(i,j)(i,j)(i,j) 一直往右的点
    那么 h(i,j)=ct(A(i,j))−ct(B(i,j))+1h(i,j)=ct(A(i,j))-ct(B(i,j))+1h(i,j)=ct(A(i,j))ct(B(i,j))+1
    我们设边角位的坐标为 (ai,bi)(a_i,b_i)(ai,bi),然后将需要用到的点画出来,对一些特殊的点进行编号
    在这里插入图片描述
    其中 xi=(ai,bi),yi=(ai,bi+1)x_i=(a_i,b_i),y_i=(a_i,b_{i+1})xi=(ai,bi),yi=(ai,bi+1)
    那么只需计算 hλ(aj+1,bi),0≤j<ih_{\lambda}(a_j+1,b_i),0\le j<ihλ(aj+1,bi),0j<i(设插入的点是 xix_ixi),这个等于 (xi−yj)(x_i-y_j)(xiyj)
    以及 hμ(aj,bi),1≤j<ih_{\mu}(a_j,b_i),1\le j<ihμ(aj,bi),1j<i,这个等于 (xi−xj)(x_i-x_j)(xixj)
    后面的还有 hλ(ai,bj+1)h_{\lambda}(a_i,b_j+1)hλ(ai,bj+1),这个等于 (yj−xi)(y_j-x_i)(yjxi),以及 hμ(ai,bj)=(xj−xi)h_{\mu}(a_i,b_j)=(x_j-x_i)hμ(ai,bj)=(xjxi)
    所以 (不枚举 μ\muμ,枚举插入的是哪一行的)
    ∑μ→λ∏hλ(i,j)∏hμ(i,j)=−∑i=1m∏j=0m(xi−yj)∏j=1,j≠im(xi−xj)\sum_{\mu\rightarrow \lambda}\frac{\prod h_{\lambda}(i,j)}{\prod h_{\mu}(i,j)}=-\sum_{i=1}^m\frac{\prod_{j=0}^m(x_i-y_j)}{\prod_{j=1,j\neq i}^m(x_i-x_j)}μλhμ(i,j)hλ(i,j)=i=1mj=1,j=im(xixj)j=0m(xiyj)
    接着(∑xi=∑i=1mai−bi=∑i=0mai−∑i=1m+1bi=∑yi\sum x_i=\sum_{i=1}^m a_i-b_i=\sum_{i=0}^ma_i-\sum_{i=1}^{m+1}b_i=\sum y_ixi=i=1maibi=i=0maii=1m+1bi=yi
    在这里插入图片描述
    在这里插入图片描述
    这个算的就是杨表的大小
  • 可以用来做 LISLISLIS 计数,枚举 λ\lambdaλ 的划分就可以做到 n2p(n)n^2p(n)n2p(n)
  • 钩子公式的另一个形式
    fλ=n!∏hλ(i,j)=n!∏i<j(λi−λj+j−i)(λi+m−i)!f_{\lambda}=\frac{n!}{\prod h_{\lambda}(i,j)}=n!\frac{\prod_{i<j}(\lambda_i-\lambda_j+j-i)}{(\lambda_i+m-i)!}fλ=hλ(i,j)n!=n!(λi+mi)!i<j(λiλj+ji)
    考虑一行的 h(i,j)h(i,j)h(i,j) 可以去到 [1,(λi+m−i)][1,(\lambda_i+m-i)][1,(λi+mi)],将不合法的去掉即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值