高效表示与计数单词中的反幂因子
1. 简单计数算法
1.1 算法描述
算法 1:SimpleCount(w, n, k)
(Cd)⌊n/k⌋
d=1 := (∅, . . . , ∅)
for q := 0 to k − 2 do
foreach (q + 1)-MGR or generalized run γ in w do
p := per(γ)
if (q + 1) | p then
d := p / (q + 1)
I := Squares(q, d, γ)
Cd := Cd ∪ { Chaink(q, d, I) }
antipowers := 0
for d := 1 to ⌊n/k⌋ do
WeakPow k(d) := (∪ Cd) ∩ [0 . . n − kd]
antipowers := antipowers + (n − kd + 1) − |WeakPow k(d)|
return antipowers
1.2 复杂度分析
- 命题 11:长度为 n 的单词中 k - 反幂因子的数量可以在 $O(nk^3)$ 时间内计算。
- 证明:使用引理 10 的 (b) 和 (c) 点,将集合 WeakPow k(d) 表示为 $O(nk^2)$ 个区间链的并集。每个区间链最多由 k 个区间组成。应用引理 6 可以在 $O(nk^3)$ 总时间内计算 WeakPow k
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



