杨表学习笔记
本文参考 袁方舟 《浅谈杨氏矩阵在信息学竞赛中的应用》
杨表
一.定义
杨表(Young tableaux)又称杨氏矩阵。
设有一个 的整数拆分 ,满足 。称为 。
杨图:一个形状为 的杨图是一个表格,,第 行有 个方格,分别为 , 与 Ferrers 图类似。
标准杨表:讲 的数填入杨图,满足每行每列元素单调递增的图案,例如:
半标准杨表:将杨图填入数字,满足每行单调不降,每列单调递增的方案
二.杨表的插入和删除
1.RSK算法
当插入一个数 时,从第一行开始找第一个大于 的数。若不存在则插入末尾并退出;否则设该数为 , 交换 , 并对下一列继续操作。
正确性显然,代码也非常简单。
对于删除,我们只希望将处在边界 (一个位置 被认为是边界,当且仅当 和 都没有数)删除,可以看做插入操作的逆操作。
删除一个处在 行位置的 时,当 直接退出;否则,找到上一行最大的小于 的数 , 交换 , 并移步至上一行。
容易发现,当最后一次插入的位置为 时,若我们删除 ,则杨表还原为插入前的模样。
2.记录表
对于排列 而言,设当前插入位置为 ,定义 为 顺序插入得到的杨表, 为在 插入对应下标 得到的杨表,称为记录表,并维持 和 的形状相同。
例如:,,.
定理 2.1(Robinson-Schensted correspondence):
一个 1 到 的排列 与一对形状相同的标准杨表形成双射,也就是说,设 为形状为 的填数方案,有:
Proof:对于一个排列 ,有唯一对应的 和 。反过来,给定杨表 ,通过在 中不断删去 中最大的元素(为 的最后一个元素),唯一对应一个排列。
三.杨表与对称矩阵
一个大小为 的矩阵 可以看做若干个数对 ,其中 出现了 次。
定义数对之间的比较为 当且仅当 。
那么一个矩阵可以看做若干个排序后的数对的排列,例如:
。
定理 3.1:一组 的序列对与一对相同形状的半标准杨表一一对应,此时的 为对第二行 进行操作得到的杨表, 为记录下的 。
例如:
进一步观察,我们可以得到:
按如下操作将序列对分成若干组:初始包含 (当前的),设当前长度为 ,若 则加入 。依次操作得到的集合记作 。然后在原数组中删除 。
则杨表 的第一行第 个元素为 ,杨表 的第一行第 个元素为 。
定理 3.2:设 ,则 。
定理 3.3:一个 的对称矩阵 与一个半标准的 一一对应。
Proof:由于 为对称矩阵,因此 。
定理 3.4 定义一个 矩阵 的迹为 。则若 为对称矩阵, 对应的半标准杨表 中长度为奇数的列数 。
对合排列
如果一个矩阵每一行每一列都恰好有一个数且和为 1,那么这个矩阵就是一个排列。这样一个矩阵对应的杨表为标准杨表。
若一个 1 到 的排列 满足所有置换长度 ,则称 为一个对合排列。
一个对合排列 , 交换 和 后排列不变。可以看做 。
定理 3.4 :大小为 的标准杨表个数与长度为 的对合排列数形成双射。
该定理给出了大小为 的标准杨表的递推公式:。
四.杨表与 LIS
LIS(Longest Increasing Subsequence)为最长上升子序列。
回顾杨表插入的过程,我们发现,杨表的第一行就是 LIS 长度(当然对应位置的值不一定相同)。
若需要求 个不相交的 LIS,即是杨表前 行的长度。
例:
[CTSC2017]最长上升子序列
根据 Dilworth 定理,最小链覆盖等于最长反链,故 LIS 不超过 的子序列可以看做不超过 个 LDS 序列的最长长度。
直接暴力插入元素是 的,考虑优化。
我们考察将一个排列顺序加入和逆序加入形成的杨表,例如 为: 和 ,会发现它们互为共轭关系。
对于杨表中的一个元素 ,显然 至少有一者 。因此,我们考虑只维护前 的杨表。对于 的杨表,我们维护其转置,也就是若在 插入元素(),就把第 行元素 + 1。
因此维护两个杨表即可,查询可以用树状数组维护。
时间复杂度 。
五.杨表钩子公式
对于一个杨图 而言,一个位置 的钩子(hook)等于其右边和下边的元素个数 + 1,记做 。
由于该函数的计数区域类似一个钩子,所以称为钩子公式。
定理 5.1(钩子公式):
可以看做有 的概率选出的最小数为 , 把所有位置的概率相乘就是答案。
例:[BJWC2018]最长上升子序列
由于一个排列的 LIS 长度为杨表第一行长度,我们拆分数枚举可能的杨表形状 ,根据钩子公式算出排列个数的平方就是答案。
一个很有用的事实是 :拆分数 ,
本文作者:henrici3106
本文链接:https://www.cnblogs.com/henrici3106/p/16710990.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步