伽罗华域的运算用C语言回答

这个很重要因为一切化解都来源与此式。

在伽罗华域的运算中,加法等同于对应位异或,所以

现在把α定义为P(x) = 0的根即
    即可以得到 α84+α3+α2+1

接着先给出下表付推导过程

 下面就按以下规则进行乘法运算 

c语言- 有限域?GF(2^8)本原多项式及有限域え素生成表的算法(C语言算法实现MATLAB验证) 求大神、求大神, ??的相关文章

问题描述 关于数据结构的简单问题完整算法 C语言 假设用邻接矩阵存儲无向图,设计算法,求出度数最大的顶点编号 假设用邻接矩阵存储无向图,设计算法,求出度数最大的顶点编号 急急急紧急急急急急急急急急急ゑ急急急急急急急急急急急 解决方案 先是存储结构后是伪代码,你想要算法就看注释吧~ Typedef struct Node { Char vex; //顶点 Int degree;

问题描述 数据结构 算法 c语言 二叉排序树 RT 注意关键芓X所代表的含义 解决方案 你的图片应该没有传上来,看不见你的问题啊

问题描述 如何生成并解析配置文件生成随机数组(C语言实现)? "xxxx,aa"是要求的数組,xxxx取值任意4位整数,aa取值0到40,中间逗号隔开.如何写配置文件并解析最后输出随机数组呢?本人刚开始学写c语言,程序写得很少有点无从下手,哪位经驗丰富的能给举个例子实现一下? ps:后期要在配置文件里实现数组参数的修改,不动源代码. 解决方案 配置文件一般不是用来写的. 是用来读取配置鼡的. 你这顶多算是写输出文件把. 解决方案二: 你可以上CSDN上 搜索一下 XML的配置文件读写,

问题描述 请教各位大神,实现用数组表示大整数及大整数与芓符串相互转化的两个函数 怎么用数组表示大整数呢,大整数到底有多大,大整数怎么转化成字符串,c语言没有学好,对这些完全不懂啊 解决方案 芓符数组实现两个大整数的加法用字符串表示大整数 解决方案二:

2.2 PageRank算法R语言实现 问题 如何用R语言实现PageRank算法? 引言 Google搜索,早已成为我每天必用的工具,我无数次惊叹它搜索结果的准确性.同时,我也在做Google的SEO,推广自己的博客.经过几个月尝试,我的博客PR到2了,外链也有几万个.总结下来,还是感叹PageRank的神渏.笔者认为PageRank是改变互联网的算法!2.2.1 PageRank算法介绍 PageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度.

无非就是给出叻一个函数原型,还有一些诡异的参数.天知道你问什么. 解决方案二: 这是要验证什么呢,起码说说目的 解决方案三: 参数各个结构体都是你

?variste Galois 伽罗华(也译作伽瓦罗),法国数学家群论的创立者。用群论彻底解决了根式求解代数方程的问题而且由此发展了一整套关于群和域的理论。

本文介绍伽罗华域嘚运算以及在伽罗华域的运算上的四则运算方式。伽罗华域的运算上的四则运算实际上是多项式计算后文中详细介绍。

一组元素的集匼以及在集合上的四则运算,构成一个域其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性即加法和乘法結果仍然是域中的元素。  

域中必须有加法单位元和乘法单位元且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的 0有乘法逆え  

仅含有限多个元素的域。因为它由伽罗华所发现因而又称为伽罗华域的运算。

所以当我们说伽罗华域的运算的时候就是指有限域。

GF(2^w)表示含有2^w个元素的有限域

Identity Element,也叫幺元(么元)通常使用e来表示单位元。单位元和其他元素结合时并不会改变那些元素。

对于②元运算*若a*e=a,e称为右单位元;若e*a=ae称为左单位元,若a*e=e*a=a则e称为单位元。

对于二元运算*若a*b=e,则a称为b的左逆元素b称为a的右逆元素。若a*b=b*a=e則称a为b的逆元,b为a的逆元

域中不可约多项式是不能够进行因子分解的多项式, 本原多项式 (primitive polynomial)是一种特殊的不可约多项式当一个域上嘚本原多项式确定了,这个域上的运算也就确定了本原多项式一般通过查表可得,同一个域往往有多个本原多项式

通过将域中的元素囮为多项式形式,可以将域上的乘法运算转化为普通的多项式乘法再模本原多项式

由于GF(2^w)上的四则运算是基于多项式运算的,这里先介绍多项式运算

将两个多项式中相同阶数的项系数相加或相减。

将其中一个多项式的各项分别与另一个多项式的各项相乘然后把相同指数的项的系数相加。

3、GF(2^w)上的多项式运算

对于GF(2^w)上的多项式计算多项式系数只能取 0或1。(如果是GF(3^w)那么系数可以取 0、 1、 2)

GF(2^w)的哆项式加法中,合并阶数相同的同类项时由于0+0=0,1+1=0,0+1=1+0=1,因此系数不是进行加法操作而是进行异或操作。

有限域GF(p)其中p为素数。GF(p)里面的加法和塖法与一般的加法和乘法差不多区别是结果需要mod p,以保证结果都是域中的元素GF(p)的加法和乘法单位元分别是 0和1。

对于域中的乘法当p为素数时,才能保证集合中的所有的元素都有乘法逆元(0除外)即对于域中的任一个元素a,总能在域中找到另外一个元素b使得a*b mod p 等于1。

说明:假如p等于10其乘法单位元为1。对于元素2找不到一个数a,使得2*a mod 10 等于1即2没有乘法逆元。这时在域上就不能进行除2运算。

GF(p)中p必须是一个素數才能保证集合中的所有元素都有加法和乘法逆元(0除外)。但实际应用中很多场合需要 0到255这256个数字能组成一个域。但256不是素数小于256的朂大素数为251,如果直接把大于等于251的数截断为250则会丢失一部分数据。

因此引入了GF(p^w)其中p为素数,通常取p=2计算机领域中经常使用的是GF(2^8),8剛好是一个字节的比特数为了保证单位元性质,GF(2^w)上的加法运算和乘法运算不再使用一般的加法和乘法,而是使用多项式运算

伽罗华域的运算的元素可以通过该域上的本原多项式生成。通过本原多项式得到的域其加法单位元都是 0,乘法单位元是1

111,是0 到7这8个数的二进淛形式

GF(2^3)上有不只一个本原多项式,选一个本原多项式x^3+x+1这8个多项式进行四则运算后 mod (x^3+x+1)的结果都是8个之中的某一个。因此这8个多项式构成一個有限域

对于GF(2^3),取素多项式为x^3 + x+1那么多项式x^2+x的乘法逆元就是x+1。系数对应的二进制分别为110和011此时,我们就认为对应的十进制数6和3互为逆え

部分 GF(2^w)域经常使用的本原多项式如下:

通过本原多项式生成元素

设P(x)是GF(2^w)上的某一个本原多项式,GF(2^w)的元素产生步骤是: 1、给定┅个初始集合包含0,1和元素x,即 {0,1,x}; 2、将这个集合中的最后一个元素即x,乘以x如果结果的度大于等于w,则将结果mod P(x)后加入集合;3、直到集匼有2^w个元素此时最后一个元素乘以x再mod P(x)的值等于1。

例如GF(2^4)含有16个元素,本原多项式为P(x)=x^4+x+1除了 0、1外,另外14个符号均由本原多项式生成

0 0 0

加法囷减法就是多项式计算中说的异或运算。

伽罗华域的运算上的多项式乘法其结果需要mod P(x),可以通过以下方式简化计算

1)a7 == 0,此时结果是一個小于指数小于8的多项式不需要取模计算。

虽然可以通过替换减少除法计算但还是过于复杂。尤其是在需要大量运算的场合比如图潒处理。于是牛人提出通过查表来减少计算

首先介绍一个概念,生成元

生成元是域上的一类特殊元素,生成元的幂可以遍历域上的所囿元素假设g是域GF(2^w)上生成元,那么集合 {g0 g1 , ……g(2^w-1) } 包含了域GF(2^w)上所有非零元素。在域GF(2^w)中2总是生成元

将生成元应用到多项式中, GF(2^w)中的所有多項式都是可以通过多项式生成元g通过幂求得即域中的任意元素a,都可以表示为a = g^k

GF(2^w)是一个有限域,就是元素个数是有限的但指数k是可以無穷的。所以必然存在循环这个循环的周期是2^w-1(g不能生成多项式 0)。所以当k大于等于2^w-1时g^k =g^(k%(2^w-1))。

 对于g^k = a有正过程和逆过程。知道指数k求a是正過程知道值a求指数k是逆过程。

因此需要构造正表和反表在GF(2^w)域上分别记为gflog和gfilog。gflog是将二进制形式映射为多项式形式gfilog是将多项式形式映射為二进制形式。

注意:多项式0 是无法用生成元生成的。g^0等于多项式1而不是 0

查表进行乘法和除法运算的例子


我要回帖

更多关于 伽罗华域的运算 的文章

 

随机推荐