字符串小结论

字符串下标从 \(1\) 开始。

结论 1:若 \(p,q\) 是字符串 \(s\) 的周期,且 \(p+q\leq |s|+\gcd(p,q)\),则 \(\gcd(p,q)\) 也是 \(s\) 的周期。(Periodicity Lemma)

证明:

感觉类比成跳跃会好思考一些?首先假设 \(p<q\)

对于 \(p<i\leq |s|\)\(i\),先向左跳 \(p\) 再向右跳 \(q\) 即可得到 \(q-p\)\(s[p+1:|s|]\) 的周期。同理可得 \(q-p\)\(s[1:|s|-p]\) 的周期。

所以 \(q-p\)\(s\) 长度为 \(|s|-p\) 的前后缀的周期。

此时变成了另外一个子问题,可以通过归纳证明得 \(\gcd(p,q)\)\(s\) 的长度为 \(|s|-p\) 的前后缀的周期。

因为 \(p<q\),所以 \(\gcd(p,q)\leq \min(p,\frac {q}{2})\)

此时若得到 \(2p\leq |s|\),则可以通过整体移位,即 \(s[1:p]=s[p+1:2p]\)\(\gcd(p,q)\vert p\) 来得证。

因为 \(p+\gcd(p,q)\leq q\),所以得到 \(p+q\geq 2p+\gcd(p,q)\)

假设 \(p>\frac {|s|}{2}\),则有 \(2p+\gcd(p,q)>|s|+\gcd(p,q)\),与前提 \(p+q\leq |s|+\gcd(p,q)\) 相矛盾,所以得证 \(2p\leq |s|\)

结论 2:若字符串 \(u,v\) 满足 \(2|u|\geq |v|\),则 \(u\)\(v\) 中的所有匹配位置形成一个等差数列。

证明:

还不会。。。

posted @ 2024-12-25 17:15  Lyz09  阅读(15)  评论(0)    收藏  举报