UOJ Logo hly1204的博客

博客

一次失败的尝试

2021-04-21 08:06:05 By hly1204

EI 的博客给出了一个对 BM 算法的新的理解,非常谢谢 EI 愿意分享这些!

然后我作了一些尝试实现这个,我使用在 https://www.researchgate.net/publication/220538005_The_Berlekamp-Massey_Algorithm_revisited 给出的伪代码(不过是用暴力的辗转相除)作了一个尝试但是没能通过题目 https://judge.yosupo.jp/submission/45440 (应该是我没有理解这个算法的缘故)参考在 Modern Computer Algebra 一书中的相关内容,失败的原因可能是这个不唯一还是前面有零啥的不太清楚,感觉我也不太懂,不过我用之前的 https://hly1204.blog.uoj.ac/blog/6630 的代码测试了一下发现是可以找到一个正确的递推式的,(如果不要求最短,然后这个序列首项又不为零的话,递推式可以直接用幂级数求个倒数得到吧。。)不过这个递推式好像不满足最短或者度数 $\lt n$ 之类的一些性质,然后就 gg 了,不知该如何修改才能令这样的实现可以与之前的 BM 写法答案都正确。。

这个样例

6
3 4 6 10 18 36

他给出的答案是

4
3 998244351 3 998244349

然后我可以找到

$$\frac{P(x)}{Q(x)}=\frac{998244329+ 359368033x}{998244345+ 119789355x+ 838525229x^2+ 638876384x^3+ 399297738x^4}\equiv 3+ 4x+ 6x^2+10x^3+18x^4+36x^5 \pmod{x^6}$$

998244329, 359368033,0,0,0,0 /*分子*/
998244345, 119789355, 838525229, 638876384, 399297738 /*分母*/

和给的答案也不一样,给的答案换成这种形式就是

$$\frac{P(x)}{Q(x)}=\frac{3+ 998244348x +0x^2+ 998244344x^3}{1+998244350x+ 2x^2+ 998244350x^3+ 4x^4}\equiv 3+ 4x+ 6x^2+10x^3+18x^4+36x^5 \pmod{x^6}$$

3, 998244348, 0, 998244344,0,0 /*分子*/
1,998244350, 2, 998244350, 4 /*分母*/

显然就不太一样。。是否意味着就是说当递推式的度数大于 $n$ 的时候这个东西不唯一(在 https://www.luogu.com.cn/discuss/show/129052 好像有提过,不过大多数人用的同一个代码的话然后会不会有些题就没有 spj 了,如果说递推式不唯一的话可能需要 spj 吧。。但是如果不唯一的话似乎也没有用这个算法的价值了)。。如果愿意指出问题非常感谢!

评论

YuHaoXiang
$$ \frac {P \left( x \right)} {Q \left( x \right)} = \frac{3 + 112 x - 201 x^2 + x^3} {1 + 36 x - 117 x^2 + 81 x^3} \equiv 3 + 4 x + 6 x^2 + 10 x^3 + 18 x^4 + 36 x^5 \pmod {x^6}. $$
zhltao
问个问题,为什么在我的浏览器下数学公式会显示不出来,比如![](https://cdn.luogu.com.cn/upload/image_hosting/j7nkdr9x.png) 的情况,网上找了一些东西,说刷新就好了,可是没有效果,单独开贴不太合适,而且看的是您的文章,于是就在下边评论了,希望能获得解答,谢谢!
142857cs
@hly1204 emmm 度数大于n的时候确实是不唯一的 EI博客上只说了度数不超过n的情况,超过n的情况怎么修改我也不是很懂。。。 orz
142857cs
@hly1204 如果你知道答案的度数是m(>n),可以直接把序列长度加到2m,这样可以证明是正确的

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。