LFSR——二进制下线性反馈移位寄存器与Berlekamp-Massey算法
转载自:元暑期学校课件(侵删)
线性反馈移位寄存器(LFSR)
给定一个线性反馈移位寄存器(LFSR)的n个初始值a0,a1,...,an−1a_0,a_1,...,a_{n-1}a0,a1,...,an−1,不断地加移位脉冲,n级LFSR就会输出一序列
a0,a1,a2,...
a_0, a_1,a_2,...
a0,a1,a2,...
ai∈F2={0,1}a_i\in F_2=\{0,1\}ai∈F2={0,1}.
其中ai+na_{i+n}ai+n满足等式
ai+n=∑j=1ncjai+n−j,cj∈F2.
a_{i+n}=\sum^n_{j=1}c_ja_{i+n-j},c_j\in F_2.
ai+n=j=1∑ncjai+n−j,cj∈F2.
我们把这样的序列称为 (n级)线性反馈移位寄存器(LFSR)。
特征 多项式与联接多项式
n级LFSR的**特征多项式(Characteristic Polynomial)**为
f(x)=xn+∑i=1ncixn−i,
f (x) = x ^ n + \sum _ {i = 1} ^ {n} c_ix ^ {n-i},
f(x)=xn+i=1∑ncixn−i,
其**联接多项式(Reciprocal Polynomial/Joint Polynomial)**为
f‾(x)=xnf(1x)=1+∑i=1ncixi.
\overline{f} (x) = x^n f(\frac{1}{x})= 1 + \sum _ {i = 1} ^ {n} c_ix ^ i.
f(x)=xnf(x1)=1+i=1∑ncixi.
将满足递推关系式(2)的n级LFSR序列称为由f(x)f(x)f(x)产生的序列。
G(f):由f(x)f(x)f(x)产生的所有序列的全体组成的集合。
极小多项式
设a是F2F_2F2上的一个周期序列,存在F2F_2F2上唯一的首一多项式f(x)f(x)f(x)使得a∈G(h(x))\in G(h(x))∈G(h(x))当且仅当f(x)∣h(x)f(x)|h(x)f(x)∣h(x)。这个多项式f(x)f(x)f(x)称作a的极小多项式。
Berlekamp-Massey算法
Berlekamp-Massey算法(简称BM算法):在已知二元序列的情况下求解其极小多项式和阶数。
(1) 设n0n_0n0是一个非负整数,满足
a0=a1=⋯=an0−1=0,an0≠0.
a_0=a_1=\cdots=a_{n_0-1}=0,a_{n_0}\neq 0.
a0=a1=⋯=an0−1=0,an0̸=0.
取
d0=d1=⋯=dn0−1=0,dn0=an0,
d_0=d_1=\cdots=d_{n_0-1}=0,d_{n_0}=a_{n_0},
d0=d1=⋯=dn0−1=0,dn0=an0,
令
f1(x)=f2(x)=⋯=fn0(x)=1,
f_1(x)=f_2(x)=\cdots=f_{n_0}(x)=1,
f1(x)=f2(x)=⋯=fn0(x)=1,
l1=l2=⋯=ln0=0. l_1=l_2=\cdots=l_{n_0}=0. l1=l2=⋯=ln0=0.
令
fn0+1(x)=1−dn0xn0+1,ln0+1=n0+1.
f_{n_0+1}(x)=1- d_{n_0}x^{n_0+1},l_{n_0+1}=n_0+1.
fn0+1(x)=1−dn0xn0+1,ln0+1=n0+1.
(2) 假设(fi(x),li),1≤i≤n≤N(f_i(x),l_i),1\leq i\leq n \leq N(fi(x),li),1≤i≤n≤N 已经求得。而
l1=l2=⋯=ln0<ln0+1≤ln0+2≤⋯≤ln
l_1=l_2=\cdots=l_{n_0}<l_{n_0+1}\leq l_{n_0+2}\leq \cdots \leq l_n
l1=l2=⋯=ln0<ln0+1≤ln0+2≤⋯≤ln
根据fn(x)=1+cn,1x+⋯+cn,lnxlnf_n(x)=1+c_{n,1}x+\cdots+c_{n,l_n}x^{l_n}fn(x)=1+cn,1x+⋯+cn,lnxln,并计算
dn=an+cn,1an−1+⋯+cn,lnan−ln.
d_n = a_n + c_{n,1}a_{n-1}+\cdots+c_{n,l_n}a_{n-l_n}.
dn=an+cn,1an−1+⋯+cn,lnan−ln.
如果dn=0d_n=0dn=0,则取
fn+1(x)=fn(x),ln+1=ln;
f_{n+1}(x)=f_n(x), l_{n+1}=l_n;
fn+1(x)=fn(x),ln+1=ln;
若dn≠0d_n\neq 0dn̸=0,这时一定存在1≤m<n1\leq m< n1≤m<n,使
lm<lm+1=lm+2=⋯=ln,
l_m<l_{m+1}=l_{m+2}=\cdots=l_n,
lm<lm+1=lm+2=⋯=ln,
取
fn+1(x)=fn(x)−dndm−1xn−mfm(x),
f_{n+1}(x)=f_n(x)-d_nd_m^{-1}x^{n-m}f_m(x),
fn+1(x)=fn(x)−dndm−1xn−mfm(x),
ln+1=max{ln,n+1−ln}. l_{n+1}=max\{l_n,n+1-l_n\}. ln+1=max{ln,n+1−ln}.
例 求周期为8的序列a(8)=00101101a^{(8)}=00101101a(8)=00101101的极小多项式和阶数。
解 a0=0,a1=0,a2=1,a3=0,a4=1,a5=1,a6=0,a7=1a_0=0, a_1=0, a_2=1, a_3=0, a_4=1, a_5=1, a_6=0, a_7=1a0=0,a1=0,a2=1,a3=0,a4=1,a5=1,a6=0,a7=1. 首先n0=2n_0=2n0=2,因此
d0=d1=0,d2=1,
d_0=d_1=0,d_2=1,
d0=d1=0,d2=1,
f1(x)=f2(x)=1,f3(x)=1−x3, f_1(x)=f_2(x)=1,f_3(x)=1-x^3, f1(x)=f2(x)=1,f3(x)=1−x3,
l1=l2=1,l3=3. l_1=l_2=1,l_3=3. l1=l2=1,l3=3.
计算d4=a4−a1=1−0=1≠0d_4=a_4-a_1=1-0=1\neq 0d4=a4−a1=1−0=1̸=0,这时l2<l3=l4l_2<l_3=l_4l2<l3=l4,因此m=2,
f5(x)=f4(x)−d4d2−1x4−2f2(x)=1−x3−x2=1+x2+x3,
f_5(x)=f_4(x)-d_4d_2^{-1}x^{4-2}f_2(x)=1-x^3-x^2=1+x^2+x^3,
f5(x)=f4(x)−d4d2−1x4−2f2(x)=1−x3−x2=1+x2+x3,
l5=max{l4,4+1−l4}=3. l_5=max\{l_4,4+1-l_4\}=3. l5=max{l4,4+1−l4}=3.
计算d5=a5+a3+a2=1+0+1=0d_5=a_5+a_3+a_2=1+0+1=0d5=a5+a3+a2=1+0+1=0,因此
f6(x)=f4(x)=1+x2+x3,l6=l5=3.
f_6(x)=f_4(x)=1+x^2+x^3,l_6=l_5=3.
f6(x)=f4(x)=1+x2+x3,l6=l5=3.
计算d6=a6+a4+a3=0+1+0=1≠0d_6=a_6+a_4+a_3=0+1+0=1\neq 0d6=a6+a4+a3=0+1+0=1̸=0, 这时l2<l3=l4=l5l_2<l_3=l_4=l_5l2<l3=l4=l5,因此m=2m=2m=2,
f7(x)=f6(x)−d6d2−1x6−2f2(x)=1+x2+x3−x4=1+x2+x3+x4,
f_7(x)=f_6(x)-d_6d_2^{-1}x^{6-2}f_2(x)=1+x^2+x^3-x^4=1+x^2+x^3+x^4,
f7(x)=f6(x)−d6d2−1x6−2f2(x)=1+x2+x3−x4=1+x2+x3+x4,
l7=max{l6,7−l6}=4. l_7=max\{l_6,7-l_6\}=4. l7=max{l6,7−l6}=4.
计算d7=a7+a5+a4+a3=1+1+1+0=1≠0d_7=a_7+a_5+a_4+a_3=1+1+1+0=1\neq0d7=a7+a5+a4+a3=1+1+1+0=1̸=0,这时l6<l7l_6<l_7l6<l7,因此m=6m=6m=6,
f8(x)=f7(x)−d7d6−1x7−6f6(x)=1+x2+x3+x4−x(1+x2+x3)=1+x+x2,
f_8(x)=f_7(x)-d_7d_6^{-1}x^{7-6}f_6(x)=1+x^2+x^3+x^4-x(1+x^2+x^3)=1+x+x^2,
f8(x)=f7(x)−d7d6−1x7−6f6(x)=1+x2+x3+x4−x(1+x2+x3)=1+x+x2,
l8=max{l7,8−l7}=4. l_8=max\{l_7,8-l_7\}=4. l8=max{l7,8−l7}=4.
所以a(8)=00101101a^{(8)}=00101101a(8)=00101101的极小生成多项式为1+x+x21+x+x^21+x+x2,阶数为4。