首页> 中国专利> 用于对已编码符号进行重编码的网络重编码方法和设备

用于对已编码符号进行重编码的网络重编码方法和设备

摘要

本发明公开了一种网络重编码设备(D,)旨在对要发送到与网络相连的至少一个通信设备(CE1)的已编码符号进行重编码。这种网络重编码设备(D)包括重编码装置(RM),被布置用于通过将所选择的输入节点和/或具有已知值的输出节点相结合来对由LT码符号所定义的输出节点进行重编码,以生成定义准备要发送的已产生输出节点的新LT码符号,该LT码符号表示已编码符号,并且分别表示对其值已被发现的已解码符号进行定义的输入节点之间的XOR布尔操作的结果,所述输出节点与所述输入节点在Tanner图中相链接。

著录项

  • 公开/公告号CN101860413A

    专利类型发明专利

  • 公开/公告日2010-10-13

    原文格式PDF

  • 申请/专利权人 汤姆森许可贸易公司;

    申请/专利号CN201010105023.0

  • 申请日2010-01-27

  • 分类号H04L1/00;

  • 代理机构中科专利商标代理有限责任公司;

  • 代理人王波波

  • 地址 法国伊西莱穆利诺

  • 入库时间 2023-12-18 01:05:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-27

    未缴年费专利权终止 IPC(主分类):H04L1/00 授权公告日:20140730 终止日期:20170127 申请日:20100127

    专利权的终止

  • 2014-07-30

    授权

    授权

  • 2012-01-04

    实质审查的生效 IPC(主分类):H04L1/00 申请日:20100127

    实质审查的生效

  • 2010-10-13

    公开

    公开

说明书

技术领域

本发明涉及符号数据处理,以及更具体地,涉及对接收到的已编码符号进行解码,并对要发送到与网络相连的通信设备的符号数据进行编码。

这里,“符号”指的是数据块或数据分组。

背景技术

如本领域技术人员所知,数据在通信设备之间进行传输期间可能发生丢失或损坏。在这种情况下,接收机可以要求发送方再次发送丢失或损坏的数据,或者可以在一开始就发送两份数据。另一种解决方案是通过码,并且更具体地通过容错码,来对要发送的数据进行编码。在这种情况下,不必等到已接收到内容的每一个数据便能够对其解码,这是因为只需要这些内容的(足够的)一部分来重建发送方所发送的所有数据。

在编码方法之中,被称为“网络编码”的方法提供了若干优势。这种编码方法是由Rudolf Ahlswede等人在“Network informationflow”,IEEE Transactions On Information Theory 2000中提出的。例如,这种编码方法可用在无线和/或互联网网络中。网络编码允许网络的内部(或中间)路由器在接收到数据a和b时发送c=f(a,b)类型的数据组合,而不是仅转发接收到的数据a或b。因此,网络编码使得可以在网络上达到最大流量,而路由则不够强大以至于无法在一些网络中达到最大流量。然而,这要求路由器能够在发送接收到的数据之前,对接收到的数据进行计算,以对其进行编码,以及最终的接收机能够对其接收到的已编码数据进行解码。

由于已经证明了计算可以达到最大流量的函数f()的集合是NP-Hard的,已经提出了一些概率统计方案。

例如,T.HO等人已经在“A random linear network codingapproach to multicast”,IEEE Transaction on Information Theory 2006中提出了一种使用无比率随机线性网络编码(RLNC)的方案。该方案具有若干优势:实现起来较为简单,并可以是完全分布式的。根据该方案,网络中的每一个路由器将其接收到(输入)的数据的随机线性组合转发到其网络中的其它路由器。接收机还接收系数矩阵和当该矩阵是可逆时允许接收机通过Gauss或Gauss-Jordan消元法对接收到的数据进行解码的数据。

在网络编码允许独立地产生符号时,可以产生无限的符号流。然而,不仅在编码期间,在解码期间随机线性网络编码也涉及复杂的计算。此外,当RLNC操作于Gallois域GF(2k)时,其不适于在缺少有限域上的算法的通用处理器上进行编码和解码。

N.Thomos和P.Frossard已在“Collaborative video streaming withRaptor network coding”,ICME 2008中提出使用Raptor编码的另一种方案。该方案引入了重编码方法,该重编码方法是通过XOR布尔操作的方式将一对已编码符号合并。然而,该方案在解码期间还要求高斯消元法,因而raptor网络编码失去了其在性能和属性方面的优势。

Puducheri S.等人已在“Coding Schemes for an erasure relaychannel”Proc.IEEE International Symposium on Information Theory,ISIT 2007,24 June 2007,pages 666-670中提出了另一种方案。

发明内容

因此,本发明的目的是提出一种使用被称为Luby Transform码(或LT码)的无比率码的网络重编码方法和设备,LT码的结构允许使用低复杂度的编码器和解码器。

应该想到,LT码是Michael Luby在IEEE Symposium onFoundations of Computer Science 2002中所提出的奇偶校验码。LT码可以由在输入节点与输出节点之间建立对应关系的Tanner图来表示。Tanner图的每一个输出节点是要解码的已编码符号(或LT码符号(或为LT码字)),该已编码符号是从网络接收到的,并且(通过边界)与一个或更多个被称为输入节点的未编码(或已解码)的要发现的符号相链接,并且Tanner图的每一个输出节点表示这些输入节点之间的XOR布尔操作的结果。因此,当通信设备(例如,路由器或用户终端)的解码器接收到具有表示对应链路的数据的已编码符号(即,LT码符号)时,这些已编码符号构成了Tanner图的输出节点,Tanner图的输出节点必须例如通过“置信传播(BP)解码方法”来解码,以产生构成Tanner图的输入节点的未编码(或已解码)的符号。输出节点与输入节点之间的链路(或边界)数限定了该输出节点的度。因此,可以构建Tanner图的输出节点的度的分布。LT码要通过置信传播解码方法有效地进行解码的能力取决于其具体的度的分布。由于LT码的度的分布是所谓的“鲁棒孤子”分布,因而这种效率更加重要。

本发明提供了一种网络重编码方法,旨在对要发送到网络的至少一个通信设备的已编码符号(或数据)进行重编码,并且包括以下步骤:通过将所选择的输入节点和/或具有已知值、并被称为部分解码节点的输出节点进行合并来对LT码符号所定义的输出节点进行重编码,以生成定义准备要发送的已产生输出节点的新LT码符号,该LT码符号表示已编码符号,并且分别表示对其值要被发现的已解码符号进行定义的输入节点之间的XOR布尔操作的结果,该输出节点与该输入节点在Tanner图中相链接。

根据本发明的方法可以包括单独考虑或合并考虑的附加特征,特别是:

-可以通过部分解码节点之间的XOR布尔操作来合并该部分解码节点;

-可以通过在已产生输出节点的度的当前分布的度之中,确定与第一被选参考分布同样的度具有最大差的度来开始,并且这使得能够生成具有该度的已产生输出节点,然而可以通过合并至少一个部分解码节点(即,在内部重编码步骤期间临时产生的节点)来生成具有该度的已产生输出节点;

--可以通过所选试探法确定一个度,以便能够生成具有该度的已产生输出节点;

--在已经生成已产生输出节点后,可以将输入节点的当前分布与第二被选参考分布进行比较,以确定至少一个输入节点是否已被过多地用于生成已产生输出节点,并且在肯定的情况下,如果该输入节点允许在已产生输出节点与链接到所述已产生输出节点的输入节点合并时使已产生输出节点的度保持不变,那么可以用过少使用的输入节点来代替所述过多地用于所述已产生输出节点的输入节点的至少一个,以归一化输入节点的当前分布;

---可以将已产生输出节点与包括所述过多使用的输入节点、并具有等于2的度的输出节点进行合并;

--在己生成准备发送的已产生输出节点后,可以对已产生输出节点的度的当前分布和输入节点的当前分布进行更新;

--该探索法可以在于:检查要产生的输出节点的度是否低于或等于包括已解码输入节点和具有至少一个相邻节点(即,其在Tanner图中链接到的输出节点)的输入节点在内的覆盖的输入节点的数目;

---该试探法还可以在于:检查条件dΣ1dk·n(k)是否被验证,其中,d是所确定的要产生的输出节点的度,以及n(k)是度k小于已知的d的部分解码节点的数目。

本发明还提供了一种网络重编码设备,旨在对要发送到网络的至少一个通信设备的已编码符号(或数据)进行重编码,并包括重编码装置,布置用于通过将所选择的输入节点和/或具有己知值并被称为部分解码节点的输出节点相合并来对由LT码符号所定义的输出节点进行重编码,以生成定义准备要发送的已产生输出节点的新LT码符号,所述LT码符号表示已编码符号,并且分别表示对其值已被发现的已解码符号进行定义的输入节点之间的XOR布尔操作的结果,所述输出节点与所述输入节点在Tanner图中相链接。

根据本发明的网络重编码设备可以包括单独考虑或合并考虑的附加特征,特别是:

-其重编码装置可以布置用于通过执行部分解码节点之间的XOR布尔操作来合并部分解码节点;

-其重编码装置可以布置用于在已产生输出节点的度的当前分布的度之中,确定与第一被选参考分布同样的度具有最大差的度,并且这使得能够生成具有该度的已产生输出节点,然后用于合并至少一个部分解码节点,以生成具有该度的已产生输出节点;

--其重编码装置可以布置用于应用所选的试探法来确定一个度,以便能够生成具有该度的已产生输出节点;

--其重编码装置可以布置用于:在已生成已产生输出节点后,将输入节点的当前分布与第二被选参考分布进行比较,以确定至少一个输入节点是否已被过多地用于生成已产生输出节点,并且在肯定的情况下,如果该输入节点允许已产生输出节点与链接到所述已产生输出节点的输入节点时合并时使所述已产生输出节点的度保持不变,那么用过少使用的输入节点来替换过多地用于已产生输出节点中的输入节点的至少一个,以归一化输入节点的当前分布;

---其重编码装置可以布置用于将已产生输出节点与包括过多使用的输入节点、并具有等于2的度的输出节点进行合并;

---其重编码装置可以布置用于将已产生输出节点与包括两个过多使用、并具有等于1的度的输入节点在内的输出节点进行合并;

--其重编码装置可以布置用于在已生成准备发送的已产生输出节点后,对已产生输出节点的度的当前分布和输入节点的当前分布进行更新;

--其重编码装置可以布置用于应用试探法,该试探法在于:检查要产生的节点的度是否低于或等于包括已解码输入节点和具有至少一个相邻节点的输入节点在内的覆盖的输入节点的数目;

---其重编码装置可以布置用于应用试探法,该试探法还在于:检查条件dΣ1dk·n(k)是否被验证,其中,d是所确定的要产生的输出节点的度,以及n(k)是度k的部分解码节点的数目,k小于已知的d。

本发明还提供了一种解码器,旨在装备可连接到网络的通信设备,并且包括解码装置,布置用于:

-将所选解码方法应用到接收到的由LT码符号定义的输出节点,以得到其对应的链接到的输入节点,该LT码符号表示已编码符号,并且分别表示对其值已被发现的已解码符号进行定义的输入节点之间的XOR布尔操作的结果,该输出节点与该输入节点在Tanner图中相链接,以及

-存储定义了输入节点和输出节点的数据,该数据与对这些输入节点和输出节点与同一Tanner图中的其它输出节点和输入节点所具有的链路的数目进行表示的度相对应(换言之,维持允许对所选度的节点进行随机访问的索引)。

该解码器还可以包括以上所呈现的类型、并且耦合到其解码装置的网络重编码设备。

该解码器还可以进一步包括检测装置,布置用于在存在要解码的输出节点的情况下,确定其解码装置先前是否已经接收到要解码的输出节点,并且在肯定的情况下,产生消息,以通过信号通知要解码的输出节点先前已经被接收到(并且先前很有可能是在解码步骤期间获得的),并且不必再次将其插入Tanner图。

附图说明

在对此后详细的说明书和附图进行研究后,本发明的其它特征和优势将变得显而易见,在附图中:

图1示意性且功能性地示出了通过网络彼此连接、并且每一个都包括编码器的三个用户通信设备,以及根据本发明的解码器的实施方式的示例,

图2示意性地示出了根据本发明的解码器的Tanner图,

图3是示出度的鲁棒孤子分布(黑色)的示例和实际(或当前)计算的产生的输出节点的度的分布(灰色)的示例的图,

图4是示出输入节点的均匀分布(水平线)的示例和所产生的输入节点的当前(呈现的)分布(黑色)的示例的图,以及

图5示意性地示出了允许以度2的输出节点对所产生的度4的输出节点进行改善的方法子步骤。

具体实施方式

附图不仅可以用于使得本发明变得完整,如果需要的话,也可以对本发明的定义做出贡献。

本发明的目的是提供一种网络重编码方法和对应的网络重编码设备(D),旨在对LT码符号进行重编码,以便允许在通过网络彼此连接的通信设备中使用低复杂度的编码器和解码器。

在随后的描述中,将考虑到网络是其中通信设备(CEi)能够至少以广播或ad-hoc模式彼此发送内容的移动(或蜂窝,或无线)通信网络(CN)。然而,本发明不限于这种网络。实际上,值得注意的是,如果网络允许通信设备以对等(P2P)模式彼此通信,则该网络也可以是有线(或固定)类型的,例如DSL网络或者光纤网络,不然就是电缆网络。

此外,只要能够彼此建立通信,通信设备(CEi)可以是意类型的。因此,假定通信设备(CEi)包括了通信调制解调器(或任何等效的通信装置),则通信设备(CEi)可以是路由器、固定的个人计算机、膝上电脑、内容接收机(例如,位于用户房屋中的家庭网关或机顶盒(STB))、移动或蜂窝电话、固定电话、或个人数字助(PDA)。

在随后的描述中,将考虑用户设备(CEi)属于用户,并且是移动电话。在图1中仅示出了三个移动电话CE1到CE3(i=1 to 3),然而在移动网络中,通常有多得多的通信设备能够彼此交换至少部分编码内容。

在所示出的示例中,每一个移动电话CEi包括经典型编码器ED和根据本发明的解码器DC。然而重要的是,应该注意到,一些通信设备CEi,特别是初始提供内容的那些通信设备CEi,可以仅包括经典型的编码器ED,并有可能包括经典型的解码器,而其他一些通信设备CEi,特别是接收和转发内容的那些通信设备CEi,可以仅包括根据本发明的解码器DC或适于根据本发明的经典型的解码器、以及根据本发明的网络重编码设备D。

这里,“经典型的编码器”指的是能够对未编码的(内容)数据(或符号(内容)数据)进行编码以产生LED码符号的编码器。此外,这里的“经典型的解码器”指的是能够通过已知的并且经典的解码方法对经典型的编码器ED或根据本发明的网络重编码设备D所产生的LT码符号进行解码的解码器。此外,“根据本发明的解码器”指的是新型解码器,即,能够通过已知并且经典的解码方法对LT码符号进行解码,并适于简化其本地耦合的或包括的、根据本发明的网络重编码设备D的操作。在随后的描述中,作为非限制的示例将考虑到解码方法是所谓的“置信传播(BP)解码方法”。然而,本发明不限于这种解码方法。

如图所示,根据本发明的网络重编码设备D包括重编码模块RM,配置用于访问相关联的解码器DC,并特别地访问其内部状态(并因而访问其Tanner图和相关联的数据),以对其移动电话CEi先前从一个或更多其它移动电话CEi’接收到的符号进行重编码。

如前所述,这些LT码符号表示已编码符号。将LT码符号发送到数据块内,该数据块具有表示LT码符号与具有已知值的未编码符号数据的对应链接的关联数据。

LT码符号是一个或更多符号数据的值的合并结果,更具体地,符号数据之间的XOR布尔操作的结果。换言之,输出节点的链路指定已经通过XOR布尔操作进行合并的未编码符号来生成LT码符号。

因此,当通信设备CEi的解码器DC接收具有表示其各自链路的数据的编码符号(即,LT码符号)时,必须使用该相关联的数据来对这些编码符号进行解码,以恢复对应的未编码符号。为此,解码器DC的解码模块DDM将接收到的LT码符号(或编码符号)馈入Tanner图,该接收到的LT码符号定义输出节点ON。同时,要恢复的未编码符号定义Tanner图中链接到相关联的输出节点的输入节点IN。

图2中示出了Tanner图的有限示例。在该示例中,将10个输出节点ON(a-j)链接到一个或更多8个一组(A-H)的输入节点IN。更具体地:

-输出节点a链接到输入节点A、B和C,从而作为其通过两次XOR布尔操作的合并结果(a=A⊕B⊕C),

-输出节点b链接到输入节点B,从而与B相等,

-输出节点c链接到输入节点D和E,从而作为其通过一次XOR布尔操作的合并的结果(c=D⊕E),

-输出节点d链接到输入节点A和F,从而作为其通过一次XOR布尔操作的合并的结果(d=A⊕F),

-输出节点e链接到输入节点E和H,从而作为其通过一次XOR布尔操作的合并的结果(e=E⊕H),

-输出节点f链接到输入节点F和G,从而作为其通过一次XOR布尔操作的合并的结果(f=F⊕G),

-输出节点g链接到输入节点B和G,从而作为其通过一次XOR布尔操作的合并的结果(g=B ⊕G),

-输出节点h链接到输入节点D、E和F,从而作为其通过两次XOR布尔操作的合并的结果(h=D⊕E⊕F),

-输出节点i链接到输入节点G和H,从而作为其通过一次XOR布尔操作的合并的结果(i=G⊕H),以及,

-输出节点j链接到输入节点C,从而与C相等。

重要的是,应该注意到,输出节点ON与输入节点IN之间的链路(或边界)数定义了该输出节点ON的度。因此,在上述示例中:

-a的度等于3,

-b的度等于1,

-c的度等于2,

-d的度等于2,

-e的度等于2,

-f的度等于2,

-g的度等于2,

-h的度等于3,

-i的度等于2,以及

-j的度等于1。

通过随后描述中的定义:

-“输入节点”是表示Tanner图中原始数据的节点,

-“解码输入节点”是其值已知的输入节点。“解码输入节点”永远不会有任何链路(或边缘),并且永远不会被呈现在Tanner图的输出节点ON中。未解码输入节点不具有已知的值,并且不能在重编码的同时使用,

-“覆盖的输入节点”是被解码的输入节点,或具有至少一个相邻节点(即,在Tanner图中与之链接的输出节点)的输入节点,

-“输出节点”是表示已编码符号的节点。其可以是已经接收到的或者可以从解码步骤中产生,

-“部分解码节点”(或,“已知节点”)是已解码输入节点或具有已知值的输出节点,

-“已产生输出节点”是网络重编码设备D产生的节点,并准备发送至一个或更多通信设备CEi,以及

-“部分产生节点”是网络重编码设备D在内部重编码步骤期间临时产生的节点。

解码器DC将Tanner图存储到诸如存储器之类的存储装置中。

重编码模块RM布置用于通过合并所选择的部分解码节点(或已知节点)来对输出节点进行重编码,以生成定义准备要发送的已产生输出节点的新LT码符号,该部分解码节点(或已知节点)即输入节点和/或具有已知值的输出节点。

优选地,这些合并是部分解码节点之间的XOR布尔操作。然而也可以是例如有限域(GF(pq))内的线性组合。然而,这需要存储针对所有边界(或链路)上的线性组合的系数。

优选地,根据本发明的网络重编码设备D(特别是其重编码模块RM)至少部分地由软件模块组成。然而,它也可以由电子电路或硬件模块组成,或者是硬件和软件模块的组合(在这种情况下,重编码设备D还包括允许在硬件与软件模块之间交互的软件接口)。在专门由软件模块组成的情况下,可以将其存储在通信设备CEi的存储器中(例如,在通信设备CEi的解码器DC中),或在任何可被通信设备CEi所读取的计算机软件产品中,例如CD-ROM。

为了对输出节点ON进行重编码,重编码模块RM执行此后所述的网络重编码方法。

例如,该方法包括第一步骤:在到目前为止已经产生的输出节点ON的度的当前(或实际)分布的度dj之中,确定与第一被选参考分布相同的度具有最大差的一个度,以便能够生成具有该度的已产生输出节点。

该第一被选参考分布可以是所谓的鲁棒孤子分布。

注意到,该分布是在离散集合上的。

在图3的图中示出了已产生输出节点的度的鲁棒孤子分布(黑色)的示例和已产生输出节点的度的实际(或当前)分布(灰色)的示例。

例如,重编码模块RM可以首先针对每一度计算当前分布与第一被选参考分布之间的差。然后,可以将结果排序。在图3示出的示例中,可以观察到,两个分布的相同度之间的最大差出现在等于4的度上,然后在等于2的度上,然后在等于16的度上,然后在等于5的度上,等等。

可以通过重编码模块RM根据与输出节点相关的信息来计算已产生输出节点的度的当前分布,该信息是重编码模块RM先前产生的,并存储在诸如存储器之类的存储装置中。

对当前分布与第一被选参考分布之间的度差的计算旨在:优选地针对下一个要产生的输出节点,确定必须使用的当前分布的度,以使得该当前分布更接近于第一被选参考分布。事实上,本领域技术人员知道LT码的性能取决于其分布,因此,当LT码符号的当前分布维持与最佳分布(如,鲁棒孤子分布)接近时,这些性能是最佳的。

因此,一旦重编码模块RM已经计算出当前分布与第一被选参考分布之间的度差,重编码模块RM可以对结果进行排序,以得到用于增强当前分布的度建议(degree suggestion)的列表。

然后,针对每一个度dj的建议,重编码模块RM可以检查是否能够产生度dj的节点。为此,可以使用试探法。

例如,该试探法可以是检查将要产生的输出节点的度d是否低于或等于覆盖的输入节点(即,已解码输入节点和具有至少一个相邻节点的输入节点)的数目。解码器DC保持该数目的值最新。

为了给出更好的结果,可以在例如稍后所描述的另一种条件下来完成这种试探法。

由于无法使用具有度r的输出节点来产生度d小于r(d<r)的输出节点,重编码模块RM可以检查条件dΣ1dk·n(k)是否被验证,其中,d是所确定的要产生的输出节点的度,以及n(k)是度为k的部分解码节点的数目,k小于已知的d。换言之,必须检查是否有足够的度为小于d的k(k<d)的部分解码节点来产生度为d的输出节点。

以上试探法没有考虑到以下事实:当通过XOR布尔操作将两个度为3的节点合并时,不确定是否将给出度为6的节点。事实上,如果将第一节点s=a⊕b⊕c与第二节点t=d⊕e⊕b合并,则得到度4(因为b⊕b=0,所以s⊕t=a⊕d⊕c⊕e)的节点(s⊕t)。

因此,重编码模块RM可以使用计算期望数目的冲突的更复杂的试探法。

重要的是,应该注意到,在LT码符号的解码处理期间,一旦已经对已编码符号(或输入节点)进行解码,则将其与Tanner图的输出节点的每一条链路(或边界)从该Tanner图移除。因此,如果对输入节点解码,将不再涉及其它节点,并且将不产生任何冲突。

假设n0是已解码输入节点的数目,ncovered是覆盖的输入节点的数目,以及ntotal是部分解码节点的总数。利用这些定义,在将度为k>1的节点增加到所产生的度为Ds的节点时,冲突的数目遵循参数(k,Ds-n0,ncovered-n0)的超几何定律,如下给出该参数的平均数Cs+1:

Cs+1=k*(Ds-n0)/(ncovered-n0)。

因此,一旦已经增加第s+1个节点,节点的度Ds+1为Ds+1=Ds+k-2*Cs+1,其中,D0=n0(还可以设置D0=0并且在最后一步增加n0,然而这需要使用随后对Cs+1的定义:Cs+1=k*(Ds/(ncovered-n0))

为了检查是否可以产生度为d的节点,可以执行随后的两个子步骤。

第一子步骤是检查要产生的节点的度d是否低于或等于覆盖的输入节点的数目。

第二子步骤是增加所有度k小于或等于所希望(或期望)的度d(k≤d)的节点,以计算度D(即,一旦已经执行每一项合并所产生的度)。如果D≥d,可以推导出可以产生度为d的节点。可以使用检查是否可以产生度为L的节点的算法来递归地计算D。不在“一击”中聚集所有的节点,而是仅在可以增大当前度时才聚集节点。事实上,如果在一击中聚集节点,该聚集的结果可以是度小于其任何一个的节点(例如,(a⊕b⊕c⊕d)⊕(a⊕b⊕c)=d)。因此,在每一次迭代中,仅保持先前值的最大值,并且每次一个节点地增加该值。这可以通过如下的例证来实现:

D=0

For k=d to 2

    For i=1 to n(k)[其中,n(k)是度为k的已知节点的数目]

           D=max(D,D+k-2*k*(D)/(ncovered-n0))

    EndFor

EndFor

Return D+n0≤L.

通过用另一个第二子步骤来代替前述试探法的第二子步骤,可以改进前述的试探法,以便在避免超过所选的目标的同时考虑到可能的冲突。

假定只在其度低于或等于L与D之间的差时才增加节点,该其它第二子步骤在于从高的度到低的度渐进地增加节点。换言之,由于不想产生具有太高的度的已编码符号,该节点不能超过要产生的重编码符号中的剩余空间。因此,如果例如想要产生度为6的节点,则不能增加两个度为5的节点,而是必须增加一个度为5的节点和一个度为1的节点。这可以通过如下的例程来实现:

D=0

For k=d to 2

    For i=1 to n(k)[其中,n(k)是度为k的已知节点的数目]

        D=max(D,D+k-2*Econflicts(k,D))[其中,当将所有节点引入具有ncovered个覆盖的输入节点和n0个已解码输入节点的Tanner图中时,Econflicts(k,D)等于k*D/(ncovered-n0),并与在将度为k的节点增加到度为D的部分产生节点时可以期望的冲突数相对应。由于针对k=1没有冲突,度为D的节点不能具有任何与已解码输入节点的链路(或边界)。因此,在Econflicts(0,D)=0的情况下,将总是在最后一步增加n0。]

       If L≤D+n0 Then Return TRUE

       If  k>L-D Then Break(for i=1 to n(k)loop)

    EndFor

EndFor

Return FALSE.

仍然可以改进前述的试探法,以考虑到可能的冲突,并在考虑到冲突的同时避免超过所选的目标。实际上,可能考虑到,可以增加度k大于L-D(k>L-D)的节点,并且在发生足够的冲突时,可以具有度为L的节点。这可以通过如下的例程来实现:

D=0

For k=d to 2

    For i=1 to n(k)[其中,n(k)是度为k的已知节点的数目]

        D=max(D,D+k-2*Econflicts(k,D))

        If L≤D+n0 Then Return TRUE

        If  k-2*Econflicts(k,D)>L-D Then Break(for i=1 to n(k)

loop)

    EndFor

EndFor

Return FALSE.

同样重要的是,应该注意到,试探法的选择将对计算成本和LT码的性能造成影响。试探法越简单,则计算成本将越低,同时性能将越低。

如果所使用的试探法显示出可以产生度为d的输出节点,则重编码模块RM通过合并至少一个部分解码节点以生成具有度d的已产生输出节点来完成第一方法步骤。否则,尝试随后的度建议,直到发现可以满足的度建议。最后一种情况将会发生,这是因为至少可以复制先前接收到的节点中的一个。因此,尝试产生其度具有已产生符号的最高缺陷的已编码符号是很有意义的。

为了产生度为d的节点,重编码模块RM可如下进行。

可以从度为d的部分解码节点开始,并增加部分解码节点,直到具有度为d的节点为止。每一次增加部分解码节点,得到等于先前值与所增加的部分解码节点的值进行XOR的新结果。然后,将有助于所增加的部分解码节点的输入节点增加到有助于所产生节点的节点列表。

在该节点产生期间,重编码模块RM以度为d的节点开始,并随后具有一直下降到1的度的节点。事实上,优选首先使用最大的符号,然后使用小的符号来完成已产生节点,以成功地准确到达所期望的度d。因此,决不允许合并降低正在产生的节点的度。此外,如果部分解码节点的度低于或等于所期望的度d和正在产生的节点的当前度之差,优选仅尝试增加该部分解码节点。一旦正在产生的节点具有所期望的度d,重编码模块RM便停止第一方法步骤。

上述的节点产生可以通过如下的例程来实现,其中,L是在第一方法步骤的第一部分中确定的期望度,以及G是部分产生节点:

    L=Result of the first part of the first setp

    For k=d to 1

        While some node N of degree k as not been tried

              and k≤L-degreeOf(G)do

           N=Choose a random node of degree L

           If degreeOf(G+N)>degreeOf(G)then

              G=G+N(XOR their Value,add input nodes and remove

input nodes present twice)

           EnfIf

        EndWhile

    EndFor

Return G.

重要的是,应该注意到,当重编码模块RM使用考虑到可能的冲突发生的试探法时,可以允许正在产生的节点的度暂时下降。这等于放宽了上述节点产生机制的限制之一。然而,如果部分解码节点的度低于或等于所期望的度与正在产生的节点的当前度之差,则仍然增加该部分解码节点。该节点产生的变型可以通过如下的例程来实现:

    L=Result of the first part of the first setp

    For k=d to 1

        While some node n of degree k as not been tried

              and k≤L-degreeOf(G)do

              N=Choose a random node of degree L

              G=G+L(XOR their Value,add input nodes and remove

input nodes present twice)

        EndWhile

    EndFor

    Return G.

可以放宽限制来增强前述节点产生机制,该限制是仅在部分解码节点的度低于或等于所期望的度与正在产生的节点的当前度之间的差时才增加该部分解码节点。在该变型中,仍然考虑到了冲突。例如,当正在产生度为L的节点N时,只有在L-D≥d-2.EConflicts(d,D)时,重编码模块RM才可以尝试将度为d的部分解码节点增加到所产生的度为D的节点。如果使用最后描述的试探法,则该节点产生的变型会更有用。这可以通过如下的例程来实现:

    L=Result of the first part of the first setp

    For k=d to 1

        While some node n of degree k as not been tried

                and k-2.EConflicts(k,degreeOf(G)-iadded)≤L-

degreeOf(G)

                and degreeOf(G)<L do

                N=Choose a random node of degree L

                G=G+N(XOR their Value,add input nodes and

remove input nodes present twice)

         EndWhile

EndFor

Return G.

在有很多度较低(例如,1、2或3)的节点的情况下,可以决定仅使用低度的节点来构建高度的节点,而不是通过增加具有可能的最高的度的节点来开始。为此,可以例如将从1到1(为了仅使用度为1的节点)、或从2到1(为了仅使用度为1和2的节点)、或否则从3到1(为了仅使用度为1、2和3的节点)的“For loop”用到最近的例程中。

例如,还可以根据节点的得分(即,其与第二被选参考分布之差)来选择要增加的度为1的节点,而不是选择度为1的随机节点。这仅要求根据节点的得分来对度为1的节点进行排序,得分可从第二被选参考分布推导出。

在已经使用第一方法步骤生成已产生输出节点后,可以通过第二方法步骤来改善该已产生输出节点。

该第二方法步骤可以是对Tanner图中的输入节点的当前分布进行归一化,以便维持与诸如均匀分布之类的最优分布(或第二被选参考分布)接近。

为此,重编码模块RM可以将输入节点的当前分布与第二被选参考分布相比较,以确定至少一个输入节点,该至少一个输入节点已经被过多用于生成已产生输出节点,并允许在已产生输出节点与链接到已产生输出节点的输入节点合并时使已产生输出节点的度保持不变。

输入节点的当前分布可以由重编码模块RM根据与输出节点相关的信息计算得到,该信息由重编码模块RM先前产生并存储在诸如存储器之类的存储装置中。

在图4的图中示出了输入节点的均匀分布(水平线)的示例和已产生输入节点的度的当前(呈现的)分布(黑色)的示例。均匀的输入节点分布是在其中所有输入节点以相同的次数使用的分布。

在图4示出的示例中,可以观察到,应该避免再次发送输入节点A或F,而是应该发送输入节点C或E。

当重编码模块RM已经确定至少一个使用过多的输入节点时,可以通过过少使用的输入节点来代替这些在已产生输出节点中过多使用的输入节点(这是已经确定的)中的至少一个,以对输入节点的当前分布进行归一化。

使用包括过多使用的输入节点、并选择等于2的度的输出节点是有有益的。事实上,回想起来,LT码符号(当其非常长时)具有多于50%的度等于2的(已编码)输出节点。因此,由于x⊕x=0,如果有部分产生节点s=a⊕b⊕c⊕d和度为2的输出节点t=a⊕e,可以生成已产生输出节点r=s⊕t=e⊕b⊕c⊕d(移除输入节点a(在这里视为使用过多),用输入节点e(在这里视为使用过少)来代替)。

图5中示出了允许使用度为2的输出节点γ(γ=A⊕E)来改善度为4的已产生输出节点δ(δ=A⊕B⊕C⊕D)的方法子步骤的示例。由于A⊕A=0,改善的已产生输出节点β的度仍然为4,然而过多使用的输入节点A已经由过少使用的输入节点E所代替(δ=E⊕B⊕C⊕D)。

为了进行已产生输出节点的改善,重编码模块RM可以如下进行。针对包括在要改善的已产生输出节点中的每一个输入节点N,重编码模块RM搜索度为2的、包含该输入节点N的所有输出节点。然后,重编码模块RM可在这些输出节点中搜索能够最好地增强要改善的已产生输出节点的得分的节点。如果增强是正向的,则执行合并(XOR)。然后,可以转到另一个包括在要改善的已产生输出节点中的输入节点N,并重复该处理。如果发生冲突,即,如果要改善的已产生输出节点的度减小,则不执行合并(XOR)。

重要的是,应该注意到,在上述冲突的情况下,假设发现两个度为1的输入节点在一起提供比发生冲突的度为2的输出节点更好的得分,则可能允许要执行的合并,而不是简单地禁止合并的发生。这使得可以引入更多的多样性,并在合并中更频繁地使用度为1的节点。

在已经生成准备要发送的(已改善的)已产生输出节点后,重编码模块RM可以更新表示已产生输出节点的度的当前分布和Tanner图的输入节点的当前分布的信息,以在随后的重编码期间使用更新后的分布,该信息存储在存储装置中。输入节点的分布的更新可以通过为包括在已产生输出节点中的每一个输入节点增加一次出现(occurrence)来完成。

在已产生输出节点的真实的度与想要的度不同,并且在第二方法步骤期间允许已产生输出节点的度下降的情况下,可以保存想要(或期望)产生的度(即,在第一方法步骤的第一部分期间确定的度),而不是保存真实产生的度。当试探法足够精确时,该动作不是必要的。

为了减轻网络重编码设备D的任务,适配解码器DC的经典解码模块DDM自适应是有益的。更具体地,当解码模块DDM已经对接收到的LT码符号进行解码后,解码模块DDM更新自身的Tanner图,网络重编码设备D使用该Tanner图来根据输出和输入节点各自的度对该输出和输入节点进行搜索。因此,优选地,将解码器DC的解码模块DM修改用于存储与解码模块DM的Tanner图中输入节点和输出节点各自的度相对应的、对输入节点和输出节点进行定义的数据。例如,为了易于访问网络重编码设备D,可以以索引的形式存储这些数据。因此,解码模块DM保存索引表,该索引表允许重编码模块RM随机选择具有特定度的节点,并且还知道每一度有多少节点呈现在解码器DC的Tanner图中。

优选地,根据本发明的修改后的解码模块DDM至少部分由软件模块组成。然而,它也可以由电子电路)或硬件模块组成,或者是硬件和软件模块的组合(在这种情况下,它还包括允许在硬件和软件模块之间交互的软件接口)。在专门由软件模块组成的情况下,可将它存储在解码器DC的存储器中,或在任何可被通信设备CEi读取的计算机软件产品,例如CD-ROM。

此外,还可修改解码器DC,以便能够检测节点的冗余度,并且因此简化网络重编码设备D的任务。实际上,根据本发明的网络重编码方法增大了节点冗余度,这是因为根据本发明的网络重编码方法倾向于生成更多LT码符号冗余块,这增大了解码复杂度(计算和空间两方面的复杂度),并降低了(使用解码器的数据的)网络重编码设备D的性能。

因此,本发明提出向解码器DC增加检测模块DTM,检测模块DTM布置用于:在存在要解码的输出节点的情况下,确定解码模块DDM是否先前接收到过该输出节点,并且在肯定的情况下,产生消息来通过信号通知先前已经对该输出节点进行了解码并且不必再次将其插入解码器的Tanner图。

重要的是,应该注意到,当接收到输出节点时可以使用检测模块DTM(以确定该输出节点先前是否已经被接收到解码),或者在解码期间(例如,在将输出节点x=a⊕b⊕c⊕d部分解码以生成另一个输出节点y=a⊕c⊕d时)使用检测模块DTM。在后一种情形下,检测器模块DTM可以检查y是否已知。

例如,检测模块DTM可以快速计算针对接收到的输出节点的密钥,并查看所存储的、具有快速读和插入访问的数据结构,例如二叉查找树(例如,RB树(“红黑树”-一种自平衡的二叉树))或散列表。如果可以发现已经插入了另一个密钥,则检测模块DTM可以得出结论:已经接收到同一个输出节点,并且不需要对其再次解码。因此,检测模块DTM产生消息,以使得简单地丢弃接收到的输出节点,而不是将其插入解码器DC的Tanner图中。

由于大多数输出接点具有较低的度(等于2或3),并且两个度为2的输出节点相同的概率比两个度为4的输出节点相同的概率高很多,因此可以抑制对度为1、2或3的输出节点的冗余检测。在这种情况下,检测模块DTM可以实现一种散列方法,该散列方法旨在针对任何度为1、2或3的输出节点x计算密钥h(x),以使得h(x)=h(x)x=x.该杂散方法可以如下所示。

首先,检测模块DTM可以以递增的顺序(例如,考虑到其标识符)对混合已编码符号(或输出节点)的原始符号进行排序。然后,检测模块DTM可以计算密钥h(x)=s1+s2·(L+1)+s3·(L+1)2,其中,x=a⊕b⊕c,s1=ia+1,s3=ib+1,s2=ic+1,L是符号(或LT码符号)长度,以及ix是对符号(或输入节点)x进行标识的整数,取0到L-1之间的值。如果符号的度为2,简单地设置s3=0,以及如果符号的度为1,则简单地设置s3=0以及s2=0。

该散列方法仅要求少量(恒定的)加法和乘法,以计算密钥h(x)。此外,由于可以显示出其长度等于3log2(L+1),这种计算出的密钥不要求很多存储空间。此外,该冗余检测方法伴随着低成本,例如,针对长度L=65536的输出码,将涉及到通常可由通用处理器提供的64比特的比较。

优选地,根据本发明的检测模块DTM至少部分由软件模块组成。然而其也可以由电子电路或硬件模块组成,或者是硬件和软件模块的组合(在这种情况下,它还包括允许在硬件和软件模块之间交互的软件接口)。在专门由软件模块组成的情况下,可以将其存储在通信设备CEi的存储器中(例如,在通信设备CEi的解码器DC中),或者在任何可被通信设备CEi读取的计算机软件产品,例如CD-ROM。

本发明提供了若干优点,具体为:

-允许产生低复杂度的网络码,

-可以在广泛的应用范围内使用,这是它允许产生在计算方面比随机线性网络码(RLNC)更为高效的网络码,网络码可以使用置信传播解码代替高斯消元法,并且从而避免了使用Gallois域(GF(2k))算法。

本发明不限于上述仅作为示例的网络重编码方法、网络重编码设备和解码器的实施例,而是包含本领域普通技术人员可以考虑到的在权利要求保护范围内的所有备选实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号