[关闭]
@samzhang 2016-09-03T03:19:14.000000Z 字数 1315 阅读 1509

教程 字符串

循环节与Border

前置技能 (Prerequisites)

定义 (Definitions)

本文目标 (Goals)

正文 (Body)

本文将以字符串 以及 来讲解,相信通过这个例子你可以理解为什么循环节和 一一对应。

首先根据定义因为 的一个 Border,所以它既是 的前缀也是后缀。这里我们把 看成由两个相交的子串(子串)重叠在一起所构成,即

假设 的循环节,那么我们可以得到下面这个推论:


观察可以发现,一个循环节可以把原串分成 个等价类,等价关系为

我们现在的已知条件是:


而我们现在想得到的是


现在我们来证明这一点。首先我们根据 的定义我们知道 . 还记得上面我们提到原串可以由一对相等的前缀和后缀重叠而构成吗? 其实就是前缀 的第个字符和第个字符相等,那么因为前缀和后缀相等,所以后缀的第个字符和第个字符同样相等。因为后缀对应着, 所以


又因为

所以其实

按照同样的方法我们可以证明其余等价类里面的字符都是相等的,这样我们就证明了依照对原串进行划分是正确的,从而说明了长度为的前缀确实是的一个循环节。


感谢

感谢叉姐在OI Camp中关于字符串的讲座(好难啊TAT)


我是OI界非著名菜鸡ZQC, 第一次写博文,如有任何意见或者看不懂的都可以加我qq交流:709256487。如果您觉得质量比较低,还请多担待。(好久用中文写这么长的东西了好不习惯呢(╯' - ')╯︵ ┻━┻

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注