高手快请进,郁闷死我了:有限域上的多项式的求余(决不吝分!!!)

hauck 2002-05-15 09:12:15
有限域GF(256)(就是有限域GF(2^8))上的两个多项式:(n>m)
f(x)=a0 + a1*x + a2*x^2 + ... + an*x^n,
g(x)=g0 + g1*x + g2*x^2 + ... + gm-1*x^m-1 + x^m,
求用g(x)去除f(x)所得的余数多项式.
请高手给个思路,点拨一下,有程序更好!
只要验证是对的,可用分倾囊相赠!

...全文
335 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xjl930 2002-05-16
我也有同样的问题,但我也没找到合适的方法解决,共同研究学习!
回复
southnan 2002-05-16
这个问题比较有深度,收藏,慢慢研究!
回复
mathe 2002-05-16

对于GF(256),可以先计算出其乘法表。
在GF(256)中,加法就是异或运算,任意一个元素都可以表示成GF(2)
上的一个最多7次的多项式,
所以
0=000 就是0
1=001 就是1
2=0010就是x+0=x
3=0011就是x+1
4=00100就是x^2
然后对于两个变量
u,v
可以先计算两个对应多项式的乘积(需要注意的是加法是模2的,或者说是异或运算),
比如
3*7=(x+1)*(x^2+x+1)=x*x^2+x*x+x+x^2+x+1=x^3+1 (模2运算中x+x=0 and x^2+x^2=0)
所以3*7=9
在乘积得出来的多项式次数大于7时,我们需要对多项式在GF(2)上关于h(x)求余数,也就是
129*5=(x^7+1)*(x^2+1)=x^9+x^7+x^2+1
将上面的函数加上x*h(x)可以消去x^9,(其实就是手工除法过程,只是现在每一次商总是0或1),所以
129*5=x^9+x^7+x^2+1+x^9+x^5+x^4+x^3+x=x^7+x^5+x^4+x^3+x^2+x+1
=0010111111=191
在得出乘法表以后,我们可以很快的从表格中对于每一个元素找到它的逆,于是逆运算也有了,除法就可以分解为乘法和逆运算。
有了加乘逆以后(对于GF(2^n)减法同加法没有分别)
就可以使用手工除法了
回复
microblue 2002-05-16
up
回复
hauck 2002-05-16
多谢各位!
经过我细心的检查,终于找的了问题所在,结果已经调出来了,是对的!
哈哈,真是太高兴了,不过,也很惭愧,只是一点小小的马虎,
让我郁闷了这么久!
呵呵,今天心情太好了,晚上结帖,再给各位一个UP的机会,
就当是散分了,:)
大家快来呀~~~~~~~~~
回复
hauck 2002-05-16
to mathe():
多谢多谢!!
你讲得很详细。GF(256)域上的加法是异或运算,乘法的运算我也用程序编出来了,我也验证了,是对的。但是我没有用到“逆运算”,我对这个概念不太明白,是指两个元素乘积为单位元,它们就互为逆元素吗?那么,在这个域中,单位元是1(00000001)吗?
还有一点要请教:
GF(256)上的一个元素,a^i,对应的多项式可以是升幂排列,也可以是降幂排列,比如:2可以表示为:01000000,也可以表示为:00000010,我到底应该选用哪种呢?
回复
hauck 2002-05-15
to starfish(海星):
是GF(256)有限域上的,对这个域上的乘法和加法规则,我理解得不是很透,
对了,忘了说了:所用的这个域的本原多项式是:
h(x)=x^8 + x^4 + x^3 + x^2 + 1,
请予指点,救命则个!
回复
starfish 2002-05-15
模拟手算的方法就可以了呀,这有什么难的?
回复
rockpeak 2002-05-15
需要一点考虑时间,关注
回复
keenhaung 2002-05-15
楼主别着急,我thinking一下先
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2002-05-15 09:12
社区公告
暂无公告