Skip to content

定理Theorem

Fine–Wilf 周期引理

Fine–Wilf theorem · Periodicity lemma · Fine-Wilf周期定理

长度至少为 p+q−gcd(p,q) 的有限词若同时具有周期 p、q,就必有周期 gcd(p,q)。

一段记录同时按三格和五格重复,能不能说它每格都一样?不能只计算 gcd(3,5)=1 就下结论。长度六的 abaaba 同时有周期三和五,却不是常字符。再多观察一格,两个周期才会把原来分开的约束接起来。

Fine–Wilf 引理量化的就是“至少还要观察多长”。它把局部字符相等合成为更短的全局周期,也是很多字符串重复算法可以安全跳过比较的依据。

形式陈述 ​

定理准确说了什么 ​

设非空词 s 长度为 n,p,q 是它的两个正周期,令 d=gcd(p,q) 为最大公约数。若

n≥p+q−d,

则 d 也是 s 的周期。[1]

例如 p=4,q=6,d=2,门槛是八。一个长度至少八的词若同时通过所有四格、六格相等检查,便一定通过所有两格检查。定理没有说这样的词必须是常字符,因为最大公约数是二,奇数位置和偶数位置仍可使用不同字符。

定理是单向保证。长度不足时,结论可能成立,也可能失败:aaaaaa 在三、五的门槛以下仍有周期一;abaaba 则没有。不能把“不满足充分条件”当成“必定没有更短周期”。

直觉

短一位为什么真的不够 ​

把长度六的 abaaba 标上位置 0,1,2,3,4,5。周期三要求

0∼3,1∼4,2∼5;

周期五只要求 0∼5。把必须相等的位置连边,得到两个连通块:{0,2,3,5} 和 {1,4}。分别填 a、b,所有已要求的等式成立,却保留了两种字符。

当长度增加到七时,周期三新添边 3∼6,周期五新添边 1∼6。这两条边把两个块接通,于是所有位置必须相同。门槛 3+5−1=7 不是从公式里猜出的数字,它恰好阻止这个反例。

一个短一位的反例与门槛上的连通

这组实例证明的是:不能把对所有 p,q 都有效的门槛统一减一。某些特殊参数本来就有更强结论,例如 p∣q 时,最大公约数就是已知周期 p,不需要再借定理推出。

先证明一个传递规则 ​

后面会把问题缩短,所以先说明如何从一段子串把周期传回整串。

设 s 有周期 p,其中一段长度至少为 p 的连续子串有周期 d,而且 d∣p。那么整串都有周期 d。

理由是这段子串覆盖了模 p 的每一种余数。整串任何位置 i 都能沿 p 格等式,移动到子串中一个同余位置 i′,所以 s[i]=s[i′]。两个模 d 同余的位置被送到子串后仍模 d 同余,因为 d∣p;子串里的 d 周期使它们字符相同。于是整个字符串中相距 d 的位置也相同。[2]

“子串足够长”和“d 整除 p”都参与了证明。只在某个很短角落看到连续 aa,当然不能让一条任意长的 p 周期记录变成常字符。

用减法版欧几里得算法证明 ​

对 p+q 作强归纳。不妨 p≤q。若 p=q,结论就是已经知道的周期 p。以下设 p<q,仍记 d=gcd(p,q)。

取前缀 t=s[0:n−p]。它保留周期 p;它还有周期 q−p。对每个 0≤i<n−q,

s[i]=s[i+q]=s[i+q−p].

第一个等式用周期 q,第二个用周期 p。这恰好覆盖了 t 中所有相距 q−p 的位置,所以周期检查既不越界,也没有遗漏。

新问题满足同一种长度门槛:

|t|=n−p≥q−d=p+(q−p)−gcd(p,q−p).

而 p+(q−p)=q<p+q,归纳假设可以应用,得到 t 有周期 d。这里的最大公约数保持不变,正是欧几里得算法减去较小数时使用的性质。

最后要把结论传回被删去的尾部。由于 p,q 都是 d 的倍数且 q>p,有 q≥p+d,所以

|t|≥q−d≥p.

前缀足以覆盖所有模 p 的位置,又有 d∣p,上一节的传递规则适用,整串因此具有周期 d。证明到此闭合;不能只证明缩短后的前缀就把原串尾部略掉。

例子与边界

终点检查:拒绝一个貌似合理的合并 ​

某程序对长度七的 aaabaaa 报告周期四和六,随后把周期改成二。先核验原报告:四格比较是位置 0/4,1/5,2/6,都为 a;六格只比较 0/6,也相等。但两格比较 1/3 是 a 对 b,失败。

错误恰好在长度条件:4+6−gcd(4,6)=8,七个字符少一位。把实例画成约束图,会得到偶数位置块、{1,5} 和孤立位置 3;这个尚未连上的位置容许 b 存在。能指出哪一对比较失败,比只说“定理条件不满足”更接近一个可用的程序反例。

推论与应用

怎样把定理用在算法里 ​

假设一个重复检测程序分别发现同一片段有周期 p 和 q。安全的合并过程是先确认这两个周期针对的是同一连续片段,再计算 d,最后检查该片段长度是否至少 p+q−d。满足时才可把两个周期压缩为 d。

若周期来自不同窗口,需要先把它们限制到共同重叠区间,并按那个区间的长度检查门槛。不能用两个窗口长度之和替代重叠长度,也不能把两组零散采样点当成一段连续记录。

已知周期确实成立时,计算门槛只需一次 gcd 与常数次整数操作;在机器字模型中,普通欧几里得算法使用 O(log⁡min(p,q)) 次除法。若输入只是“声称有两个周期”,还要逐字符核验,成本为 O(n),定理本身不会免费证明输入承诺。处理大整数位串时则另计除法的位成本。

还有一个重要用途是本原根。如果同一个词既是长度 p 块的整数次幂,又是长度 q 块的整数次幂,整块重复提供足够长的重叠。周期引理会迫使它们服从共同的更短块,从而保证最短根唯一。

参考资料
  • [1] N. J. Fine and H. S. Wilf, “Uniqueness Theorems for Periodic Functions”, Proceedings of the AMS 16(1), 1965, pp. 109–114,DOI。原论文的周期序列唯一性定理是有限词版本的来源。
  • [2] Štěpán Holub, Martin Raška and Štěpán Starosta, Combinatorics on Words Basics, Archive of Formal Proofs,Periodicity_Lemma:周期传递、Fine–Wilf 与最优性反例的形式化证明。
  • M. Lothaire, Combinatorics on Words, Cambridge University Press, 1997,Proposition 1.3.5。
  • Štěpán Holub, Algebraic Properties of Word Equations, 2016,slides 3–4:周期序列版本及两种代数证明。正文采用有限位置上的归纳证明,无需 Fourier 分析。
关系图谱10 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系