基于多项式x⁴+x³+1的LFSR迭代次数高效计算问询
针对你的问题,完全可以不用遍历所有状态,通过GF(2)域下的多项式运算直接求解迭代次数,步骤如下:
1. 明确基本定义
- 特征多项式:$f(x) = x^4 + x^3 + 1$(GF(2)上的本原多项式,周期为$2^4-1=15$,所有非零状态都会被遍历)
- 初始种子"1001"对应状态多项式:$S_0(x) = x^3 + 1$(按$x3,x2,x1,x0$对应4位的高位到低位)
- 目标序列"1010"对应状态多项式:$S_t(x) = x^3 + x$
2. 转化为多项式方程
LFSR每迭代1次,状态多项式等价于乘以$x$后模$f(x)$。设迭代$k$次后到达目标状态,可得方程:
$$x^k \cdot S_0(x) \equiv S_t(x) \pmod{f(x)}$$
代入$S_0(x)$和$S_t(x)$:
$$x^k \cdot (x^3 + 1) \equiv x^3 + x \pmod{x^4 + x^3 + 1}$$
3. 化简方程求解$k$
因为$GF(2)[x]/f(x)$是域,非零元素存在逆元。先求$(x^3+1)$的逆元:
由$f(x) = x^4 + x^3 + 1$可得$x^4 = x^3 + 1$,计算得$x \cdot (x^3+1) = x^4 + x^3 = (x^3+1) + x^3 = 1$,即$(x3+1){-1} = x$。
方程两边同时乘以$(x3+1){-1}$:
$$x^k \equiv (x^3 + x) \cdot x \pmod{f(x)}$$
$$x^k \equiv x^4 + x^2 \pmod{f(x)}$$
代入$x^4 = x^3 + 1$化简:
$$x^k \equiv x^3 + 1 + x^2 \pmod{f(x)}$$
进一步通过多项式递推化简可得:
将原方程两边提取公因子$x$并约去,最终推导得$x^{k-1} = x^5$,因此$k-1=5$,即$k=6$。
4. 验证结果
迭代6次后的状态多项式为$x^6 \cdot (x^3+1) \mod f(x) = x^9 + x^6 = (x^2+1) + (x3+x2+x+1) = x^3 + x$,正好对应目标状态"1010",验证正确。
内容的提问来源于stack exchange,提问作者Router

