杨表的 zhicheng 宝典选抄
还没写完,也没排版,目前只是个记录东西在这里的地方。
注:这里提及的杨表从左上到右下是递增的。
两包含关系的杨表(图形)之差得到斜杨表。
斜杨表 \(\lambda\) 的内凹槽 \(c\) 是满足这样性质的点:
\(c\not\in \lambda,\exists c'\in \lambda ,c\le c'\),且 \(\lambda\cup \{c\}\) 也是斜杨表。
Jeu de taquin 算法把斜杨表 \(\lambda\) 变为一般的杨表,其过程为:
- 选择一个位置 \(c\) 使得 \(\forall c'\in \lambda,c\le c'\)。
- 直到 \(c\in \lambda\),做以下过程:
- 找到任意一个内凹槽 \(x\),在斜杨表上每次交换 \(x\) 和 \(x\) 右侧/下侧中存在格子且数更小的位置,并把 \(x\) 置为新空出来的位置,直到不能交换。
神秘结论:Jeu de taquin 算法生成的一般杨表和每次内凹槽 \(x\) 的选取无关。
Jeu de taquin 对排列的作用是把排列 \(\pi_{1:n}\) 从左下排到右上,后一个在前一个的右上角。
还有结论:RSK 插入和 Jeu de taquin 等价(证明考虑 JDT 是可以增量的,而归纳证明时可以去除最大值。)
RS-corresbonding:考虑 \((JDT(\pi),JDT(\pi^{-1}))\),这样构成的(图形相同的)的杨表的对,这和排列 \(\pi\) 是双射(和 RSK 那个记录表是一个原理)。这也得到了一个另外的结果:
这给出了杨表计数的一个小方法。
计数最多三行杨表。两行是容易通过考虑最小值计数的(ARC068D 当然也可以通过 RS 计数)。
考虑斜杨表 \(\lambda =(n-k,k,k)-(k,0,0)\),\(f_{\lambda}\) 根据反射容斥是 \(\binom n{2k}C_k\)。
神秘结论:对 \(\lambda\) 应用 JDT 算法得到了 \((n-k,k,k)-(k,0,0)\) 到三行杨表的双射(似乎可以归纳),因此对上式 \(k\) 求和即可。
一个另外的事情是这也恰好是 Motzkin 路径计数的结果。存在这个双射但我没有看。
还有更神秘的结果:最多四行的杨表是 \(C_{\lfloor \frac{n+1}2\rfloor}C_{\rceil \frac{n+1}2\rceil}\),五行是
,,,
进入钩长公式环节。
设 \(\lambda =\{\lambda_1,\lambda_2,\dots \lambda_t\},\sum \lambda_i=n\),欲计算 \(f^{\lambda}\)。
有三种形式:
(第二个)The story of its discovery is quite amazing : Frame was led to conjecture the formula while discussing the work of Staal, one of Robinson’s students, during Robinson’s visit to him in May 1953. Robinson could not believe, at first, that such a simple formula exists, but became convinced after trying some examples, and together they proved it. A few days later, Robinson gave a lecture followed by a presentation of the new result by Frame. Thrall, who was in the audience, was very surprised because he had just proved the same result on the same day!
证明这些公式等价是不困难的(?)。
描述一下证明的思路(钩长公式有不少证明):
一个比较芬的归纳证明:
直接证明斜杨表的行列式公式:
首先枚举最大值 \(n\) 在哪个行的最右边,然后显然这对一行的影响是行内位置 \((i,j)\) 乘上 \(\lambda_i-i-\mu_j+j\)。然后通过拉普拉斯展开规避对于改变行的行列式计算!!
一个在其他博客里面较多提到的概率证明(没有那么芬的归纳):
考虑一个杨表填数的随机过程:
每次随机选择一个未被删除的格子,然后随机跳到其右侧或下侧的一个格子处直到跳到某个右下角。此时把这个格子填上最大值,删去这个格子。
欲证明:得到任一杨表的概率是
对 \(n\) 归纳,只需证明新生成某右下角 \((a,b)\) 的概率是
这就是在计算过程得到的跳跃序列!
还有一个双射证明。
钩长公式等价于
左式可以看为杨表中任意填入 \(1\sim n\),不在意大小关系的方案数;右式是一个符合条件的方案和一个把每个位置映射到他的勾上某个位置的函数的二元组。
具体的,记任意填入的集合是 \(YT(\lambda)\)。映射函数 \(p(c)\) 为 \(0\),当映射到自己;为 \(x>0\),当映射到右边距离为 \(x\) 的元素,为 \(x<0\),当映射到下面距离为 \(x\) 的元素。记 \(SPT(\lambda)\) 是把 \(\lambda\) 符合大小顺序填入成为 \(T\),再分配映射 \(P\) 构成的二元组 \((T,P)\) 集合。现在构造 \(YT(\lambda)\) 和 \(SPT(\lambda)\) 的双射。
Franzblau-Zeilberger 算法:依次把 \(R\in YT(\lambda)\) 从左到右每一列插入 \((T,P)\),重点在插入过程。
初始把列上每个元素按行的顺序(此时可能不符合列的顺序)插入,并把新的映射 \(d\) 在映射表左边开一列,映射到新插入的位置上。
调整列。找到字典序最小的 \((i,j)\) 满足 \(T(i,j)>T(i-1,j)\),把 \((i,j)\) 和上一行映射位置的交换并调整使得满足行顺序。调整映射,把 \(i-1\) 行映射改为 \(-1\),如果 \(d_i=j-1\);改为 \(d_k\),当 \(0\le d_k \neq j-1\);改为 \(-(d_k+1)\),当 \(d_k<0\)。
把 \(d_i\) 改为交换下来元素的位置。
其逆是删除列算法(因为是双射),为了篇幅这里就不写出了(但是可以看出这个过程是可逆的)。