本发明涉及一种基于一维查表法的低存储开销网络编码算法,属于网络编码
技术领域:
。
背景技术:
:网络编码技术是一种数据传输技术,其实质是在中间节点引入编码功能如有限域上的运算,把接收到的信息进行运算后再进行转发,在此过程中必须保证运算的封闭性。网络编码能提高网络的传输性能,在提升网络的吞吐率、实现网络的负载均衡、增加网络的顽健性与安全性等方面具有优势,但因为节点需要编码或解码,所以数据传输过程中也增加了编码运算代价,因此编码方案的选择也被广泛关注。网络编码方案可以分为线性网络编码和非线性网络编码,目前研究的最多的是线性网络编码,线性网络编码具有运算简单、操作方便的特点。线性网络编码中的随机线性网络编码rlnc,是在应用领域最有前景的网络编码技术。一般编码解码均是对有限域中的元素进行操作。随机线性网络编码rlnc在数据传输过程中,采用随机策略获取编码系数,信源节点和中间节点在编码时从有限域中生成随机编码矩阵对输入的数据进行编码,然后将编码后的数据包发送出去。rlnc的过程如下:设网络的最大理论传输容量为h,信源节点s发出的数据流为x=[x1,x2,x3…xh],则信源s与每个信宿节点之间均能建立h条不相交的路径。y=[y1,y2,y3…yh]表示各路径的最后一条链路上传输的数据流的集合,[mi1,mi2,mi3…mih]是随机编码矩阵,则该链路传输的数据流可以表示为:yi=mi1x1 mi2x2 … mihxh,故编码过程可表示为:解码是编码的逆过程。信宿节点收到经编码后的数据包,从中分离编码向量和信息向量,并以行向量的形式放入解码矩阵中。如果其解码矩阵是线性无关,满秩的,那么可以利用高斯消元法成功解码,否则解码失败。研究表明,只要有限域的尺寸足够大,便能保证信宿节点以很高的概率译出原数据。域上运算满足代数运算中的结合律、分配律和交换律以及加减乘除等运算规则。由于计算机中普遍采用二进制,故下面介绍如何在有限域gf(2n)上进行网络编码的运算。通过有限域的基元x的多项式可以对应于有限域gf(2n)中的元素,即有限域gf(2n)={0,1,x,1 x,1 x x2,…,1 x x2 … xn-1},一共有2n个元素,其中2为有限域中的生成元,域中的任意元素a,都存在一个k,使得a=2k。也可以用这些多项式的系数代表一个元素,即gf(2n)={00…00,00…01,00…10,…,11…11}。因此每个元素均为一位二进制数,可用多项式表示。有限域gf(2n)中传统运算规则为:①加法:②减法:a(x)-b(x)=a(x) b(x);③乘法:④求逆:a(x)-1,当且仅当a(x)*a(x)-1=1。其中f(x)为本原多项式,它必须满足f(x)|xe-1的最小正整数e为pn-1,其中加法和减法操作通常采用二进制的逐位异或来实现,乘法操作的实现步骤为:先用两个元素对应的多项式相乘,乘积结果再模上本原多项式,所得结果即为两者在有限域上运算的结果。任何两个元素四则运算的结果仍为域中的元素。目前网络编码在有限域上现有的实现方法有两种:第一种为有限域中的传统运算,即上面所介绍的方法。具有操作简单、不需要额外占用内存的优点,但在实现乘法和除法运算的过程中,具有模块化操作和条件分支(if…then)操作,如果进行任何两个元素的相乘都去执行这样的操作,代价显然是很高的,因此计算机在处理过程中大大的增加了计算成本,降低了运算的速度,使得编解码效率低下。第二种是一种基于二维查表的方法,是根据第一种方法进行改进的,即对于运算效率低的传统乘、除法,分别预先计算所有域内元素的乘、除结果,形成乘、除运算二维表,进行乘除运算时直接查表,一般情况下,有限域较小时,rlnc可能会出现解码不成功情况;有限域足够大时,例如当有限域为gf(214)时,信宿节点成功解码的概率可保证99%以上,但由于乘、除法需要建立两个二维表进行元素的存储,故空间开销会显著的增加,空间复杂度为o(n2),当设备存储空间较小时,实施该方法不可行。技术实现要素:本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于一维查表法的低存储开销网络编码算法,本发明方法基于随机线性网络编码rlnc,在有限域gf(2n)上,通过增加适度大的一维表的内存,且不额外增加其时间和空间复杂度,以解决现有技术中,传统乘除运算在处理过程中计算成本高、运算速度低、编解码效率低下的问题,以及基于二维查表法的乘除运算在保证高概率成功解码时内存开销过大的问题,实现有限域gf(2n)上的高效运算。为达到上述目的,本发明提供一种基于一维查表法的低存储开销网络编码算法,将传统基本运算中根据有限域内的元素预先制成的一维指数表和一维对数表分别进行扩充,从而消除乘法中的模运算操作和乘法中的条件分支操作,消除除法中的模运算操作和除法中的条件分支操作;运用随机线性网络编码在进行乘法运算和除法运算时直接查寻扩充后的一维指数表和一维对数表;通过增加一维指数表的空间和一维对数表的空间,不额外增加乘法算法的时间复杂度、除法算法的时间复杂度、乘法算法的空间复杂度和除法算法的空间复杂度,提高有限域上网络编码的效率。优先地,包括以下步骤:步骤一:有限域初始化的工作,预设本原多项式;确定有限域的尺寸;设置预先用来存储有限域内所有元素指数值的一维指数表的大小和有限域内所有元素离散对数值的一维对数表的大小,并为一维指数表和一维对数表分配空间,网络编码在进行乘法运算和除法运算时直接查询一维指数表和一维对数表;步骤二:在有限域gf(2n)上进行网络编码的运算,网络编码的运算包含信源编码的过程、中间节点编码的过程和信宿节点解码的过程;借助有限域进行数据编码操作和解码操作,有限域上运算满足代数运算中的结合律、分配律、交换律以及加减乘除运算规则;设计加法负元运算方法、求乘法逆元运算方法和指数运算方法来保证编码和解码的正常操作;步骤三:在设计有限域的初始化函数、反向初始化函数、指数运算函数以及打印输出域内元素函数等的过程中,核心目标是通过设计有限域上的乘法算法和有限域上的除法算法,来实现有限域gf(2n)上的高效运算。优先地,本原多项式用来构造有限域,同一个大小的有限域有多个不同的本原多项式;当预设本原多项式时,根据有限域上的运算需求保存gf(21)到gf(2n-1)对应的默认本原多项式或自行定义的本原多项式;设置一维指数表的大小和一维对数表的大小,并为一维指数表和一维对数表分配空间,然后采用向左移位和使用本原多项式取余的方式建立好所有的有限域内元素;为了消除乘法算法中的模运算操作和除法算法中的模运算操作,将一维指数表的大小扩大为原来的一维指数表的2倍。优先地,为了消除if条件分支,将一维指数表的大小扩充为原来的一维指数表的4倍,将一维对数表增加一个值,相对于原来的一维指数表所占用的空间,扩充后的一维指数表近似为额外占用了3倍的存储空间。优先地,在编码的过程中,随机线性网络编码在数据传输前不需要事先确定编码策略,而是由无线链路中的通信节点在数据传输过程中临时产生本地编码向量,各无线链路中的通信节点不知道其它无线链路中的通信节点的情况,本地编码向量是有限域中的随机数;信源节点和中间节点通过各路径随机产生的本地编码向量进行编码,并计算出全局编码向量,为了方便信宿节点的解码,在传输编码信息的同时,还必须传输相应的全局编码向量;解码是编码的逆过程,信宿节点收到经编码后的数据包,从数据包中分离全局编码向量和信息向量,全局编码向量和信息向量以行向量的形式放入解码矩阵中;如果全局编码向量和信息向量的解码矩阵是线性无关且满秩的,则利用高斯消元法解码,否则解码失败。优先地,基于随机线性网络编码在进行乘法运算和除法运算时,有限域中的元素是基于指数表示的。优先地,消除乘法中的求模运算操作包括以下步骤:x和y为不为0的数,x和y的离散对数为i和j,i和j的值在[0,q-1]范围内,所以i j在[0,2q-2]范围内,那么i和j相加后的模运算表示为:使用基于指数函数的形式表示i和j相加后的模运算,则得到:expf(i j)=expf((i j)%(q-1)),由于上式中,(i j)∈[0,2q-2],考虑i j超过一维指数表大小的情况,所以得出扩展的一维指数表expf[i]中的元素:expf[i]=expf[i%(q-1)]i∈[q,2q-2],一维指数表的下标i的取值范围从[0,q-1]扩充为[0,2q-2],使用扩充后的一维指数表直接查询元素x和y的对数相加后的下标对应的元素,无需再进行模运算操作。优先地,消除乘法中的条件分支操作包括以下步骤:考虑一维指数表中包括x=0的情况,将i设为2q大小,α2q=0,即expf[2q]=0,此后i∈[0,2q],相应地,logf[0]=2q,即可实现元素0在一维对数表中的映射,即将元素0保存进一维指数表内,并用一维对数表中的2q与元素0对应;i=logf[x]∈[0,2q],考虑到乘法运算中x与y的指数i和j的相加操作,以及除法运算中的i-j q-1操作,因此得到i=logf[x]∈[0,4q],满足(i j)>2q,便认为x或y至少有一个为零,那么乘法运算的结果便为零,即:expf[i]=0i∈[2q,4q],故一维指数表和一维对数表分别定义为:综上所述,一维对数表增加了logf[0]=2q这一个值。优先地,除法算法进行消除模运算操作和条件分支操作,具体步骤如下:消除模运算操作:当使用能够满足直接返回i-j q位置的扩展的一维指数表时,就无需进行模运算操作;消除条件分支操作:当使用二次扩展的一维指数表时,只要(i-j q-1)>2q,便认为x或y至少有一个为零,那么除法运算的结果便为零,无需进行if语句的判断。优先地,扩充后的一维指数表的大小为:有限域的阶×4 1,扩充后的一维对数表的大小为:有限域的阶 1;有限域上的任意两个元素的四则运算的结果仍为有限域中的元素。本发明所达到的有益效果:本发明方法基于随机线性网络编码rlnc,在有限域gf(2n)上,通过增加适度大的一维指数表和一维对数表的内存,将传统基本运算中根据有限域内的元素预先制成的一维指数表和一维对数表分别进行扩充,从而消除乘法中的模运算操作和乘法中的条件分支操作,消除除法中的模运算操作和除法中的条件分支操作;运用随机线性网络编码在进行乘法运算和除法运算时直接查寻扩充后的一维指数表和一维对数表;通过增加一维指数表的空间和一维对数表的空间,不额外增加乘法、除法算法的时间复杂度和空间复杂度,来降低用计算机处理时的计算成本,以解决现有技术中,传统乘除运算在处理过程中计算成本高、运算速度低、编解码效率低下的问题,以及基于二维查表法的乘除运算在保证高概率成功解码时内存开销过大的问题,可以提高有限域上编解码的效率,提升了乘法运算和除法运算效率的20%,实现有限域gf(2n)上的高效运算。附图说明图1是有限域初始化流程图;图2是本发明方法提出的乘法运算流程图;图3是随机线性网络编码过程图;图4是一个二维的随机线性网络编码过程图。具体实施方式以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。本发明基于有限域中传统乘除法运算的设计方案,提出了一种更高效的乘法运算和除法运算。为了完全消除传统乘除法运算中的模块化和条件分支操作,我们把预先用来分别存储在有限域内所有元素的expf和logf函数的所有可能值的一维指数表和一维对数表进行扩大,在乘法运算和除法运算时直接查一维指数表和一维对数表。通过增加适度大的表内存,且不额外增加其时间和空间复杂度,来降低用计算机处理时的计算成本,提高编解码的效率。本发明方法提出的乘法运算和除法运算的过程具体如下:(1)基于指数表示的乘法算法由于有限域中除了0的每个元素都可以用生成元α的幂来表示。例如设x=αi,y=αj,x、y∈gf(2n),则i是x相对于α的离散对数,j是y相对于α的离散对数。故可以定义指数函数expf来表示具有幂次值的元素。那么x可表示为:x=expf(i),其中x不为0,同理离散对数函数logf可以定义为:i=logf(x),其中x不为0。因此,我们可以基于生成元α计算expf和logf函数的所有可能值,并分别将所有可能值存储在一维指数表和一维对数表中,在进行乘法、除运算时可以通过直接查表得出运算结果。基于有限域上的传统乘法运算中,x和y的乘法函数mul(x,y)可以表示为:mul(x,y)=aiaj=ai j由于i j的结果会超出指数表的大小,所以我们需要额外的操作减小i j的结果。从生成元的性质来看,如果α2^n-1=1,设q=2n,则αq-1=1。故通过之前定义的指数函数和离散对数函数,乘法函数可以表示为:mul(x,y)=ai j=a(i j)%(q-1)=expf((logf(x) logf(y))%(q-1)其中,%表示模运算操作,q大小等于有限域元素的个数。可以看出该乘法运算的过程包括3个查表、1个加法和1个模运算,另外在算法的设计方案中,乘法算法是基于指数表示的,所以我们还需要考虑元素为0的情况,故乘法算法中还包含了一个if语句判断元素是否为零。由于从计算机的处理角度上看,模运算所需要的时间远远超过查表和加法所需的时间;if…then条件分支对乘法运算过程的吞吐量是有影响的,因为在很多情况下,元素x和y都是非零的,那么采用if条件分支判断的过程基本都是多余的,因此在保证能够处理大小为零的元素的情况下,乘法算法中应尽可能地消除if条件分支。为了解决这两个问题,本发明方法提出了一种乘法算法,其核心思想是:使用更大的一维指数表的空间来直接消除模运算和if语句的判断操作,具体操作如下所示:①消除模运算操作:对于非零的x和y,它们的离散对数i和j的值在[0,q-1]范围内,所以i j在[0,2q-2]范围内。那么,关于对数相加后的模运算,可以表示为:使用基于指数函数的形式可以得到:expf(i j)=expf((i j)%(q-1))由于上式中,(i j)∈[0,2q-2],考虑的是i j超过指数表大小的情况。所以我们可以得出扩展的指数表expf[i]中的元素:expf[i]=expf[i%(q-1)]i∈[q,2q-2]这样,指数表的下标i的取值范围便从[0,q-1]扩大为[0,2q-2],使用扩大后的指数表可以直接查询元素x和y的对数相加后的下标对应的元素,无需进行模运算。②消除条件分支操作:核心思想是在保证能够处理大小为零的元素的情况下,尽可能地消除if条件分支。在把x=0考虑进一维指数表后,将i设为2q大小,α2q=0,即expf[2q]=0。此后i∈[0,2q],相应地,logf[0]=2q,这样即可实现元素0在对数表中的映射,即将0保存进一维指数表内,并用对数表中的2q与之对应。那么现在i=logf[x]∈[0,2q],考虑到乘法运算中x与y的指数i和j的相加操作,以及除法运算中的i-j q-1操作(除法运算中做详细介绍),最终的i=logf[x]∈[0,4q]。所以只要(i j)>2q,便可以认为x或y至少有一个为零,那么乘法运算的结果便为零,即:expf[i]=0i∈[2q,4q]故最终的指数表和对数表分别定义为:综上所述,本发明方法提出的乘法算法,通过适当地增加两个一维表的大小,消除了传统乘法算法中的模运算操作,代价是将原来的指数表扩大为原来的二倍;又消除了if条件分支,代价是将原来的指数表扩大为原来的四倍,对数表增加了logf[0]=2q这一个值。本发明方法提出的乘法算法的流程如表1所示:表1本发明方法提出的乘法算法(2)基于指数表示的除法算法基于有限域上的传统除法运算中,一般情况下,x和y的除法函数div(x,y)可以表示为:div(x,y)=αi÷αj=αiα-j考虑到如果i<j,那么i-j的运算结果会小于零,就无法在指数表中查询,所以我们需要再进行一步加法操作,使指数大于零。从生成元的性质来看,α2^n-1=1。设q=2n,则αq-1=1。因此:α-j=α-jαq故除法函数可进一步表示为:div(x,y)=αiα-j=αiα-jαq=αi-j q又考虑到i-j q的结果会超出指数表的大小,所以我们需要额外的操作减小它,这一步同最初的乘法运算中的模运算操作。因此可以得出基于指数表示的除法函数为:div(x,y)=ai-j q=a(i-j q)%(q-1)=expf(logf(x)-logf(y) (q-1))%(q-1))其中,%表示模运算操作,q大小等于有限域元素的个数。由于指数运算和离散对数运算可以直接进行表查找,因此除法运算的过程也包括3个查表、1个加法和1个模运算。考虑到元素可以是0,所以除法算法中也还包含了一个if语句判断元素是否为零。但在除法计算中,y不能为0,这需要在调用此函数之前得到保证,这便是传统的除法算法。这里的指数表采用的是未扩展的指数表。如果求x的乘法逆元,则调用div(1,x)求得的结果即是。有限域中传统除法算法存在的问题与传统乘法算法的问题一样,传统除法算法中也包含消耗计算成本的模运算和影响计算吞吐量的if…then条件分支,因此本发明方法中所提出的除法算法也进行了消除模运算操作和条件分支操作,目的是降低计算成本,提高编解码的效率,具体操作如下:①消除模运算操作:当使用能够满足直接返回i-j q位置的扩展指数表时,就无需进行模运算操作。②消除条件分支操作:当使用二次扩展的指数表时,只要(i-j q-1)>2q,便可以认为x或y至少有一个为零,那么除法运算的结果便为零,无需进行if语句的判断。本发明方法所使用的除法算法流程如表2所示:表2本发明方法提出的除法算法本发明方法提出的乘、除法算法在传统乘、除算法的基础上,扩大一维指数表为原来的4倍,一维对数表增加一个值,近似为额外占用了3倍的存储空间,但是它进行乘法(除法)运算的效率胜过传统运算,所以我们可以认为本发明方法提出的乘除法算法通过适当的增加对空间的占用,提升了运算效率,空间占用的大小为指数表和对数表的大小之和。本发明方法所提出的乘、除法运算在提升编解码运算效率的同时,它们的时间复杂度和空间复杂度两个方面维持原状。在时间复杂度方面,传统乘、除算法包含一次加法运算、一次模运算、三次查表操作,所查表皆为顺序表,故其时间复杂度为o(1),二维查表法的时间复杂度为o(1),本发明方法所提出的乘、除算法中包含一次加法运算、三次查表操作,所查表皆为顺序表,所以它的时间复杂度为o(1)。在空间复杂度方面,传统乘、除算法是建立两个一维数组进行元素的存储,其长度均为n,所以它们的时间复杂度为o(n),二维查表法则建立两个二维数组进行元素的存储,其大小均为n2,所以它的时间复杂度为o(n2),而本发明方法中所提出的乘、除算法也是建立两个一维数组进行元素的存储,但其长度分别为4n和n 1,所以它们的时间复杂度为o(n),其中n为有限域的尺寸。1、为了实现有限域gf(2n)上的算术运算,一般情况下,我们需要先进行有限域初始化的工作,下面将结合图1所示的初始化流程图来说明如何进行有限域的初始化。(1)预设本原多项式本原多项式主要用来构造有限域,同一个大小的有限域可以有多个不同的本原多项式。预设本原多项式的时候,可以根据有限域上的运算需求保存gf(21)到gf(2n-1)对应的默认本原多项式,也可以自己定义本原多项式。一般情况下,使用如表3所示的默认本原多项式,该表只列出了gf(21)到gf(28)的本原多项式。举例来说,根据表3,假设预先设置gf(21)到gf(28)的默认本原多项式,那么当去初始化gf(24)这个有限域时,如果不使用自己构造的本原多项式,就默认使用0x00000013表示的本原多项式,对应的二进制形式为10011,每一位上的1或0分别对应了多项式中的系数,那么其真实的多项式就是x4 x 1。表3不同有限域中的默认本原多项式(2)设置运算中使用的n(n>1)预设本原多项式后,继而会去判断输入n的大小,此处n便是gf(2n)中的n,n的大小不能超过所预设的有限域的范围,例如,假设若本次设计中预设本原多项式为gf(21)到gf(28)的相关运算,那么当n大于8时,则不可进行有限域上的后续相关运算。(3)设置有限域的尺寸有限域的尺寸由左移操作1<<m决定,m≤n。例如:m等于4时,有限域的尺寸=1<<4=16。(4)计算并设置指数表和对数表由于本发明方法提出的乘法算法和除法算法是通过扩大原来的一维指数表,来直接消除传统乘法算法和除法算法运算中的模运算和条件分支(if…then)操作,如图2所示,进行乘法运算时,可通过一维对数表查询任意两个元素x和y的离散对数,根据离散对数相加后的和,通过直接查寻扩充的一维指数表就可以得到乘法运算结果,即表1所示的算法流程,而借助于一维指数表和一维对数表进行除法运算流程如表2所示。其中消除传统乘法算法中的模运算操作,代价是将一维指数表扩大为原来的一维指数表的二倍,消除if条件分支的代价是一维指数表扩大将原来的一维指数表的四倍,当把x=0考虑进指数表后,为了实现元素0在对数表中的映射,即expf[2q]=0,相应地,logf[0]=2q,即可将0保存进一维指数表内,并用一维对数表中的2q与之对应,其中q为有限域中元素的个数。因此本发明方法中设置的一维指数表的大小为:有限域的阶×4 1,一维对数表的大小为:有限域的阶 1。这也是最重要的一步,是实现本发明方法提出的乘除算法的重要步骤。为其分配空间后,然后采用向左移位、使用本原多项式取余的方式建立好所有的域内元素。例如表4,表5是在有限域gf(24)上根据本发明方法提出的乘、除法算法而设置的一维对数表和一维指数表。其中一维对数表中的值是有限域中元素相对于生成元的离散对数。在乘法运算中,一维指数表中的值是根据任意两个元素的离散对数,通过相加后的离散对数和计算出的两元素的乘法结果,而在除法运算中,与乘法运算中使用的一维指数表的不同之处在于:离散对数和代表的是i-j q的结果,其中i,j分别代表任意两元素的离散对数,q大小等于有限域元素的个数。表4本专利中所用的一维对数表域中元素0123456789101112131415一维对数表3201428510314976131112表5本专利中所用的一维指数表(5)本发明方法的运算过程实现加法、减法运算对应于二进制的逐位异或运算,乘法、除法运算分别使用表1、表2中所提出的方法。有限域中任何两个元素的四则运算的结果仍为有限域中的元素。例如,要计算有限域gf(24)中元素1和4的相乘结果时,根据表1所示的乘法运算流程,首先通过表4查询出域中元素1在一维对数表中的离散对数i为0,元素4在表4中对应的离散对数j为2,接着通过表5查询在一维指数表中离散对数和k=i j=2所对应的乘法运算结果,可以看出1*4在有限域上的结果为4,其仍为有限域中的元素。2、有限域gf(2n)上的网络编码运算rlnc在数据传输前不需要事先确定编码策略,而是由各节点在数据传输过程中临时产生本地编码向量,各节点不知道其它节点的情况,其产生的本地编码向量是有限域中的随机数。节点通过各路径随机产生的本地编码向量进行编码,并计算出全局编码向量,为了方便信宿节点的解码,在传输编码信息的同时,还必须传输相应的全局编码向量,编码信息即原始数据经过编码之后的数据。其中本地编码向量表示的是链路上传输的信息流与该链路的输入链路传输的信息流之间的映射关系,全局编码向量表示的是链路上传输的信息流与信源发送的信息流之间的映射关系。下面我将根据图3、图4介绍网络编码的具体过程。(1)节点编码过程采用rlnc进行数据传输时,各路径上的系数向量即全局编码向量和信源发送的源数据进行同步传输,各个系数向量[mi1,mi2,…,mih]在足够大的有限域gf(2n)中随机选取,每次经过一个节点进行编码时,系数向量根据随机选取的映射关系进行更新,各节点映射关系的选取是相互独立的。如图3所示,信源s有若干个数据组x=[x1,x2,…,xh]t可以认为是要给信宿节点t的源数据包,对要传输的源数据包进行随机线性网络编码。然后生成新的编码数据块其中编码数据块yj占用内存与xi占用的内存完全相同。若该节点不是信宿节点,则需要对新的编码包再次进行rlnc处理。例如某一中间节点c收到来自d条路径的编码数据包,需要重新对这些编码包进行再编码。记这组编码包为y1,y2,…,yd,这些编码包都带着原本路径上经过时所使用的编码向量和源数据包,此时编码只需要知道该编码节点的输出路径数l,然后随机从有限域gf(2n)中选取含有d个元素×l条路径数量的编码向量,之后将收到的编码数据包与该新的编码向量进行矩阵相乘运算,即可得到新的编码数据包,重复此过程将编码数据包进行数据传输,直至数据传输至信宿节点。最终信宿节点t收到的输入信息将包含输入路径对应的全局编码向量和信源发送的源数据包。(2)信宿节点解码过程解码是编码的逆过程,信宿节点收到经过编码后的数据包,从中分离编码向量和信息向量,并以行向量的形式放入解码矩阵中。如果其编码矩阵是线性无关,满秩的,那么可以利用高斯消元法便能够成功解码,否则解码失败。例如当一个信宿节点能接收到m个编码数据包,译码然后产生信源节点s发出的h个源数据包x=[x1,x2,…,xh]t,根据线性方程组求解条件可知,其要求该线性方程组是有h个未知数和m个方程的线性方程组,并且要求方程有唯一解的必要条件是m≥h,即收到的编码数据包个数至少为源数据包的个数,由于我们使用的网络编码方案是rlnc,编码向量是从有限域gf(2n)中随机选取的,故只要能保证各个信宿对应的编码矩阵是满秩的,即线性无关,则信宿就可以准确的恢复出原始发送的信息。举例来说,如图4所示,这是基于有限域gf(24)上的一个二维随机线性网络编码例子,其中信源节点s欲发送消息给信宿节点t1和t2,假设要发送的数据x1=5,x2=7,各节点的本地编码分别为:ku=(β5β6),kv=(β7β8),节点通过各路径随机产生的本地编码向量进行再编码,并计算出所有边的全局编码向量分别为:其中β1,β2……βn是从有限域gf(24)中独立随机选取的元素,本次运算假设β1,β2……βn依次随机选取的元素值为1,2,…,12。下面是具体的网络编码过程:①信源节点编码过程:信源节点s首先产生编码包:y1和y2。假设该节点本地编码系数为(β1,β2,β3,β4),在有限域gf(24)上随机获取的值为(1,2,3,4),那么y1,y2的运算结果分别为:y1=x1 2x2=(1*5 2*7)=11和y2=3x1 4x2=(3*5 4*7)=0。该编码过程中加法通过二进制中的逐位异或操作进行运算,乘法运算使用表1中所提出的方法,通过查询表4、表5所构建的一维指数表和对数表即可得到乘法运算结果。之后源节点s将y1及其本地编码向量(12)(源节点,本地编码向量就是全局编码向量)打包成一个编码包发送给u;将y2及其编码向量(34)发送给v。②中间节点再编码过程:以代表性的中间节点w为例,网络中其它中间节点u、v类似。从图4可知,中间节点w接收到来自节点u、v的两个编码包及其对应的编码向量:y4=(β6β1)x1 (β6β2)x2和y5=(β7β3)x1 (β7β4)x2,通过计算可知y4=6*5 12*7=15,y5=9*5 15*7=0,之后该中间节点需要再编码产生编码包y7和y8发送给下一节点,假设生成的本地编码系数为(β9,β10,β11,β12),则编码的结果为y7=β9*y4 β10*y5=6x1 10x2=13 3=14,y8=β11*y4 β12*y5=9x1 5x2=11 8=3,全局编码的两个系数分别为最后中间节点w将y7和其全局编码向量fwt1打包成一个编码包发送给t1;将y8和其编码向量fwt2发送给t2。③信宿节点解码过程:信宿节点的解码过程中的运算也基于有限域gf(24),以信宿节点t1为例,t2类似。t1接收到两个编码包y3和y7及其全局编码系数fut1和fwt1,分离编码向量和信息向量,并以行向量的形式放入解码矩阵中。从下列方程组中可以看出编码矩阵是线性无关,满秩的,则通过高斯消元法解下列方程组,即可解码得出信源s发出的源数据包:x1=5,x2=7。其中y3,y7根据编码运算规则可以得出值分别为1,14。3、在实现rlnc操作的过程中,除了包含(1)(2)中所述的初始化有限域操作、在有限域上通过基础运算进行网络编码的操作之外,还需要打印输出域内元素的功能,以及空间清理的操作,目标是能够直接用于网络通信的编解码操作中,提高编解码的效率,实现gf(2n)有限域上的高效运算。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域:
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页1 2 3 
技术特征:1.一种基于一维查表法的低存储开销网络编码算法,其特征在于,将传统基本运算中根据有限域内的元素预先制成的一维指数表和一维对数表分别进行扩充,从而消除乘法中的模运算操作和乘法中的条件分支操作,消除除法中的模运算操作和除法中的条件分支操作;运用随机线性网络编码在进行乘法运算和除法运算时直接查寻扩充后的一维指数表和一维对数表;通过增加一维指数表和一维对数表的空间,不额外增加乘法算法的时间复杂度、除法算法的时间复杂度、乘法算法的空间复杂度和除法算法的空间复杂度,提高有限域上网络编码的效率。
2.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,包括以下步骤:
步骤一:有限域初始化的工作,预设本原多项式;确定有限域的尺寸;设置预先用来存储有限域内所有元素指数值的一维指数表的大小和有限域内所有元素离散对数值的一维对数表的大小,并为一维指数表和一维对数表分配空间,网络编码在进行乘法运算和除法运算时直接查询一维指数表和一维对数表;
步骤二:在有限域gf(2n)上进行网络编码的运算,网络编码的运算包含信源编码的过程、中间节点编码的过程和信宿节点解码的过程;
借助有限域进行数据编码操作和解码操作,有限域上运算满足代数运算中的结合律、分配律、交换律以及加减乘除运算规则;
设计加法负元运算方法、求乘法逆元运算方法和指数运算方法来保证编码和解码的正常操作;
步骤三:在设计有限域的初始化函数、反向初始化函数、指数运算函数以及打印输出域内元素函数等的过程中,核心目标是通过设计有限域上的乘法算法和有限域上的除法算法,来实现有限域gf(2n)上的高效运算。
3.根据权利要求2所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,本原多项式用来构造有限域,同一个大小的有限域有多个不同的本原多项式;
当预设本原多项式时,根据有限域上的运算需求保存gf(21)到gf(2n-1)对应的默认本原多项式或自行定义的本原多项式;
设置一维指数表的大小和一维对数表的大小,并为一维指数表和一维对数表分配空间,然后采用向左移位和使用本原多项式取余的方式建立好所有的有限域内元素;
为了消除乘法算法中的模运算操作和除法算法中的模运算操作,将一维指数表的大小扩大为原来的一维指数表的2倍。
4.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,为了消除if条件分支,将一维指数表的大小扩充为原来的一维指数表的4倍,将一维对数表增加一个值,相对于原来的一维指数表所占用的空间,扩充后的一维指数表近似为额外占用了3倍的存储空间。
5.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,
在编码的过程中,随机线性网络编码在数据传输前不需要事先确定编码策略,而是由无线链路中的通信节点在数据传输过程中临时产生本地编码向量,各无线链路中的通信节点不知道其它无线链路中的通信节点的情况,本地编码向量是有限域中的随机数;
信源节点和中间节点通过各路径随机产生的本地编码向量进行编码,并计算出全局编码向量,为了方便信宿节点的解码,在传输编码信息的同时,还必须传输相应的全局编码向量;
解码是编码的逆过程,信宿节点收到经编码后的数据包,从数据包中分离全局编码向量和信息向量,全局编码向量和信息向量以行向量的形式放入解码矩阵中;
如果全局编码向量和信息向量的解码矩阵是线性无关且满秩的,则利用高斯消元法解码,否则解码失败。
6.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,运用随机线性网络编码在进行乘法运算和除法运算时,有限域中的元素是基于指数表示的。
7.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,消除乘法中的求模运算操作包括以下步骤:
x和y为不为0的数,x和y的离散对数为i和j,i和j的值在[0,q-1]范围内,所以i j在[0,2q-2]范围内,那么i和j相加后的模运算表示为:
使用基于指数函数的形式表示i和j相加后的模运算,则得到:
expf(i j)=expf((i j)%(q-1)),
由于上式中,(i j)∈[0,2q-2],考虑i j超过一维指数表大小的情况,所以得出扩展的一维指数表expf[i]中的元素:
expf[i]=expf[i%(q-1)]i∈[q,2q-2],
一维指数表的下标i的取值范围从[0,q-1]扩充为[0,2q-2],使用扩充后的一维指数表直接查询元素x和y的对数相加后的下标对应的元素,无需再进行模运算操作。
8.根据权利要求1所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,消除乘法中的条件分支操作包括以下步骤:
考虑一维指数表中包括x=0的情况,将i设为2q大小,α2q=0,即expf[2q]=0,此后i∈[0,2q],相应地,logf[0]=2q,即可实现元素0在一维对数表中的映射,即将元素0保存进一维指数表内,并用一维对数表中的2q与元素0对应;
i=logf[x]∈[0,2q],考虑到乘法运算中x与y的指数i和j的相加操作,以及除法运算中的i-j q-1操作,因此得到i=logf[x]∈[0,4q],
满足(i j)>2q,便认为x或y至少有一个为零,那么乘法运算的结果便为零,即:
expf[i]=0i∈[2q,4q],
故一维指数表和一维对数表分别定义为:
综上所述,一维对数表增加了logf[0]=2q这一个值。
9.根据权利要求3所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,除法算法进行消除模运算操作和条件分支操作,具体步骤如下:
消除模运算操作:当使用能够满足直接返回i-j q位置的扩展的一维指数表时,就无需进行模运算操作;
消除条件分支操作:当使用二次扩展的一维指数表时,只要(i-j q-1)>2q,便认为x或y至少有一个为零,那么除法运算的结果便为零,无需进行if语句的判断。
10.根据权利要求4所述的一种基于一维查表法的低存储开销网络编码算法,其特征在于,扩充后的一维指数表的大小为:有限域的阶×4 1,扩充后的一维对数表的大小为:有限域的阶 1;有限域上的任意两个元素的四则运算的结果仍为有限域中的元素。
技术总结本发明公开一种基于一维查表法的低存储开销网络编码算法,将传统基本运算中一维指数表和一维对数表分别进行扩充,从而消除乘法中的模运算操作和条件分支操作,消除除法中的模运算操作和条件分支操作;基于随机线性网络编码进行乘法运算和除法运算时直接查寻扩充后的一维指数表和一维对数表。通过适当增加一维指数表和一维对数表的空间,不额外增加乘法算法的时间复杂度、除法算法的时间复杂度、乘法算法的空间复杂度和除法算法的空间复杂度,提高有限域上编码的效率。以解决传统乘除运算计算成本高、运算速度低和编解码效率低下的问题,以及基于二维查表法的乘除运算在保证高概率成功解码时内存开销过大的问题,实现有限域GF(2n)上的高效运算。
技术研发人员:殷俊;温家欣;张兆维;陈思光;王磊;张登银
受保护的技术使用者:南京邮电大学
技术研发日:2020.11.16
技术公布日:2021.03.12