计数组合学7.11(RSK算法)
7.11 RSK算法
在对称函数理论中,有一个非凡的组合对应关系,称为RSK算法。(关于缩写RSK的含义以及其他名称,请参阅本章末尾的注释。)这里我们仅介绍RSK算法的最基本性质,从而能够给出舒尔函数一些基本性质的组合证明。当然,这些结果也可以通过纯代数方法证明,但在枚举组合学的教材中,我们更倾向于组合证明。
RSK算法的基本操作是将一个正整数 kkk 行插入到一个非斜的SSYT P=(Pij)P = (P_{ij})P=(Pij) 中,记作 P←kP \leftarrow kP←k。操作 P←kP \leftarrow kP←k 的定义如下:设 rrr 是满足 P1,r−1≤kP_{1,r-1} \leq kP1,r−1≤k 的最大整数(如果 P11>kP_{11} > kP11>k,则令 r=1r = 1r=1)。如果 P1rP_{1r}P1r 不存在(即 PPP 有 r−1r-1r−1 列),则直接将 kkk 放在第一行的末尾。插入过程停止,得到的SSYT即为 P←kP \leftarrow kP←k。另一方面,如果 PPP 至少有 rrr 列,即 P1rP_{1r}P1r 存在,则将 P1rP_{1r}P1r 替换为 kkk。被替换的元素 P1r:=k′P_{1r} := k'P1r:=k′ 会被“挤入”第二行,即按照上述插入规则将 k′k'k′ 插入到 PPP 的第二行中。继续这一过程,直到某个元素被插入到某一行的末尾(可能是新行的第一个元素)。最终得到的数组即为 P←kP \leftarrow kP←k。
7.11.1 示例
设
则 P←4P \leftarrow 4P←4 的结果如下所示,其中每一行中被插入的元素(通过挤入或最终插入到第四行)用粗体表示。因此,4 挤出了 5,5 挤出了 6,6 挤出了 8,而 8 被插入到某一行的末尾。这些粗体元素的位置集合称为插入路径 I(P←4)I(P \leftarrow 4)I(P←4)。对于此例,有 I(P←4)={(1,5),(2,4),(3,4),(4,3)}I(P \leftarrow 4) = \{(1,5),(2,4),(3,4),(4,3)\}I(P←4)={(1,5),(2,4),(3,4),(4,3)}。
插入路径有两个技术性质,对于证明RSK算法的性质非常有用。
7.11.2 引理
(a) 当我们将 kkk 插入到一个SSYT PPP 中时,插入路径会向左移动。更准确地说,如果 (r,s),(r+1,t)∈I(P←k)(r,s),(r+1,t) \in I(P \gets k)(r,s),(r+1,t)∈I(P←k),则 t≤st \leq st≤s。
(b) 设 PPP 是一个SSYT,且 j≤kj \leq kj≤k。则 I(P←j)I(P \gets j)I(P←j) 严格位于 I((P←j)←k)I((P \gets j) \gets k)I((P←j)←k) 的左侧。更准确地说,如果 (r,s)∈I(P←j)(r,s) \in I(P \gets j)(r,s)∈I(P←j) 且 (r,t)∈I((P←j)←k)(r,t) \in I((P \gets j) \gets k)(r,t)∈I((P←j)←k),则 s<ts < ts<t。此外,I((P←j)←k)I((P \gets j) \gets k)I((P←j)←k) 不会延伸到 I(P←j)I(P \gets j)I(P←j) 的底部之下。等价地,
#I((P←j)←k)≤#I(P←j). \#I((P \gets j) \gets k) \leq \#I(P \gets j). #I((P←j)←k)≤#I(P←j).
证明:
(a) 假设 (r,s)∈I(P←k)(r,s) \in I(P \gets k)(r,s)∈I(P←k)。由于 PPP 的列严格递增,要么 Pr+1,s>PrsP_{r+1,s} > P_{rs}Pr+1,s>Prs,要么 PPP 中不存在 (r+1,s)(r+1,s)(r+1,s) 位置的元素。在第一种情况下,PrsP_{rs}Prs 不能被挤到第 sss 列的右侧,否则会违反 P←kP \gets kP←k 的行弱递增性质,因为 PrsP_{rs}Prs 会与 Pr+1,sP_{r+1,s}Pr+1,s 在同一行中位于其右侧。第二种情况是显然的,因为否则会在第 r+1r+1r+1 行出现空缺。因此,(a) 得证。
(b) 由于一个数只能挤出一个更大的数,因此 kkk 会被插入到 P←jP \gets jP←j 的第一行中 jjj 的严格右侧。由于 PPP 的第一行是弱递增的,jjj 挤出的元素不会大于 kkk 挤出的元素。因此,通过归纳法可知,I(P←j)I(P \gets j)I(P←j) 严格位于 I((P←j)←k)I((P \gets j) \gets k)I((P←j)←k) 的左侧。I(P←j)I(P \gets j)I(P←j) 的底部元素 bbb 是被插入到其行末尾的。根据已证明的内容,如果 I((P←j)←k)I((P \gets j) \gets k)I((P←j)←k) 在这一行有一个元素 ccc,则它位于 bbb 的右侧。因此,ccc 被插入到行的末尾,插入过程终止。由此可见,I((P←j)←k)I((P \gets j) \gets k)I((P←j)←k) 永远不会延伸到 I(P←j)I(P \gets j)I(P←j) 的底部之下。
7.11.3 推论
如果 PPP 是一个SSYT且 k≥1k \geq 1k≥1,则 P←kP \gets kP←k 也是一个SSYT。
证明:显然,P←kP \gets kP←k 的行是弱递增的。现在,一个数 aaa 只能挤出一个更大的数 bbb。根据引理7.11.2(a),bbb 在被挤出时不会向右移动。因此,bbb 被插入到一个严格小于 bbb 的数下方,所以 P←kP \gets kP←k 仍然是一个SSYT。
现在设 A=(aij)i,j≥1A = (a_{ij})_{i,j \geq 1}A=(aij)i,j≥1 是一个有限支撑的 N\mathbb{N}N-矩阵。我们可以将 AAA 视为无限矩阵,或者当 i>mi > mi>m 且 j>nj > nj>n 时 aij=0a_{ij} = 0aij=0 的 m×nm \times nm×n 矩阵。与 AAA 相关联的是一个广义排列或双线数组 wAw_AwA,定义为
wA=(i1i2i3⋯imj1j2j3⋯jm), w_A = \left( \begin{array}{cccc} i_1 & i_2 & i_3 & \cdots & i_m \\ j_1 & j_2 & j_3 & \cdots & j_m \end{array} \right), wA=(i1j1i2j2i3j3⋯⋯imjm),
其中 (a) i1≤i2≤⋯≤imi_1 \leq i_2 \leq \cdots \leq i_mi1≤i2≤⋯≤im,(b) 如果 ir=isi_r = i_sir=is 且 r≤sr \leq sr≤s,则 jr≤jsj_r \leq j_sjr≤js,以及 © 对于每一对 (i,j)(i,j)(i,j),恰好有 aija_{ij}aij 个 rrr 满足 (ir,jr)=(i,j)(i_r, j_r) = (i,j)(ir,jr)=(i,j)。容易看出,AAA 唯一确定一个满足 (a)-© 的双线数组 wAw_AwA,反之亦然。例如,如果
A=[102020110], A = \left[ \begin{array}{ccc} 1 & 0 & 2 \\ 0 & 2 & 0 \\ 1 & 1 & 0 \end{array} \right], A=101021200,
则对应的双线数组为
wA=(1112231332212). w_A = \left( \begin{array}{cccc} 1 & 1 & 1 & 2 & 2 & 3 \\ 1 & 3 & 3 & 2 & 2 & 1 & 2 \end{array} \right). wA=(1113132222312).
现在,我们与 AAA(或 wAw_AwA)关联一对形状相同的SSYT (P,Q)(P,Q)(P,Q),定义如下:设 wAw_AwA 由 (7.38) 给出。从 (P(0),Q(0))=(∅,∅)(P(0), Q(0)) = (\emptyset, \emptyset)(P(0),Q(0))=(∅,∅) 开始(其中 ∅\emptyset∅ 表示空SSYT)。如果 t<mt < mt<m 且 (P(t),Q(t))(P(t), Q(t))(P(t),Q(t)) 已定义,则定义
(a) P(t+1)=P(t)←jt+1P(t+1) = P(t) \gets j_{t+1}P(t+1)=P(t)←jt+1
(b) Q(t+1)Q(t+1)Q(t+1) 是通过插入 it+1i_{t+1}it+1(保持 Q(t)Q(t)Q(t) 的所有部分不变)使得 P(t+1)P(t+1)P(t+1) 和 Q(t+1)Q(t+1)Q(t+1) 具有相同的形状而得到的。
过程在 (P(m),Q(m))(P(m), Q(m))(P(m),Q(m)) 处结束,我们定义 (P,Q)=(P(m),Q(m))(P,Q) = (P(m), Q(m))(P,Q)=(P(m),Q(m))。我们将这种对应关系记作 A→RSK(P,Q)A \xrightarrow{\text{RSK}} (P,Q)ARSK(P,Q),并称之为RSK算法。我们称 PPP 为插入表,QQQ 为记录表。
7.11.4 示例
设 AAA 和 wAw_AwA 由 (7.39) 和 (7.40) 给出。SSYT (P(1),Q(1)),…,(P(7),Q(7))=(P,Q)(P(1), Q(1)), \ldots, (P(7), Q(7)) = (P,Q)(P(1),Q(1)),…,(P(7),Q(7))=(P,Q) 如下:
RSK算法的主要结果如下。
7.11.5 定理
RSK算法是有限支撑的 N\mathbb{N}N-矩阵 A=(aij)i,j≥1A = (a_{ij})_{i,j \geq 1}A=(aij)i,j≥1 与形状相同的有序SSYT对 (P,Q)(P,Q)(P,Q) 之间的双射。在这种对应关系中,
j 在 P 中出现的次数恰好为 ∑iaij 次 j \text{ 在 } P \text{ 中出现的次数恰好为 } \sum_i a_{ij} \text{ 次} j 在 P 中出现的次数恰好为 i∑aij 次
i 在 Q 中出现的次数恰好为 ∑jaij 次。 i \text{ 在 } Q \text{ 中出现的次数恰好为 } \sum_j a_{ij} \text{ 次。} i 在 Q 中出现的次数恰好为 j∑aij 次。
(后两个条件等价于 type(P)=col(A)\text{type}(P) = \text{col}(A)type(P)=col(A),type(Q)=row(A)\text{type}(Q) = \text{row}(A)type(Q)=row(A)。)
证明:根据推论7.11.3,PPP 是一个SSYT。显然,根据RSK算法的定义,PPP 和 QQQ 具有相同的形状,并且 (7.41) 和 (7.42) 成立。因此,我们必须证明以下内容:(a) QQQ 是一个SSYT,(b) RSK算法是一个双射,即给定 (P,Q)(P,Q)(P,Q),可以唯一恢复 AAA。
为了证明 QQQ 是一个SSYT,首先注意到 QQQ 的元素是按弱递增顺序插入的,因此 QQQ 的行和列是弱递增的。因此,我们必须证明 QQQ 的列是严格递增的,即 wAw_AwA 的顶行中两个相等的元素不会出现在 QQQ 的同一列中。但如果顶行中 ik=ik+1i_k = i_{k+1}ik=ik+1,则必须有 jk≤jk+1j_k \leq j_{k+1}jk≤jk+1。因此,根据引理7.11.2(b),jk+1j_{k+1}jk+1 的插入路径将始终严格位于 jkj_kjk 的插入路径的右侧,并且不会延伸到 jkj_kjk 的插入路径的底部之下。由此可见,两个插入路径的底部元素位于不同的列中,因此 QQQ 的列是严格递增的。
上述论证确立了RSK算法的一个重要性质:QQQ 中的相等元素是严格从左到右插入的。
剩下的任务是证明RSK算法是一个双射。给定 (P,Q)=(P(m),Q(m))(P,Q) = (P(m), Q(m))(P,Q)=(P(m),Q(m)),设 QrsQ_{rs}Qrs 是 QQQ 中最大元素的最右侧出现位置(其中 QrsQ_{rs}Qrs 是 QQQ 的第 rrr 行第 sss 列的元素)。由于 QQQ 中的相等元素是从左到右插入的,因此 Q(m−1)Q(m-1)Q(m−1) 是通过删除 QrsQ_{rs}Qrs 得到的 Q(m)Q(m)Q(m),并且 PrsP_{rs}Prs 是在将 jmj_mjm 插入到 P(m−1)P(m-1)P(m−1) 后被挤入位置的最后一个元素。然而,很容易反转插入过程:PrsP_{rs}Prs 必须是被 PPP 的第 r−1r-1r−1 行中最右侧小于 PrsP_{rs}Prs 的元素 Pr−1,tP_{r-1,t}Pr−1,t 挤出的。因此,从 PPP 中删除 PrsP_{rs}Prs,将 Pr−1,tP_{r-1,t}Pr−1,t 替换为 PrsP_{rs}Prs,然后继续将 PPP 的第 r−2r-2r−2 行中最右侧小于 Pr−1,tP_{r-1,t}Pr−1,t 的元素替换为 Pr−1,tP_{r-1,t}Pr−1,t,依此类推。最终,某个元素 jmj_mjm 会从 PPP 的第一行中被移除。这样,我们唯一地恢复了 (im,jm)(i_m, j_m)(im,jm) 和 (P(m−1),Q(m−1))(P(m-1), Q(m-1))(P(m−1),Q(m−1))。通过迭代此过程,我们可以恢复整个双线数组 wAw_AwA。因此,RSK算法是单射的。
为了证明满射性,我们需要证明将上述过程应用于任意一对形状相同的SSYT (P,Q)(P,Q)(P,Q) 总能得到一个有效的双线数组 wA=(i,j)w_A = (i,j)wA=(i,j)。显然 i1≤i2≤⋯≤imi_1 \leq i_2 \leq \cdots \leq i_mi1≤i2≤⋯≤im,因此我们需要证明如果 ik=ik+1i_k = i_{k+1}ik=ik+1,则 jk≤jk+1j_k \leq j_{k+1}jk≤jk+1。设 ik=Qrsi_k = Q_{rs}ik=Qrs 和 ik+1=Quvi_{k+1} = Q_{uv}ik+1=Quv,则 r≥ur \geq ur≥u 且 s≤vs \leq vs≤v。当我们开始对 PrsP_{rs}Prs 进行逆向挤入时,它位于其行 rrr 的末尾(m−um-um−u)。因此,当对 PuvP_{uv}Puv 进行逆向挤入时,其“逆向插入路径”在第 uuu 行严格位于第 vvv 列的左侧。因此,在第 uuu 行,PuvP_{uv}Puv 的逆向插入路径严格位于 PrsP_{rs}Prs 的逆向插入路径的左侧。通过简单的归纳论证(本质上是引理7.11.2(b)的“逆向”),PuvP_{uv}Puv 的整个逆向插入路径严格位于 PrsP_{rs}Prs 的逆向插入路径的左侧。特别地,在移除 ik+1i_{k+1}ik+1 之前,两个元素 jkj_kjk 和 jk+1j_{k+1}jk+1 出现在第一行中,且 jkj_kjk 位于 jk+1j_{k+1}jk+1 的左侧。因此,jk≤jk+1j_k \leq j_{k+1}jk≤jk+1,证毕。
在7.13节中,我们将给出RSK算法的另一种“几何”描述,这对于证明一些显著性质非常有用。这种几何描述仅在矩阵 AAA 是置换矩阵时定义,即一个 n×nn \times nn×n 的 (0,1)-矩阵,每行和每列恰好有一个1。在这种情况下,双线数组的顶行就是 12⋯n12 \cdots n12⋯n,而底行是 1,2,…,n1,2,\ldots,n1,2,…,n 的一个排列 www,我们可以将其与 AAA 视为同一。当RSK算法应用于置换矩阵 AAA(或排列 w∈Snw \in \mathfrak{S}_nw∈Sn)时,得到的表 PPP 和 QQQ 就是标准杨表(形状相同)。反之,如果 PPP 和 QQQ 是形状相同的SYT,则满足 A→RSK(P,Q)A \xrightarrow{\text{RSK}} (P,Q)ARSK(P,Q) 的矩阵 AAA 是一个置换矩阵。因此,RSK算法在对称群 Sn\mathfrak{S}_nSn 与形状为 λ⊢n\lambda \vdash nλ⊢n 的SYT对 (P,Q)(P,Q)(P,Q) 之间建立了双射。特别地,如果 fλf^\lambdafλ 表示形状为 λ\lambdaλ 的SYT的数量,则有基本恒等式
∑λ⊢n(fλ)2=n!.(7.43) \sum_{\lambda \vdash n} (f^\lambda)^2 = n!. \qquad(7.43)λ⊢n∑(fλ)2=n!.(7.43)
尽管置换矩阵是有限支撑 N\mathbb{N}N-矩阵的特殊情况,但实际上,任意 N\mathbb{N}N-矩阵 AAA 的RSK算法可以归结为置换矩阵的情况。具体来说,给定双线数组 wAw_AwA,假设长度为 nnn,将第一行替换为 1,2,…,n1,2,\ldots,n1,2,…,n,并将第二行替换为其标准化形式,如ECI第57页所定义。为了重申标准化的定义,假设 wAw_AwA 的第二行有 cic_ici 个 iii。然后将第二行中的1从左到右替换为 1,2,…,c11,2,\ldots,c_11,2,…,c1,接着将2从左到右替换为 c1+1,c1+2,…,c1+c2c_1 + 1, c_1 + 2, \ldots, c_1 + c_2c1+1,c1+2,…,c1+c2,依此类推,直到第二行变为 1,2,…,n1,2,\ldots,n1,2,…,n 的一个排列。将得到的双线数组记为 w~A\widetilde{w}_AwA。例如,如果
A=[201011130], A = \begin{bmatrix} 2 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 3 & 0 \end{bmatrix}, A=201013110,
则
wA=(1112233311323122), w_A = \begin{pmatrix} 1 & 1 & 1 & 2 & 2 & 3 & 3 & 3 \\ 1 & 1 & 3 & 2 & 3 & 1 & 2 & 2 \end{pmatrix}, wA=(1111132223313232),
而 wAw_AwA 被替换为
w~A=(123456789128493567). \widetilde{w}_A = \begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\ 1 & 2 & 8 & 4 & 9 & 3 & 5 & 6 & 7 \end{pmatrix}. wA=(112238445963758697).
7.11.6 引理
设 wA=(i1i2⋯inj1j2⋯jn)w_A = \begin{pmatrix} i_1 & i_2 & \cdots & i_n \\ j_1 & j_2 & \cdots & j_n \end{pmatrix}wA=(i1j1i2j2⋯⋯injn) 是一个双线数组,且 w~A=(12⋯nj~1j~2⋯j~n)\widetilde{w}_A = \begin{pmatrix} 1 & 2 & \cdots & n \\ \widetilde{j}_1 & \widetilde{j}_2 & \cdots & \widetilde{j}_n \end{pmatrix}wA=(1j12j2⋯⋯njn)。假设 w~A→RSK(P~,Q~)\widetilde{w}_A \xrightarrow{\text{RSK}} (\widetilde{P}, \widetilde{Q})wARSK(P,Q)。设 (P,Q)(P,Q)(P,Q) 是通过将 Q~\widetilde{Q}Q 中的 kkk 替换为 iki_kik,并将 P~\widetilde{P}P 中的 j~k\widetilde{j}_kjk 替换为 jkj_kjk 从 P~\widetilde{P}P 和 Q~\widetilde{Q}Q 得到的表。则 wA→RSK(P,Q)w_A \xrightarrow{\text{RSK}} (P,Q)wARSK(P,Q)。换句话说,操作 wA↦w~Aw_A \mapsto \widetilde{w}_AwA↦wA 与RSK算法“交换”。
证明:假设在RSK算法的某个阶段,当数字 jjj 被插入到某一行时,它位于该行的第 kkk 个位置。如果将这个数字 jjj 替换为一个更大的数字 j+ϵj + \epsilonj+ϵ,且小于该行中大于 jjj 的任何元素,则 j+ϵj + \epsilonj+ϵ 也会被插入到第 kkk 个位置。由此可见,对于元素 j1,j2,…,jnj_1, j_2, \ldots, j_nj1,j2,…,jn 的插入过程完全模仿了对于 j~1,j~2,…,j~n\widetilde{j}_1, \widetilde{j}_2, \ldots, \widetilde{j}_nj1,j2,…,jn 的插入过程,证毕。