IOI国家集训队2019论文集,目录: 钟子谦 - 《两类递推数列的性质和应用》 王修涵 - 《浅谈图模型上的随机游走问题》 杨骏昭 - 《“小水题”命题报告》 高嘉煊 - 《浅谈图的点着色问题》 戴 言 - 《浅谈格路计数相关问题》 李佳衡 - 《算法竞赛中一些数论问题的推广与高斯整数初探》 范致远 - 《“基础圆方树练习题”命题报告》 徐翊轩 - 《“整点计数”命题报告以及对高斯整数的若干研究》 张哲宇 - 《浅谈树上分治算法》 吴思扬 - 《“组合数求和”命题报告》 王思齐 - 《浅谈一类简洁数据结构》 陈孙立 - 《子串周期查询问题的相关算法及其应用》 吴作同 两关递推数列的性质和应用 福州第中学钟了谦 两类递推数列的性厉和应用 福州第三中学钟子谦 摘要 线性递推数列和整式递搾数列是数学中常见的两类递推数列,本文介绍了这两类递推 数列的定义、性质和有关算法,并展示了它们在信息学竞赛中的一些应用。 前言 线性递推数列被引入算法竞赛界凵经有至少互年,但是直没有得到特别广泛的普及 整式递推数列是线性递推数列的一个自然的拓展,近两年才被引入信息学竞赛。本文希望 能够系统介绍这两类数列的性质和在信息学竞赛中的用途,使读者在思考有关问题时有迹 可循 本文首先在第1节介绍了线性递推数列,接下来在第2节介绍了整式递推数列。对于 这两类数列,本文介绍了它们的定义、性质、有关算法和实际例题,对于线性递推数列本文 还介绍了些与线性代数相关的应用。 1线性递推数列 1.1定义 定义1.1.我们称长度有限的数列为有限数列,长度无限的数列为无限数列。 定义1.2.我们称形式幂级教F最高次项的次数为形式幂级数F的次数,记为deg(F) (可能为α)。特别地,我们定义零多项式的次数为负无穷大(-0)。 定义13.对于有限数列{a0,a1,a2…an-1},我们定义它的生成函数为多项式A(x) ∑=ax。对于无限数列{ao,a1,a2…},我们类似地定义它的生成函数为形式幂级数A(x) 定义1.4.对于无限效列{0,a1,u2…}和有限非空数列{ro,r1,r2…rm-n},若对于任意 卩≥m-1,有∑ank=0,则称数列r为数列a的线性递归式。若ro=1,我们称数 列r为数列a的线性递推式。我们称存在线性递推式的无限数列为线性递推数列 两关递推数列的性质和应用 福州第中学钟了谦 对于有限数列{a0,a1,a2…an-l和有限非空教列{ro,r1,r2…rm-1},类似地,若对于任 意m-1≤卩≤n-1,有∑四=an-k-0,则称数列r为数列a的线性递归式。若10-1 我们称数列r为数列a的线性递推式。 我们称这个线性递推式的阶数为它的长度减一,称数列a阶数最小的线性递推式为数 列a的最短线性递推式。 12基本性质和判定方法 在生成函数的观点下看线性递归式,我们有如下结论 定理11.对于无限数列{a,a1,a2…}和有限非空数列{ro,n1,r2…rm-1},设数列a和数列 r所对应的生成函数为A和R,数列r为数列a的线性递归式等价于存在次数不超过m-2 的多项式S满足AR+S=0。 对于有限数列{a0,a1,a2…an-1}和有限数列{r,r1,r2…Fm-1},设数列a和数列r所对 应的生成函数为A和R,数列厂为数列a的线性递归式等价于存在次数不超过m-2的多 项式S满足AR+S≡0(modx)。 证明.下面证明无限数列的情况,有限数列的情况也是类似的 对于k≥m-1,考察两侧x次项的系数,我们有[x(x)R(x)=∑mbra-=0。只 需要取适当的S使得低次项系数为0即可 接下来我们介绍儿种常见的判定线性递推数列的方法。 推论1.1.对于无限数列{a,a1,a2∵},设数列a所对应的生成函数为A,a为线性递推 数列当且仅当存在常敖项为1的多项式R和多项式S满足A=是。数列a的最短线性递 推式阶数就是对于这样的R和S,max(deg(R),deg(S)+1)的最小可能值。 证明.由定理1.1移项即得 定理1.2.对于一个nXn的矩阵M,无限数列{,M,M2,M3…)是一个线性递推数列,它 的最短线性递推式阶数不超过n 证明.考虑矩阵M的特征多项式p,它满足deg(p)=n,xlp(x)=1。 I Cayley-Hamilton 定理,我们有p(M)=0。该定理的证明可参见参考文献2],由于和本文主题关系不大,这 里略厶。 设p(x)=∑=0Cnx,P(M)=0即∑:0Cm-M=0,两边乘M得∑=0CnM+!=0 即∑0c;M件+=0。所以{c,C1…cn}即为数列{l,M,M2,M3……}的一个阶数为n的线性 递推式,该数列的最短线性递推式阶数不超过n。 线性生递推数列还满足以下的封闭性。 两关递推数列的性质和应用 福州第中学钟了谦 定理1.3.对于线性递推数列{a,a1,a…}、线性递推数列{bo,b1,b2…}、有限数列 {to,t1…m-1}、常数p,我们有 °{}z={a}0是线性递推数列 ·{a:p}是线性递推数列。 ·{a:+1}0是线性递推数列。 {a:+b}是线性递推数列。 {∑=0a,b=小=0是线性递推数列。 ab]o是线性递推数列。 以上引哩的证明较为简单,使用推论1.1和定1.2即可证明,由于篇幅所限这里略去。 1.3有关算法 求出一个数刎的最短线性递推式 我们先考虑有限数列的情况,即我们要对个有限数列求出最短线性递推式。假设运 算均在一个域上进行。 种简单的做法是使用高斯消元消元出最短线性递推式,对于长度为n的有限数列复 杂度为O(n3),而使用 Berlekamp-Massey算法可以将时间复杂度降到O(n2)。 对于一个有限数列{ao,a1,a2…an-n, Berlekamp-Massey算法会对于它的每个前缀 {co,a1,a2…a}求出这一前缀的最短线性递推式r,设p-1-l,即l1为线性递推 式r(的阶数。我们显然有r-1)={1},l=1≤l 引理1.1.如釆r-1)不是{ao,a1,a2…a}的最短线性递推式,那么 (l=1,i+1-l;-1) 证明.反证法,假设l≤i-l-1。设r(1={p0,1…p1},r(={q0,q1…qn} 那么山p的定义,对于4≤j≤我们都有4=-一a与 那么我们有 Pr a P>4 1k=1 k>,P14-j qkdi-k 两关递推数列的性质和应用 福州第中学钟了谦 所以r(-就是{a0,a1…a;}的最短线性递推式,矛盾。 所以l1≥i+1-11,又由单调性即证 事实上,引理1.1中的等号是可以取到的,以下我们给出这样的一种方案 考虑定理1.1,令A为数列a的生成函数,RO为r0的生成函数,那么就存在多项式 使得ARO)≡S((modx+1),其中deg(S()≤l-1 号虑由R1)推出R0。如果我们仍然有AR(D=S(-1)(mox+1),那么令R等于 即可。否则,我们有AR(1=S(-1)+dx(modx+1)。 考虑上一次增长递推式的情形,设当存在pl-1就对p和c进行 更新。时间复杂度O(n2) 对于无狠数列的情况,我们有如下定理 定理1.4.对于线性递推数列{ao,a1,a2…},若它的最短线性递推式阶数不超过s,那么 {ao,a1,a2…as+s-l}的最短线性递推式即为a的最短线性递推式。 证明.取最小的t≥s-s,满足{a0;a1,a2…as+3-1}的最短线性递推式r不是{ao,a1,a2…a} 的最短线性递推式,由引理1.1,我们就有{ao,a1,a2…a}的最短线性递推式长度至少为 1-l≥t+1-s≥s+s+1 S,矛盾 所以如果我们知道数列a最短线性递推式阶数的上界s,我们只需要求出这个数列长 度为2s的前缀并求出它的最短线性递推式即可。 1.3,2求出一个线性递推数列的某一项 假设我们有一个线性递推数列{ao,a,a2…}满足线性递推式(ro,r1…rm-1},考虑如何 对于k≥0求出ak 考虑设G(F)=∑oaxF(x),那么我们就是要求G(x) 注意到对于多项式a,b,我们有G(a+b)=G(a)+G(b)。由线性递推式的定义,对t≥0 我们有∑四0am-1-+1-0,即G(∑m=xm-1r)x)-0。所以设S(x)-∑=0xm-1,我 们就有G(S(x)x)=0(t≥0),又因为Ga+b)=G(a)+G(b),我们就有对任意多项式 T(x)、G(S(x)T(x)=0 两关递推数列的性质和应用 福州第中学钟了谦 考虑把κ和S(x)做带余除法,即设x=S(x)U(x)+R(x),其中UR为多项式且 dceg(R)<deg(S)。我们有G(S(x)U(x)=0,所以G(x)=G(x-S(x)U(x)=G(R(x)= G( xk mod s(x)。我们只需要类似快速幂地倍增k,每次把多项式对S(x)取模。 x' mod s(x) 的次数不超过m-2,我们再由定义带入a的前m-1项求出G即可。 求两个次数O(m)的多项式取模结果在模域下可以做到O(mlog(m))-时间复东度(可 以参见参考文献4),那么这个问题就可以在O(mlog(m)log(k)的时间复杂度内解决。 1.4常见应用 由于定理1.2,线性递推数列在与线性代数有关的问题中十分常见,本节提出一些常见 的应用。下文中无特别说明,均假设运算在模某个大质数p卜进行。 1.4.1求向量列和矩阵列的最短递推式 考虑如何求出n维行向量列{o,1,12…}的线性递推式。假设考虑在模p意义下随机 个n维列向量ν,转而计算{toν,t1v,l2v…}这个标量序列的最短线性递推式。 由 Schwartz-zippel引理(可参见参考文献[5]),我们可以推出有至少1-"的概率, tov,1v,2ν…}的最短线性递推式就是{to,t1,t2…}的最短线性递推式,所以我们只需要用 前述的方法求出最短线性递推式即可。 求矩阵列的最短递推式也是类似的,对于n行m列的矩阵列{to,t,t2…}的线性递推式 考虑在模p意义下随机一个n维列向量u和一个m维行向量v,转而计算{utnw,u1v,t2…} 这个标量序列的最短线性递推式。由 Schwartz- Zippel引埋,我们可以类似地推出有至少 1-2+的概率它们的最短线性递推式相同。 1.4.2求矩阵的最小多项式 nXn的矩阵M的最小多项式是次数最小的使得f(M)=0的多项式f。 类似定理1.2的证明,考虑{,M,M2…}的线性递推式{r,r1,n2…rm},那么我们有 ∑"01m=M=0,所以f(x)=∑morm-x即为矩阵M的一个零化多项式。所以矩阵M 的最小多项式就对应着{,M,M2…}的最短线性递推式,而由定理1.2它的阶数不超过n, 我们使用上一节中的方法求出最短线性递推式即可。 具休地,对于n维随机向量t,ν我们需要求出{uv,uMv,uM2y…uM2v。注意到 M+1=(uM)M,而向量乘上矩阵是可以在O(n2)时间内计算的,所以我们可以在O(n 时间内从前往后递推出{u,uM,uM2…lM2n},接下来再把每一项乘上v即可。时间复杂度 如果M是稀疏矩阵,假设其中有e个非零位置,那么向量乘上M的结果就可以在 (n+e)的时间内计算,我们就可以在O(n(n+e))的时间内求出{uv,uMv,
2022-04-30 00:59:55 2.69MB IOI 论文集 2019 NOI
1
适合热爱算法、痴迷算法的同学的学习资源,含有多种算法模板,适合用于比赛、自学等等。此资源有网上大部分的算法模板,整合到一起,方便学习。
2022-04-27 17:02:50 1.37MB 算法 蓝桥杯 学习 职场和发展
1
NOI/NOI竞赛大纲(2021年1月),发布之后,就没有再更新过了!
2022-04-11 14:04:20 5.7MB NOI NOIP 竞赛大纲 CSP
1
NOI数学学习相关书籍-2021-10-10(K)-128页.pdf
2022-04-11 11:21:13 3.7MB NOI数学
1
试卷-程序设计题2(NOI在线能力测试【入门组】 - 01卷).pdf
2022-03-19 15:59:14 150KB NOIP C++ 信奥
1
试卷-程序设计题3(NOI在线能力测试【入门组】 - 01卷).pdf
2022-03-19 15:52:49 157KB C++语言 信奥 NOIP
1
试卷-程序设计题1(NOI在线能力测试【入门组】 - 01卷) 试卷-程序设计题1(NOI在线能力测试【入门组】 - 01卷) 试卷-程序设计题1(NOI在线能力测试【入门组】 - 01卷)
2022-03-19 15:42:19 154KB NOIP 信奥 C++
1
信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分.pdf
2022-02-24 09:07:24 75KB 算法 CSP-S NOIP NOI
程序员的数学系列书籍介绍-2022-02-22(B).pdf
2022-02-24 09:07:23 3.57MB CSP-J CSP-S NOIP NOI
NOI《骗分导论》——关于应付竞赛不会难题的策略参考.pdf
2022-01-13 10:06:08 123KB 网络文档