杨表学习笔记

本文参考 袁方舟 《浅谈杨氏矩阵在信息学竞赛中的应用》

杨表

一.定义

杨表(Young tableaux)又称杨氏矩阵。

设有一个 n 的整数拆分 λ=(λ1,λ2,,λm),i=1mλi=n,满足 λiλi+1。称为 λn

杨图:一个形状为 λ 的杨图是一个表格,,第 i 行有 λi 个方格,分别为 (i,1),(i,2),,(i,λi), 与 Ferrers 图类似。

标准杨表:讲 1,2,,n 的数填入杨图,满足每行每列元素单调递增的图案,例如:

[1  4  7  82  5  10  3  9        6            ]

半标准杨表:将杨图填入数字,满足每行单调不降,每列单调递增的方案

二.杨表的插入和删除

1.RSK算法

当插入一个数 x 时,从第一行开始找第一个大于 x 的数。若不存在则插入末尾并退出;否则设该数为 y, 交换 x,y, 并对下一列继续操作。

正确性显然,代码也非常简单。

对于删除,我们只希望将处在边界 (x,y)(一个位置 (x,y) 被认为是边界,当且仅当 (x+1,y)(x,y+1) 都没有数)删除,可以看做插入操作的逆操作。

删除一个处在 i 行位置的 x 时,当 i=1 直接退出;否则,找到上一行最大的小于 x 的数 y, 交换 x,y, 并移步至上一行。

容易发现,当最后一次插入的位置为 (x,y) 时,若我们删除 (x,y),则杨表还原为插入前的模样。

2.记录表

对于排列 pi 而言,设当前插入位置为 (x,y),定义 Ppi 顺序插入得到的杨表,Q 为在 (x,y) 插入对应下标 i 得到的杨表,称为记录表,并维持 QP 的形状相同。

例如:pi=[1,5,3,2,6,7,4]P=[1  2  4  73  6        5            ]Q=[1  2  5  63  7        4            ].

定理 2.1(Robinson-Schensted correspondence):

一个 1 到 n 的排列 pi 与一对形状相同的标准杨表形成双射,也就是说,设 fλ 为形状为 λ 的填数方案,有:

λnfλ2=n!

Proof:对于一个排列 pi,有唯一对应的 PQ。反过来,给定杨表 P,Q,通过在 P 中不断删去 Q 中最大的元素(为 pi 的最后一个元素),唯一对应一个排列。

三.杨表与对称矩阵

一个大小为 n×m 的矩阵 A 可以看做若干个数对 (i,j),其中 (i,j) 出现了 Ai,j 次。

定义数对之间的比较为 (a,b)(c,d) 当且仅当 a<c(a=cbd)

那么一个矩阵可以看做若干个排序后的数对的排列,例如:

A=[0  1  00  0  21  1  0][1  2  2  2  32  3  3  1  2]

定理 3.1:一组 (u1,v1)(u2,v2)(uk,vk) 的序列对与一对相同形状的半标准杨表一一对应,此时的 P 为对第二行 vi 进行操作得到的杨表,Q 为记录下的 ui

例如:[1  2  2  2  3 2  3  3  1  2]P=[1  2  3 2  3    ]    Q=[1  2  2 3  3    ]

进一步观察,我们可以得到:

按如下操作将序列对分成若干组:初始包含 u1,v1(当前的),设当前长度为 m,若 vi<vm 则加入 i 。依次操作得到的集合记作 Ai。然后在原数组中删除 Ai

则杨表 P 的第一行第 i 个元素为 Ai,1,杨表 Q 的第一行第 i 个元素为 Ai,sizi

定理 3.2:设 X=[u1  u2ukv1  v2vk],X1=[vi1  vi2vikui1  ui2uik],则 (PX,QX)=(QX1,PX1)

定理 3.3:一个 n×n 的对称矩阵 M 与一个半标准的 PM 一一对应。

[0  1  0  0  01  0  0  2  00  0  0  0  00  2  0  0  00  0  0  0  1]X=[1  2  2  2  4  4  52  1  4  4  2  2  5]PX=QX=[1  2  2  52  4  4    ]

Proof:由于 M 为对称矩阵,因此 XM=XMT

定理 3.4 定义一个 n×n 矩阵 Mtr(M)=i=1nMi,i。则若 M 为对称矩阵,M 对应的半标准杨表 PM 中长度为奇数的列数 =tr(M)

对合排列

如果一个矩阵每一行每一列都恰好有一个数且和为 1,那么这个矩阵就是一个排列。这样一个矩阵对应的杨表为标准杨表。

若一个 1 到 n 的排列 pi 满足所有置换长度 2,则称 pi 为一个对合排列。

一个对合排列 pi, 交换 pippi 后排列不变。可以看做 M=MT

定理 3.4 :大小为 n 的标准杨表个数与长度为 n 的对合排列数形成双射。

该定理给出了大小为 n 的标准杨表的递推公式:fn=fn1+(n1)fn2

四.杨表与 LIS

LIS(Longest Increasing Subsequence)为最长上升子序列。

回顾杨表插入的过程,我们发现,杨表的第一行就是 LIS 长度(当然对应位置的值不一定相同)。

若需要求 k 个不相交的 LIS,即是杨表前 k 行的长度。

例:

[CTSC2017]最长上升子序列

根据 Dilworth 定理,最小链覆盖等于最长反链,故 LIS 不超过 k 的子序列可以看做不超过 k 个 LDS 序列的最长长度。

直接暴力插入元素是 O(n2logn) 的,考虑优化。

我们考察将一个排列顺序加入和逆序加入形成的杨表,例如 [2,4,1,5,3] 为:[1  3  52  4    ][1  23  45    ],会发现它们互为共轭关系。

对于杨表中的一个元素 (x,y),显然 x,y 至少有一者 n。因此,我们考虑只维护前 n 的杨表。对于 l>n 的杨表,我们维护其转置,也就是若在 (x,y) 插入元素(y>n),就把第 y 行元素 + 1。

因此维护两个杨表即可,查询可以用树状数组维护。

时间复杂度 O(nnlogn+qlogn)

五.杨表钩子公式

对于一个杨图 λ 而言,一个位置 (x,y) 的钩子(hook)等于其右边和下边的元素个数 + 1,记做 hλ(x,y)

由于该函数的计数区域类似一个钩子,所以称为钩子公式。

定理 5.1(钩子公式):

fλ=n!hλ(i,j)=n!1i<jm(λiiλj+j)i=1m(λi+mi)!

可以看做有 1hλ(x,y) 的概率选出的最小数为 (x,y), 把所有位置的概率相乘就是答案。

例:[BJWC2018]最长上升子序列

由于一个排列的 LIS 长度为杨表第一行长度,我们拆分数枚举可能的杨表形状 λn,根据钩子公式算出排列个数的平方就是答案。

一个很有用的事实是 :拆分数 p(n)14n3exp(π2n3)

本文作者:henrici3106

本文链接:https://www.cnblogs.com/henrici3106/p/16710990.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   henrici3106  阅读(380)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.