杨氏矩阵(Young tableau),又名杨表,是一种常用于表示论和舒伯特演算中的组合对象。
杨表是一种特殊的矩阵。它便于对称群和一般线性群的群表示和性质研究。杨表由剑桥大学数学家阿尔弗雷德·杨(Alfred Young)于 1900 年首次提出,于 1903 年被德国数学家弗罗贝尼乌斯(Ferdinand Georg Frobenius)应用于对称群的研究。
[!NOTE] 注释
表示论(Representation theory)是数学的一个分支。它通过将元素表示为向量空间的线性变换来研究抽象代数结构。舒伯特演算(Schubert calculus)是代数几何的一个分支,于 19 世纪由赫尔曼·舒伯特为了解决射影几何的计数问题而引入。
杨图(Young diagram,使用点表示时又称 Ferrers 图)是一个有限的框或单元格集合,左对齐排列,行长按非递增顺序排列。如果把杨图每行的方格数列出,我们得到了一个非负整数
杨图之间的包含关系定义了整数分拆上的一个偏序关系,此关系拥有格的结构,被称为 杨格(Young's lattice)。如果把杨图各列的方格数列出,则会得到整数分拆
杨图每个方格的位置由分别代表 行数 与 列数 的两个座标点决定。列的顺序由左向右,行的顺序则按方格数的由多向少的方向。此处需要注意,根据习惯不同存在着两种不同的杨图画法:第一个将方格数较少的行排在方格数较多的行的下方,第二种画法将各行由大到小一层一层往上叠。由于前一种画法主要由英语国家使用,而后者通常被法语国家使用,习惯上我们分别称它们为英式画法和法式画法。
以下表格中分别为整数分拆
杨表(Young tableau)是通过用取自某个字母表的符号填充杨氏图的框来获得的,这通常需要是一个全序集和。填入的元素写作
杨表最初应用于对称群的表示理论时,允许在杨图的
[!NOTE] 注释
对和数(involution number/telephone number)是在数学中是一个整数序列,用来计算
$n$ 条电话线中每条线路最多可以连接到另一条线路时可以相互连接的方法个数。它还可以用来描述完全图$n$ 个顶点上的匹配数,$n$ 个对合元素的排列数,Hermite 多项式系数的绝对值之和,含有$n$ 个格子的标准杨表的个数,以及不可约对称群的度数之和。
在其他应用中,杨图也可以被填入相同的数字。若填法的同列数字严格递增,且同行数字单调递增,则该杨表被称为是 半标准的(Semistandard Young Tableaux, 有时称为列严格)。杨表中个数字出现的次数记录下来得到的序列被视为杨表的 权重。因此,标准杨表的权重必然是
排列的性质可以由杨表直观地表现出来。RSK 插入算法 就提供了一个将杨表和排列联系起来的途径。它由 Robinson, Schensted 和 Knuth 提出。
令
- 在当前行中找到最小的比
$x$ 大的数$y$ 。 - 如果找到了,用
$x$ 去替换$y$ ,移到下一行,令$x \leftarrow y$ 重复操作 1。 - 如果找不到,就把
$x$ 放在该行末尾并退出。记$x$ 在第$s$ 行第$t$ 列,$(s, t)$ 必定是一个边角。一个格子$(s, t)$ 是边角当且仅当$(s + 1, t)$ 和$(s, t + 1)$ 都不存在格子。
例如,将
非完全严格标准的杨表有许多变体(Variations)。例如行严格杨表要求同行数字严格递增,且同列数字单调递增,即列严格杨表的共轭。此外,在平面分拆(plane partitions)理论中,习惯上会将上述的定义中的递增改为递减。其他变体例如带状杨表,会先将一些方块打包成群,然后要求各群的方块必须填入相同数字。
给定两个杨图
例如,下图为整数分拆
同理,若满足同一列中的数字严格递增,且同一行中的数字单调递增,则该斜杨表被称作 半标准斜杨表;若半标准斜杨表满足各方格不重复的填入数字
杨表常用于在组合学、表示理论和代数几何中,用各种不同计算杨表个数的方法得到舒尔函数的定义及相关的恒等式。在信息学竞赛中,常有考察杨表钩长公式的题目。
给定一个共有
对于杨表中的一个方格
如果用
$$ \dim \pi {\lambda}={\frac {n!}{\prod{{x\in Y(\lambda)}}{\mathrm {hook}}(x)}}. $$
所以对于整数分拆
种方法。
对于杨表
-
$P_{X}$ 中第一行的长度即为排列$X$ 的 最长上升子序列(LIS) 长度。注意,$P$ 的第一行并不一定是 LIS 本身,所以不能直接利用杨表性质解决“LIS 划分”之类的问题。 -
对于一个排列
$X$ 和它产生的杨表$P_{X}$ ,若$X^R$ 是$X$ 的翻转,那么$X^R$ 产生的杨表$P_{X^R}$ 即为$P_{X}$ 交换行列得到。例如,对于排列
$X = 1, 5, 7, 2, 8, 6, 3, 4$ 和$X^R = 4, 3, 6, 8, 2, 7, 5, 1$ , 我们可得到如下杨表$P_{X}$ : -
杨表
$P_{X}$ 中的第一列长度即为排列$X$ 的 最长下降子序列(LDS) 长度。
定义长度不超过
对于一个排列
所以,最长
[!NOTE] CTSC2017 最长上升子序列
有一个长为
$n$ 的数列$b$ 。对于序列$B_{m} = (b_{1}, b_{2},\ldots, b_{m})$ ,设$C$ 是$B_{m}$ 的子序列,且$C$ 的最长上升子序列的长度不超过$k$ ,询问$C$ 的长度最大值。
[!TIP] 解题思路
多个询问考虑使用扫描线的方法。这样我们就需要维护每个前缀的杨表。如果使用以上结论,可以发现问题变成了如何快速维护杨表前
$k$ 列的长度之和。如果直接维护,复杂度是$O(n^2 log n)$ 的不能接受。考虑维护前$\sqrt{n}$ 列和前$\sqrt{n}$ 行。可以发现,杨表一定不会完全覆盖这个
$W \times H$ 的矩形。如果$K \leq W$ ,那么可以直接得答案;如果$K > W$ ,那么大于$W$ 的部分一定在$H$ 行内。所以可以考虑如何同时维护前$\sqrt{n}$ 列和前$\sqrt{n}$ 行。将这个排列翻转一下就可以得到杨表的翻转,所以只需要再同时维护$-A_{i}$ 即可,复杂度为$O(n \sqrt{n} log n)$ 。
[!NOTE] BJWC2018 最长上升子序列
现在有一个长度为
$n$ 的随机排列,求它的最长上升子序列长度的期望。
[!NOTE] CF1268B 杨氏多米诺骨牌
给定一个具有
$n$ 列长度$a_{1} ,a_{2},\ldots,a_{n}$ $(a_{1} \geq a_{2} \geq \ldots \geq a_{n} \geq 1)$ 的直方图。$a=[3,2,2,2,1]$ 的杨图。找到可以在此直方图中绘制的最大数量的非重叠多米诺骨牌($1 \times 2$ 或$2 \times 1$ 矩形)。
- [1]Young Tableau - from Wolfram MathWorld
- [2]Young tableau - Wikipedia
- [3]Hook length formula - Wikipedia
- [4]袁方舟,《浅谈杨氏矩阵在信息学竞赛中的应用》IOI2019, 中国国家候选队论文集,202-229