周期、Border、回文的部分定理证明与应用

· · 算法·理论

jzp 讲过两遍,匆匆来整理。

\bf{-1.} 约定

(有些需要特殊说明并证明的放在后面说)

\bf{0.} \bf{Period}

### $\bf{0/0/0}.$ 子串周期引理 - 描述:整串周期的集合 $P_1$ 包含于任何子串的周期集合 $P_2$。 - 证明:自己画图,略。 ### $\bf{0/0/1}.$ 前缀周期引理 - 描述:设 $S$ 为 $T$ 前缀,$a \in P(T), b \in P(S)$,且 $b \mid a, a \le|S|$,则 $b \in P(T)$。 - 证明:如图,略。 ![](https://cdn.luogu.com.cn/upload/image_hosting/3uu5dgp9.png) ### $\bf{0/1.}$ $\bf{Period}$ 与 $\bf{Border}

\bf{0/2.} \bf{Period}\bf{LCP}

\bf{0/3/0.} \bf{WPL} 弱周期引理 ※

往后大部分证明都需要用到 \bf{WPL},还有一个 \bf{PL},但是没有那么重要,毕竟扩大了部分范围没有太大的作用。

\bf{0/3/\frac{1}{2}.} 推论 1

\bf{0/3/1.} \bf{PL} 强周期引理 *

\bf{0/4.} 循环节

\bf{1.} \bf{Border}

\bf{1/0/0.} 传递性

\bf{1/0/\frac{1}{2}}. 推论 1

\bf{1/1/0.} \bf{Border} 等差数列性质 ※

\bf{1/1/\frac{1}{3}.} 双串 \bf{Border} & 推论 1

\bf{1/1/\frac{2}{3}.} 推论 2

\bf{1/2.} 大肠包小肠

\bf{1/3.} 匹配等差

\bf{2.} \bf{KMP} 算法

主要解决字符串匹配问题,考虑失配之后的次优位置 \pi 函数。

所以说 \pi 函数的定义就呼之欲出了,即 \pi_i = \text{Bor}(\text{Pre(S, i)})

如何转移,思考 \pi \text{-box} 的位置。

我们发现,\text{Bor}(\text{Pre}(S, i)) - \text{Bor}(\text{Pre}(S, i - 1)) \le 1,也就是说 \pi_i \le \pi_{i - 1} + 1,这可以势能分析,\pi 总共最多会减小 \mathcal{O}(n) 次,所以通过确定上界不断减小时间复杂度是正确的。

代码不放了。

\bf{2/0}. 延申

\bf{3.} \bf{Manacher} 算法

主要解决最长回文子串问题,考虑对于每个点求其作为回文中心的最长回文子串长度 d

由于 i 为中心的回文所在镜像 i^{`} 亦是回文中心,两端是相同的。

找找 p\text{-box}

假设当前我们已经求出 p_1, p_2, \cdots, p_{i - 1},那么我们可以确定一个 C 和一个 R_{\max},使得在 j = C < i 时,R_{\max} = p_j + j 最大。

那么由于对称性,R_{\max} 及其左边都是确定了的。

代码仍然不写。

\bf{3/0.} 延申