Berlekamp-Massey算法

Berlekamp-Massey算法能在O(n^2)时间内找到数列的最短递推式,用于求解数列任意项。本文介绍了算法引入、流程及递推式的构造方法,包括错误修正和增量构造式,适用于数据处理和序列分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法引入

现在我们已经有一种已知递推式快速求数列第 n n n项的算法了。

现在问题转化成了如何求出一个数列的最短递推式。

于是就有了这篇介绍神奇的Berlekamp-Massey算法的blog。

我们的Berlekamp-Massey算法可以在 O ( n 2 ) O(n^2) O(n2)的时间内求出长度为 n n n的已知数列的最短递推式,再配合常系数齐次线性递推就可以快速求出数列的任意项。

现在给你一个数列,考虑如何构造出其最短递推式。

算法流程

对于一个 n n n项的数列 A = { a 1 , a 2 , . . . , a n } A=\{a_1,a_2,...,a_n\} A={ a1,a2,...,an}和另一个 m m m项的数列 R = { r 1 , r 2 , . . . , r m } ( m ≤ n ) R=\{r_1,r_2,...,r_m\}(m\le n) R={ r1,r2,...,rm}(mn),当 ∀ k > m \forall k>m k>m,都满足 a k = ∑ i = 1 m r i a k − i a_k=\sum\limits_{i=1}^mr_ia_{k-i} ak=i=1mriaki时,我们称 R 是 R是 RA的一个递推式,对于所有满足条件的 R R R,我们将 m m m最小的 R R R称为 A A A的最短线性递推式。

现在我们考虑用增量构造法构造一个 N N N项的数列 A A A的最短线性递推式 R R R

假设我们当前处理到位置 n n n { a 1 , a 2 , . . . , a n − 1 } \{a_1,a_2,...,a_{n-1}\} { a1,a2,...,an1}的最短线性递推式为 { r 1 , r 2 , . . . , r m } \{r_1,r_2,...,r_m\} { r1,r2,...,rm},记第 i i i次更改最短线性递推式为 R i R_i Ri,特别的, R 0 = { ∅ } , R c u r = { r 1 , r 2 , . . . , r m } R_0=\{\empty\},R_{cur}=\{r_1,r_2,...,r_m\} R0={

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值