一种采用网络编码的网络传输方法转让专利

申请号 : CN201110025347.8

文献号 : CN102123006A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄佳庆程文青尹柳

申请人 : 华中科技大学

摘要 :

一种采用网络编码的网络传输方法,属于网络信息传输方法,解决因采用网络编码对网络中具有计算和存储等可用资源较少的节点的影响而增加的解码时延,从而提高整个网络的传输效率。本发明包括初始化步骤、建树启动步骤、信源节点入栈步骤、出栈步骤、中间节点入栈步骤和回溯步骤。本发明可以实现采用网络编码后计算能力的均衡,而且通过减少网络编码操作数来降低网络编码带来的复杂性,尤其适合于节点计算和存储等可用资源不相同的异构网络,可以解决因采用网络编码后对具有计算和存储可用资源较少的网络节点造成的较重负担所导致的解码时延,进而造成的网络整体性能的下降问题。

权利要求 :

1.一种采用网络编码的网络传输方法,包括如下步骤:

一.初始化步骤,建立节点链路初始化信息表,包括下述子步骤:

1.1清除网络G(V,E)中各个节点的节点标记,从网络的所有节点V={v1,v2,L,vυ}中确定信源节点s和信宿节点tk,1≤k≤τ,τ为信宿节点数;υ为网络中总节点数;

1.2计算信源节点s到各个信宿节点tk的最大流f(tk),将f=min{f(tk)|1≤k≤τ}作为有向多边图的最大流;

1.3计算网络中各个节点vi∈V到每个信宿节点tk的最短距离Dk(vi),1≤i≤υ,并填入相应的各个节点到信宿节点的最短距离向量D(vi)=[Dk(vi)τ×1中;

1.4初始化各节点的链路可用带宽向量 根据有向多边

图,将各节点vi到其对应的每个始节点uij的链路可用带宽BW(uij,vi)初始化为各节点vi为终节点时,到其对应的每个始节点uij间的并行有向链路条数,1≤j≤P(vi),P(vi)为该节点vi对应的始节点数;

1.5将各节点vi的网络编码操作数NC(vi)初始化为0,将各有向链路ey∈E的链路标记集合LMC(ey)初始化为空集,E={e1,e2,Λ,eε},1≤y≤ε,ε为网络中总有向链路条数;

1.6置当前在建多播树编号N=0,转步骤二;

二.建树启动步骤:

2.1设置信源节点s为当前节点x,并加上确定标记;

2.2置当前在建多播树编号N=N+1,转步骤三;

三.信源节点入栈步骤,包括下述子步骤:

3.1在当前节点x的所有邻居节点中,判断是否存在节点vi满足条件:未被标记、其与当前节点x间的链路可用带宽BW(x,vi)>0且D min(vi)<∞,是则将所有满足条件的节点构成节点集合VS,进行子步骤3.2;否则结束;D min(vi)=min{Dk(vi)|tk未被标记};

3.2对于集合VS中的每一个节点,任选其与当前节点x间一条未标记的有向链路,构成节点-未标记链路对,进行子步骤3.3;

3.3在集合VS中,判断是否存在其网络编码操作数NC(vi)>0的节点,是则将所有满足条件的节点构成子集合VS1,进行子步骤3.4;否则转子步骤3.5;

3.4在子集合VS1中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入网络编码栈;当多个节点的BW(x,vi)相同时,则再按节点的网络编码操作数NC(vi)的大小从大到小,将其对应的节点-未标记链路对压入网络编码栈;进行子步骤3.5;

3.5在集合VS中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不为初始值且其网络编码操作数NC(vi)=0,是则将所有满足条件的节点构成子集合VS2,进行子步骤3.6,否则转子步骤3.7;

3.6在子集合VS2中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入路由栈;当多个节点的BW(x,vi)相同时,则再按节点的Dmax(vi)的大小从小到大,将其对应的节点-未标记链路对压入路由栈;D max(vi)=max{Dk(vi)|tk未被标记};进行子步骤3.7;

3.7在集合VS中,判断是否存在其链路可用带宽向量BW(vi)等于初始值的非信宿节点,是则将它们构成子集合VS3,进行子步骤3.8,否则转子步骤3.9;

3.8在子集合VS3中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入路由栈;当多个节点的BW(x,vi)相同时,则再按节点的Dmax(vi)的大小从小到大,将其对应的节点-未标记链路对压入路由栈;进行子步骤3.9;

3.9在集合VS中,判断是否存在信宿节点,是则将信宿节点构成的节点-未标记链路对以任意顺序压入路由栈,转步骤四;否则直接转步骤四;

四.出栈步骤,包括下述子步骤:

4.1判断路由栈是否已空,是则转子步骤4.14,否则进行子步骤4.2;

4.2从路由栈中取出一个节点-链路对,令该节点-链路对对应的始节点为当前节点x,判断当前节点x是否为信源节点,是则多播树N的当前链路标记 转子步骤

4.4,否则进行子步骤4.3;

4.3判 断 当 前 节 点x在 多 播 树 N中 的 来 源 链 路EN(x) 的 链 路 标 记 集合LMC(EN(x))是否为单元素集合{LMN(EN(x))},是则多播树N的当 前链路标记 否则该来源链路EN(x)的链路标记集合为多元素集合nm为经过该来源链路EN(x)

的已建好的多播树的编号,1≤nm<N,1≤m≤r,多播树N的当前链路标记为为多播树nm在链路EN(x)处的链路标记;进行子步骤4.4;

4.4判断路由栈中取出的节点-链路对的性质,若取出的为信宿节点-未标记链路对,则进行子步骤4.5;若取出的是非信宿节点-链路对,则转子步骤4.9;

4.5对该信宿节点进行增流检验:将多播树N的当前链路标记 与其它所有以该信宿节点为终节点的、已标记链路ey的链路标记集合LMC(ey)中的链路标记LMw(ey)作比较:除去多播树N的当前链路标记 和这些LMw(ey)中每个括号前面的多播树编号,若通过交换各个括号内用加号连接的各元素的连接次序后, 与某一个LMw(ey)完全相同,则增流失败,转步骤六;否则通过增流检验,进行子步骤4.6;w为已建好的多播树的编号,

1≤w≤N-1;

4.6在该信宿节点-未标记链路对中的未标记链路的链路标记集合中并上多播树N的当前链路标记 该信宿节点tk的链路可用带宽向量BW(tk)中对应当前节点x的链路可用带宽BW(x,tk)减1,从该信宿节点tk开始反向沿着链路标记集合中含有多播树N链路标记LMN的有向链路将途经的非确定标记节点的节点标记改为确定标记,直至碰到已有确定标记的节点才结束,进行子步骤4.7;

4.7判断是否所有信宿节点均有确定标记,是则进行子步骤4.8,否则转子步骤4.1;

4.8判断是否达到网络最大流f,是则结束;否则清除所有节点的节点标记,清零路由栈和网络编码栈,转步骤二;

4.9判断当前节点x是否被加上确定标记且该非信宿节点-链路对中的非信宿节点的网络编码操作数NC(vi)>0,是则转子步骤4.1,否则进行子步骤4.10;

4.10判断路由栈中取出的非信宿节点-链路对是否为非信宿节点-已标记链路对,是则进行子步骤4.11;否则转子步骤4.13;

4.11给出栈的节点-已标记链路对中的节点加上临时标记,已标记链路ey的链路标记集合LMC(ey)中并上多播树N的当前链路标记 当前节点x的网络编码操作数NC(x)加1;进行子步骤4.12;

4.12出栈的 节点-已标 记链路 对中已标 记链路 的链路标 记集合 为

λs为经过该已标记链路的多播树

的编号,1≤λs<N,1≤s≤z;若z=1,则替换因子

查找因子 若z≥2,则对于所有λs,1≤s≤z,替换因子 为:

查 找

因子 遍历以该节点-已

标记链路对中的节点为根节点的子树,检查子树中所有有向链路的链路标记集合中的链路标记,将这些链路标记作为母字符串,若母字符串中存在与查找因子 完全相同的子字符串,将该子字符串替换为相应的替换因子 转子步骤4.19;

4.13给该出栈的节点-未标记链路对中的节点vi加上临时标记,其链路可用带宽向量BW(vi)中对应当前节点x的链路可用带宽BW(x,vi)减1,该出栈的节点-未标记链路对中的未标记链路的链路标记集合中并上多播树N的当前链路标记 转子步骤4.19;

4.14判断网络编码栈是否已被取空,是则结束;否则进行子步骤4.15;

4.15从网络编码栈中取出一个节点-链路对,并令该节点-链路对对应的始节点为当前节点x,判断当前节点x是否为信源节点,是则多播树N的当前链路标记 转子步骤4.17;否则进行子步骤4.16;

4.16判 断当 前 节点x 在多 播 树N中 的来 源 链路EN(x)的 链 路标 记 集合LMC(EN(x))是否为单元素集合{LMN(EN(x))},是则多播树N的当 前链路标记 否则该来源链路EN(x)的链路标记集合为多元素集合nm为经过该来源链路的已建

好的多播树的编号,1≤nm<N,1≤m≤r,多播树N的当前链路标记

为多播树nm在链路EN(x)处的链路标记;进行子步骤4.17;

4.17判断该取出的网络编码节点-链路对中网络编码节点是否满足下述条件:该网络编码节点已被标记,或者该网络编码节点及当前节点x均未被标记,是则转子步骤4.14;否则进行子步骤4.18;

4.18判断网络编码栈中取出的节点-链路对的性质,若取出的是网络编码节点-已标记链路对,则转子步骤4.11;否则取出的为网络编码节点-未标记链路对,转子步骤4.13;

4.19令出栈的节点-链路对中的节点为当前节点x,转步骤五;

五.中间节点入栈步骤,包括下述子步骤:

5.1在当前节点x的所有邻居节点中,判断是否存在节点vi满足条件:未被标记,D min(vi)<∞且其不为与当前节点x间的链路可用带宽BW(x,vi)=0的信宿节点,是则将所有满足条件的节点构成节点集合VIC,进行子步骤5.2;否则转步骤六;

5.2判断当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))是否为只含有多播树N的链路标记的单元素集合{LMN(EN(x))},是则令节点集合VI等于节点集合VIC,并转子步骤5.8;否则进行子步骤5.3;

5.3 该 来 源 链 路 EN(x) 的 链 路 标 记 集 合 为 多 元 素 集 合nm为经过该来源链路EN(x)的已建好的多播树的编号,1≤nm<N,1≤m≤r,在集合VIC中,判断是否存在节点满足条件:不为信宿节点,且其与x之间有向链路的链路标记集合中含有多播树nm的链路标记 是则将所有满足条件的节点构成节点集合VIM,并进行子步骤5.4;

否则令节点集合VI=VIC,转子步骤5.8;

5.4对于VIM中的各个节点,将其与当前节点x之间的链路标记集合中含有播树nm的链路标记 的各条有向链路分别绑定其所对应的终节点,构成节点-已标记链路对,按节点-已标记链路对中节点的网络编码操作数NC(vi)的大小由大到小入栈,当存在多个节点-已标记链路对中节点NC(vi)相同时,需再比较这些节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少将其对应的节点-已标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-已标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-已标记链路对只压入路由栈;进行子步骤5.5;

5.5判断是否存在以当前节点x为始节点、集合VIM中的节点为终节点的已标记链路满足条件:其链路标记集合中不含多播树nm的链路标记 是则进行子步骤5.6,否则转子步骤5.7;

5.6将这些已标记链路分别绑定其所对应的终节点构成节点-已标记链路对,按节点-已标记链路对中节点的网络编码操作数NC(vi)的大小由大到小入栈,当存在多个节点-已标记链路对中节点的NC(vi)相同时,需再比较这些节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少将其组成的节点-已标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-已标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-已标记链路对只压入路由栈;进行子步骤5.7;

5.7令节点集合VI=VIC-VIM;

5.8在集合VI中,判断是否存在节点vi满足条件:其与当前节点x间的链路可用带宽BW(x,vi)<f-(N-1)、且其网络编码操作数NC(vi)>0,是则将所有满足条件的节点构成子集合VI1,进行子步骤5.9,否则转子步骤5.10;

5.9对于子集合VI1中的节点,构建节点-链路对并顺序压入路由栈和网络编码栈;

5.10在集合VI中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不等于初始值、与当前节点x间的链路可用带宽BW(x,vi)<f-(N-1)且其网络编码操作数NC(vi)=0,是则将所有满足条件的节点构成子集合VI2,并进行子步骤5.11;否则转子步骤5.12;

5.11对于子集合VI2中的节点,构建节点-链路对并顺序压入路由栈;

5.12在集合VI中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不等于初始值、且与当前节点x间的链路可用带宽BW(x,vi)≥f-(N-1),是则将所有满足条件的节点构成子集合VI3,并进行子步骤5.13;否则转子步骤5.14;

5.13对于子集合VI3中的节点,任选其与当前节点x间一条未标记链路绑定该节点,构成节点-未标记链路对,根据其中节点网络编码操作数NC(vi)的大小,由大到小将这些节点-未标记链路对压入栈,当其中存在多个节点NC(vi)相同时,需再比较这些NC(vi)相同的节点与当前节点x间的链路可用带宽BW(x,vi)的大小,按照BW(x,vi)的大小由小到大把NC(vi)相同的节点构成的节点-未标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-未标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-未标记链路对只压入路由栈;

5.14在集合VI中,判断是否存在节点vi满足条件:非信宿节点、且其链路可用带宽向量BW(vi)等于初始值,是则将所有满足条件的节点构成子集合VI4,并进行子步骤5.15;否则转子步骤5.16;

5.15对于子集合VI4中的节点,任选其与当前节点x间一条未标记链路绑定该节点,构成节点-未标记链路对,根据节点-未标记链路对中的节点与当前节点x间的链路可用带宽BW(x,vi)的大小,按由小到大的顺序将这些节点-未标记链路对压入路由栈;

5.16在集合VI中,判断是否存在信宿节点,是则对于其中所有的信宿节点,任选其与x间一条未标记链路绑定该信宿节点,构成信宿节点-未标记链路对,以任一顺序压入路由栈,并转步骤四;否则直接转步骤四;

六.回溯步骤,执行以下子步骤:

6.1检查路由栈是否为空,是则转子步骤6.2,否则设置路由栈最上面的节点-链路对所对应的始节点为停止点,并进行子步骤6.3;

6.2检查网络编码栈是否为空,是则转子步骤6.3,否则设置网络编码栈最上面的节点-链路对所对应的始节点为停止点,并进行子步骤6.3;

6.3判断当前节点x是否为停止点或者其已被加上确定标记,是则将信源节点设置为停止点,并转步骤四,否则进行子步骤6.4;

6.4清除当前节点x的临时标记,判断多播树N中x的来源链路EN(x)的链路标记集合LMC(EN(x))是否为只含有多播树N的链路标记的单元素集合{LMN(EN(x))},是则转子步骤

6.6,否则进行子步骤6.5;

6.5多播树N中当前节点x的来源链路EN(x)的链路标记集合为多元素集合

n m 为 经

过该来源链路的已建好的多播树的编号,1≤nm<N,1≤m≤r;当前节点x在多播树N中的父节点 的网络编码操作数减1,若r=1,则令替换因子 查找因子 若r≥2,则对于所有nm,1≤m≤r,

令替换因子 查找因子

1≤m≤r;遍历以当前节点

x为根节点的子树,检查子树中所有链路的链路标记集合中的链路标记,将这些链路标记作为母字符串,若母字符串中存在与查找因子 完全相同的子串,将其替换为相应的替换因子

6.6除去当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))中多播树N的链路标记LMN(EN(x)),设置当前节点x在多播树N中的父节点 为新的当前节点x,转子步骤6.3。

2.如权利要求1所述的网络传输方法,其特征在于,所述初始化步骤中:

所述子步骤1.2计算信源节点到各个信宿节点的最大流,使用Ford-Fulkerson方法;

所述子步骤1.3计算网络各个节点到每个信宿节点的最短距离,使用Dijkstra方法。

3.如权利要求1或2所述的网络传输方法,其特征在于,所述中间节点入栈步骤中:所述子步骤5.9包括下述过程:

A.在子集合VI1中,判断是否存在其与当前节点x间的链路可用带宽BW(x,vi)>0的节点,是则将满足条件的所有节点构成次子集合VI1p,并进行过程B,否则转过程C;

B.对于次子集合VI1p中的每个节点,任选其与当前节点x间一条未标记链路绑定该节点,构成网络编码节点-未标记链路对,按其中节点的网络编码操作数NC(vi)大小,由大到小将这些网络编码节点-未标记链路对同时压入路由栈和网络编码栈;当次子集合VI1p中存在多个节点的NC(vi)相同时,需再比较这些节点的BW(x,vi)的大小,按照BW(x,vi)的大小由小到大将相应的网络编码节点-未标记链路对同时压入路由栈和网络编码栈;转过程C;

C.对于子集合VI1中的节点与当前节点x之间已被标记的有向链路,分别绑定其对应的终节点,构成网络编码节点-已标记链路对,根据网络编码节点-已标记链路对中的节点的网络编码操作数NC(vi)大小,从大到小将这些网络编码节点-已标记链路对同时压入路由栈和网络编码栈;当其中存在多个网络编码节点-已标记链路对中节点的NC(vi)大小相同时,需再比较这些节点构成的网络编码节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少的顺序,将对应的网络编码节点-已标记链路对同时压入路由栈和网络编码栈。

4.如权利要求1或2所述的网络传输方法,其特征在于,所述中间节点入栈步骤中:所述子步骤5.11包括下述过程:

A.在子集合VI2中,判断是否存在其与当前节点x间的链路可用带宽BW(x,vi)>0的节点,是则将满足条件的所有节点构成次子集合VI2p,并进行过程B;否则转过程C;

B.对于次子集合VI2p中的每个节点,任选其与当前节点x间一条未标记链路绑定该节点,构成非网络编码节点-未标记链路对,根据其中节点的BW(x,vi)大小,由小到大将其组成的非网络编码节点-未标记链路对压入路由栈;转过程C;

C.对于子集合VI2中的节点与当前节点x之间已被标记过的有向链路,分别绑定其对应的终节点,构成非网络编码节点-已标记链路对,根据其中的已标记链路的链路标记集合中链路标记的个数,按由多到少顺序将其对应的非网络编码节点-已标记链路对压入路由栈。

说明书 :

一种采用网络编码的网络传输方法

技术领域

[0001] 本发明属于网络信息传输方法,尤其涉及一种采用网络编码的网络传输方法。

背景技术

[0002] 2000年R.Ahlswede等提出网络编码(Network Coding),见R.Ahlswede,N.Cai,Shuo-Yen Robert Li and R.W.Yeung.Network information flow.IEEE Trans.Inform.Theory,46(4):1204-1216,July 2000,其主要特点就是允许网络中间节点参与编码,当网络中间节点采用网络编码后,只要多播(Multicast)接收节点的最大流(Maxflow)不小于源节点信息个数,所有这些多播接收节点均能同时恢复源节点发出的信息。这在仅用纯路由的情况下是不一定能达到的,可见,网络编码能够提升网络的吞吐量。目前网络编码已经应用于许多领域,如P2P、内容分发、应用层多播和无线多跳网络等。
[0003] 2003年T.Ho等提出的“随机网络编码”(RandomNetwork Coding),见T.Ho,M.Medard,J.Shi,M.Eros and D.R.Karger.On randomized network coding.In Proceedings of 41st Annual Allerton Conference on Communication,Control,and Computing,October2003,具有分布式实施的优势,但由于每个节点都参与编解码,带来较大的复杂性,具体体现在对计算量和存储要求:每个接收节点在内存中首先需要解出系数3
的逆矩阵,所需要的时间复杂性为o(n)(其中n为文件分块数),然后通过解方程组来解出
2
原始数据,所需要的时间复杂性为o(n)。另外,还需要不停地从硬盘中将数据读出,然后解码再存回硬盘,这些操作将占去CPU很大一部分时间。
[0004] 综上所述,网络编码的引入对CPU和内存量的要求将较为苛刻,对具有计算和存储等可用资源较少的网络节点将造成较大的负担,可引起拥塞而增加传输时延,进而影响采用网络编码的网络整体传输性能。
[0005] 为清楚阐述本发明,对本发明使用到的基本设置和符号标记作以下说明。
[0006] 有向多边图G(V,E):表明网络中节点与节点之间的传输关系,由并行的有向链路构成,其中每条有向链路具有单位容量,本发明中所涉及的链路均为有向链路。V={v1,v2,Λ,vυ}为有向多边图中的节点集合,υ为网络中总节点数,E={e1,e2,Λ,eε}为有向多边图中的有向链路集合,ε为网络中总有向链路数。
[0007] 多播(Multicast):指一个信源节点s∈V发送数据给多个信宿节点tk∈V的通信方式,1≤k≤τ,τ为信宿节点数。
[0008] 多播树:采用多播的传输路径的树状结构,其中不存在环状结构,在有向多边图上形成。
[0009] 始节点和终节点:指有向链路两端的节点,称有向链路起始的节点为始节点,有向链路终端的节点为终节点。
[0010] 节点-链路对:是指终节点和与之相连的有向链路所构成的二元组,是本发明中入栈和出栈的基本单元;根据有向链路是否被标记,可分为:
[0011] (1)节点-未标记链路对:根据节点是否为网络编码节点,又可以分为网络编码节点-未标记链路对和非网络编码节点-未标记链路对;根据节点是否为信宿节点,也可以分为信宿节点-未标记链路对和非信宿节点-未标记链路对。
[0012] (2)节点-已标记链路对:根据节点是否为网络编码节点,又可以分为网络编码节点-已标记链路对和非网络编码节点-已标记链路对。
[0013] 节点标记:包括两种标记,一种是在构建一棵多播树的过程中确定要使用的节点,给以确定标记;一种是在构建一颗多播树的过程中临时使用的节点,给以临时标记;在构建一颗多播树的过程中尚未使用的节点,不做标记。
[0014] 节点间的链路可用带宽:节点间的链路可用带宽是涉及两个节点(始节点和终节点)的状态,记为BW(u,v),v表示该并行链路的终节点,u表示的是该并行链路的始节点。有向多边图中节点与节点之间的连接由具有单位容量的有方向的并行链路构成,节点间的链路可用带宽等于节点之间未被标记的并行的有向链路条数。则某节点vi与其所有的始节点uij之间均存在一个BW(uij,vi),将这些BW(uij,vi)构成该节点vi的链路可用带宽向量
1≤j≤P(vi),P(vi)为该节点vi对应的 始节点数。
[0015] 节点的网络编码操作数:某节点vi进行了网络编码操作的次数,记为NC(vi)。NC(vi)≥0,取0时表示节点vi为非网络编码节点,大于0表示节点vi为网络编码节点。
[0016] 节点到信宿节点的最短距离:某节点vi到信宿节点tk的最短距离为节点vi到tk的最小跳数,记为Dk(vi)。某节点vi到所有信宿节点tk(k=1~τ)的最短距离构成该节点vi到信宿节点的最短距离向量D(vi)=[Dk(vi)]τ×1。在有向多边图中,当某节点vi不能通过有向链路到达某信宿节点tk时,对应的最短距离Dk(vi)为∞。令D min(vi)=min{Dk(vi)|tk未被标记},D max(vi)=max{Dk(vi)|tk未被标记},在本发明中,当某节点vi的D min(vi)为∞时,由vi组成的节点-链路对将不能入栈。
[0017] 多播树编号n:用一个数字编号n区分不同的多播树,当前在建多播树用编号N来表示,0≤n≤N;
[0018] 多播树n的链路标记:多播树在建树过程中给所经的链路ey(1≤y≤ε)加的标记LMn(ey),所有多播树n对链路所做的链路标记都可表示为LMn。
[0019] 有向链路的链路标记集合:在本发明执行过程中,某有向链路ey被加上的所有链路标记的集合 (0<n1<n2<...<nr<N均为经过该有向链路ey的已建好的多播树编号)。若r=1,该有向链路的链路标记集合为多播树n1建树过程中经过该有向链路ey时的链路标记 构成的单元素集合若r≥2,则多棵多播树在该有向链路ey重叠,LMC(ey)为这些多播树分别建树过程中经过该有向链路ey时的链路标记的集合 某
有向链路ey的链路标记集合LMC(ey)为空集时,该有向链路ey未被任何多播树使用,为未标记链路。
[0020] 树n中节点的来源链路或节点在树n中的来源链路:以节点vi为终节点的有向链路,且满足它的链路标记集合中有树n的链路标记LMn,记为En(vi)。
[0021] 多播树N的当前链路标记:是当前在建多播树N当下的链路标记,记为 在每一次出栈操作之前必须重新计算 当前节点x为信源节点s时,多播树N的当前链路标记 为树N的编号N;当前节点x为中间节点时,则需考察x在树N中的来源链路EN(x)的链路标记集合LMC(EN(x)),若LMC(EN(x))为仅含有树N的链路标记的单元素集合{LMN(EN(x))},则取该链路标记集合LMC(EN(x))中的LMN(EN(x))为树N的当前链路标记若LMC(EN(x))为不只含有树N的链路标记LMN(EN(x))的多元素集合(0<n1<n2<...<nr<N均为经过该有向链路EN(x)的已建好的多播树编号),则多播树N的当前链路标记
[0022]其中括号与
当前节点x一起表示树N与其他树在当前节点x处发生了一次编码,“+”仅表示为连接符,同一个括号中的“+”连接的各多播树的链路标记可交换连接次序。
[0023] 节点在树n中的父节点:以该节点vi为终节点,通过其在树n中来源链路En(vi)所对应的始节点。
[0024] 以某节点vi为根节点的子树:在本发明的有向多边图表示的网络中,以节点vi为最初的始节点,找到其对应的终节点,再以这些终节点为新的始节点,找到它们所有的终节点,重复操作,直到没有新的节点加入子树为止,在这个过程中所包含的所有的节点和有向链路就构成了以vi为根节点的子树。
[0025] Ford-Fulkerson方法:网络中计算最大流的最基本的方法,见王树禾,图论。北京:科学出版社,2004。
[0026] Dijkstra方法:该方法可求出有向图中单个节点到其他信宿节点的最短路径问题,为路由选择算法中最基本的求最短路径的方法之一,见殷剑宏,吴开亚,图论及其算法。合肥:中国科学技术大学出版社,2003。

发明内容

[0027] 本发明提供一种采用网络编码的网络传输方法,解决因采用网络编码对网络中具有计算和存储等可用资源较少的节点的影响而增加的解码时延,从而提高整个网络的传输效率。
[0028] 本发明的一种采用网络编码的网络传输方法,包括如下步骤:
[0029] 一.初始化步骤,建立节点链路初始化信息表,包括下述子步骤:
[0030] 1.1清除网络G(V,E)中各个节点的节点标记,从网络的所有节点V={v1,v2,L,vυ}中确定信源节点s和信宿节点tk,1≤k≤τ,τ为信宿节点数;υ为网络中总节点数;
[0031] 1.2计 算 信 源 节 点s 到 各 个 信 宿 节 点 tk的 最 大 流f(tk),将f =min{f(tk)|1≤k≤τ}作为有向多边图的最大流;
[0032] 1.3计算网络中各个节点vi∈V到每个信宿节点tk的最短距离Dk(vi),1≤i≤υ,并填入相应的各个节点到信宿节点的最短距离向量D(vi)=[Dk(vi)]τ×1中;
[0033] 1.4初始化各节点的链路可用带宽向量 根据有向多边图,将各节点vi到其对应的每个始节点uij的链路可用带宽BW(uij,vi)初始化为各节点vi为终节点时,到其对应的每个始节点uij间的并行有向链路条数,1≤j≤P(vi),P(vi)为该节点vi对应的始节点数;
[0034] 1.5将各节点vi的网络编码操作数NC(vi)初始化为0,将各有向链路ey∈E的链路标记集合LMC(ey)初始化为空集,E={e1,e2,Λeε},1≤y≤ε,ε为网络中总有向链路条数;
[0035] 1.6置当前在建多播树编号N=0,转步骤二;
[0036] 二.建树启动步骤:
[0037] 2.1设置信源节点s为当前节点x,并加上确定标记;
[0038] 2.2置当前在建多播树编号N=N+1,转步骤三;
[0039] 三.信源节点入栈步骤,包括下述子步骤:
[0040] 3.1在当前节点x的所有邻居节点中,判断是否存在节点vi满足条件:未被标记、其与当前节点x间的链路可用带宽BW(x,vi)>0且D min(vi)<∞,是则将所有满足条件的节点构成节点集合VS,进行子步骤3.2;否则结束;D min(vi)=min{Dk(vi)|tk未被标记};
[0041] 3.2对于集合VS中的每一个节点,任选其与当前节点x间一条未标记的有向链路,构成节点-未标记链路对,进行子步骤3.3;
[0042] 3.3在集合VS中,判断是否存在其网络编码操作数NC(vi)>0的节点,是则将所有满足条件的节点构成子集合VS1,进行子步骤3.4;否则转子步骤3.5;
[0043] 3.4在子集合VS1中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入网络编码栈;当多个节点的BW(x,vi)相同时,则再按节点的网络编码操作数NC(vi)的大小从大到小,将其对应的节点-未标记链路对压入网络编码栈;进行子步骤3.5;
[0044] 3.5在集合VS中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不为初始值且其网络编码操作数NC(vi)=0,是则将所有满足条件的节点构成子集合VS2,进行子步骤3.6,否则转子步骤3.7;
[0045] 3.6在子集合VS2中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入路由栈;当多个节点的BW(x,vi)相同时,则再按节点的Dmax(vi)的大小从小到大,将其对应的节点-未标记链路对压入路由栈;Dmax(vi)=max{Dk(vi)|tk未被标记};进行子步骤3.7;
[0046] 3.7在集合VS中,判断是否存在其链路可用带宽向量BW(vi)等于初始值的非信宿节点,是则将它们构成子集合VS3,进行子步骤3.8,否则转子步骤3.9;
[0047] 3.8在子集合VS3中,按照节点与当前节点x间的链路可用带宽BW(x,vi)的大小由小到大,将节点对应的节点-未标记链路对压入路由栈;当多个节点的BW(x,vi)相同时,则再按节点的Dmax(vi)的大小从小到大,将其对应的节点-未标记链路对压入路由栈;进行子步骤3.9;
[0048] 3.9在集合VS中,判断是否存在信宿节点,是则将信宿节点构成的节点-未标记链路对以任意顺序压入路由栈,转步骤四;否则直接转步骤四;
[0049] 四.出栈步骤,包括下述子步骤:
[0050] 4.1判断路由栈是否已空,是则转子步骤4.14,否则进行子步骤4.2;
[0051] 4.2从路由栈中取出一个节点-链路对,令该节点-链路对对应的始节点为当前节点x,判断当前节点x是否为信源节点,是则多播树N的当前链路标记 转子步骤4.4,否则进行子步骤4.3;
[0052] 4.3判断当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))是否为单元素集合{LMN(EN(x))},是则多播树N的当 前链路标
记 否则该来源链路EN(x)的链路标记集合为多元素集合
nm为经过该来源链路EN(x)
的已建好的多播树的编号,1≤nm<N,1≤m≤r,多播树N的当前链路标记为
[0053]为多播树nm在链路EN(x)处的链路标记;进行子步骤4.4;
[0054] 4.4判断路由栈中取出的节点-链路对的性质,若取出的为信宿节点-未标记链路对,则进行子步骤4.5;若取出的是非信宿节点-链路对,则转子步骤4.9;
[0055] 4.5对该信宿节点进行增流检验:将多播树N的当前链路标记 与其它所有以该信宿节点为终节点的、已标记链路ey的链路标记集合LMC(ey)中的链路标记LMw(ey)作比较:除去多播树N的当前链路标记 和这些LMw(ey)中每个括号前面的多播树编号,若通过交换各个括号内用加号连接的各元素的连接次序后, 与某一个LMw(ey)完全相同,则增流失败,转步骤六;否则通过增流检验,进行子步骤4.6;w为已建好的多播树的编号,1≤w≤N-1;
[0056] 4.6在该信宿节点-未标记链路对中的未标记链路的链路标记集合中并上多播树N的当前链路标记 该信宿节点tk的链路可用带宽向量BW(tk)中对应当前节点x的链路可用带宽BW(x,tk)减1,从该信宿节点tk开始反向沿着链路标记集合中含有多播树N链路标记LMN的有向链路将途经的非确定标记节点的节点标记改为确定标记,直至碰到已有确定标记的节点才结束,进行子步骤4.7;
[0057] 4.7判断是否所有信宿节点均有确定标记,是则进行子步骤4.8,否则转子步骤4.1;
[0058] 4.8判断是否达到网络最大流f,是则结束;否则清除所有节点的节点标记,清零路由栈和网络编码栈,转步骤二;
[0059] 4.9判断当前节点x是否被加上确定标记且该非信宿节点-链路对中的非信宿节点的网络编码操作数NC(vi)>0,是则转子步骤4.1,否则进行子步骤4.10;
[0060] 4.10判断路由栈中取出的非信宿节点-链路对是否为非信宿节点-已标记链路对,是则进行子步骤4.11;否则转子步骤4.13;
[0061] 4.11给出栈的节点-已标记链路对中的节点加上临时标记,已标记链路ey的链路标记集合LMC(ey)中并上多播树N的当前链路标记 当前节点x的网络编码操作数NC(x)加1;进行子步骤4.12;
[0062] 4.12出栈的节点-已标记链路对中已标记链路的链路标记集合为λs为经过该已标记链路的多播树的
编号,1≤λs<N,1≤s≤z;若z=1,则替换因子
查 找 因 子 若z ≥ 2,则 对 于 所 有λs,1 ≤s ≤ z,替 换 因 子
查 找 因 子
遍历以该节点-已标记链路对
中的节点为根节点的子树,检查子树中所有有向链路的链路标记集合中的链路标记,将这些链路标记作为母字符串,若母字符串中存在与查找因子 完全相同的子字符串,将该子字符串替换为相应的替换因子 转子步骤4.19;
[0063] 4.13给该出栈的节点-未标记链路对中的节点vi加上临时标记,其链路可用带宽向量BW(vi)中对应当前节点x的链路可用带宽BW(x,vi)减1,该出栈的节点-未标记链路对中的未标记链路的链路标记集合中并上多播树N的当前链路标记 转子步骤4.19;
[0064] 4.14判断网络编码栈是否已被取空,是则结束;否则进行子步骤4.15;
[0065] 4.15从网络编码栈中取出一个节点-链路对,并令该节点-链路对对应的始节点为当前节点x,判断当前节点x是否为信源节点,是则多播树N的当前链路标记转子步骤4.17;否则进行子步骤4.16;
[0066] 4.16判断当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))是否为单元素集合{LMN(EN(x))},是则多播树N的当 前链路标
记 否则该来源链路EN(x)的链路标记集合为多元素集合
nm为经过该来源链路的已建
好的多播树的编号,1≤nm<N,1≤m≤r,多播树N的当前链路标记
[0067]为多播树nm在链路EN(x)处的链路标记;进行子步骤4.17;
[0068] 4.17判断该取出的网络编码节点-链路对中网络编码节点是否满足下述条件:该网络编码节点已被标记,或者该网络编码节点及当前节点x均未被标记,是则转子步骤
4.14;否则进行子步骤4.18;
[0069] 4.18判断网络编码栈中取出的节点-链路对的性质,若取出的是网络编码节点-已标记链路对,则转子步骤4.11;否则取出的为网络编码节点-未标记链路对,转子步骤4.13;
[0070] 4.19令出栈的节点-链路对中的节点为当前节点x,转步骤五;
[0071] 五.中间节点入栈步骤,包括下述子步骤:
[0072] 5.1在当前节点x的所有邻居节点中,判断是否存在节点vi满足条件:未被标记,D min(vi)<∞且其不为与当前节点x间的链路可用带宽BW(x,vi)=0的信宿节点,是则将所有满足条件的节点构成节点集合VIC,进行子步骤5.2;否则转步骤六;
[0073] 5.2判断当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))是否为只含有多播树N的链路标记的单元素集合{LMN(EN(x))},是则令节点集合VI等于节点集合VIC,并转子步骤5.8;否则进行子步骤5.3;
[0074] 5.3 该 来 源 链 路 EN(x) 的 链 路 标 记 集 合 为 多 元 素 集 合nm为经过该来源链路EN(x)的已建好的多播树的编号,1≤nm<N,1≤m≤r,在集合VIC中,判断是否存在节点满足条件:不为信宿节点,且其与x之间有向链路的链路标记集合中含有多播树nm的链路标记 是则将所有满足条件的节点构成节点集合VIM,并进行子步骤5.4;
否则令节点集合VI=VIC,转子步骤5.8;
[0075] 5.4对于VIM中的各个节点,将其与当前节点x之间的链路标记集合中含有播树nm的链路标记 的各条有向链路分别绑定其所对应的终节点,构成节点-已标记链路对,按节点-已标记链路对中节点的网络编码操作数NC(vi)的大小由大到小入栈,当存在多个节点-已标记链路对中节点NC(vi)相同时,需再比较这些节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少将其对应的节点-已标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-已标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-已标记链路对只压入路由栈;进行子步骤5.5;
[0076] 5.5判断是否存在以当前节点x为始节点、集合VIM中的节点为终节点的已标记链路满足条件:其链路标记集合中不含多播树nm的链路标记 是则进行子步骤5.6,否则转子步骤5.7;
[0077] 5.6将这些已标记链路分别绑定其所对应的终节点构成节点-已标记链路对,按节点-已标记链路对中节点的网络编码操作数NC(vi)的大小由大到小入栈,当存在多个节点-已标记链路对中节点的NC(vi)相同时,需再比较这些节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少将其组成的节点-已标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-已标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-已标记链路对只压入路由栈;进行子步骤5.7;
[0078] 5.7令节点集合VI=VIC-VIM;
[0079] 5.8在集合VI中,判断是否存在节点vi满足条件:其与当前节点x间的链路可用带宽BW(x,vi)<f-(N-1),且其网络编码操作数NC(vi)>0,是则将所有满足条件的节点构成子集合VI1,进行子步骤5.9,否则转子步骤5.10;
[0080] 5.9对于子集合VI1中的节点,构成节点-链路对并顺序压入路由栈和网络编码栈;
[0081] 5.10在集合VI中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不等于初始值、与当前节点x间的链路可用带宽BW(x,vi)<f-(N-1)且其网络编码操作数NC(vi)=0,是则将所有满足条件的节点构成子集合VI2,并进行子步骤5.11;否则转子步骤5.12;
[0082] 5.11对于子集合VI2中的节点,构成节点-链路对并顺序压入路由栈;
[0083] 5.12在集合VI中,判断是否存在节点vi满足条件:非信宿节点、其链路可用带宽向量BW(vi)不等于初始值、且与当前节点x间的链路可用带宽BW(x,vi)≥f-(N-1),是则将所有满足条件的节点构成子集合VI3,并进行子步骤5.13;否则转子步骤5.14;
[0084] 5.13对于子集合VI3中的节点,任选其与当前节点x间一条未标记链路绑定该节点,构成节点-未标记链路对,根据其中节点网络编码操作数NC(vi)的大小,由大到小将这些节点-未标记链路对压入栈,当其中存在多个节点NC(vi)相同时,需再比较这些NC(vi)相同的节点与当前节点x间的链路可用带宽BW(x,vi)的大小,按照BW(x,vi)的大小由小到大把NC(vi)相同的节点构成的节点-未标记链路对压入栈;入栈时,其中NC(vi)>0的节点构成的网络编码节点-未标记链路对同时压入路由栈和网络编码栈,NC(vi)=0的节点构成的非网络编码节点-未标记链路对只压入路由栈;
[0085] 5.14在集合VI中,判断是否存在节点vi满足条件:非信宿节点、且其链路可用带宽向量BW(vi)等于初始值,是则将所有满足条件的节点构成子集合VI4,并进行子步骤5.15;否则转子步骤5.16;
[0086] 5.15对于子集合VI4中的节点,任选其与当前节点x间一条未标记链路绑定该节点,构成节点-未标记链路对,根据节点-未标记链路对中的节点与当前节点x间的链路可用带宽BW(x,vi)的大小,按由小到大的顺序将这些节点-未标记链路对压入路由栈;
[0087] 5.16在集合VI中,判断是否存在信宿节点,是则对于其中所有的信宿节点,任选其与x间一条未标记链路绑定该信宿节点,构成信宿节点-未标记链路对,以任一顺序压入路由栈,并转步骤四;否则直接转步骤四;
[0088] 六.回溯步骤,执行以下子步骤:
[0089] 6.1检查路由栈是否为空,是则转子步骤6.2,否则设置路由栈最上面的节点-链路对所对应的始节点为停止点,并进行子步骤6.3;
[0090] 6.2检查网络编码栈是否为空,是则转子步骤6.3,否则设置网络编码栈最上面的节点-链路对所对应的始节点为停止点,并进行子步骤6.3;
[0091] 6.3判断当前节点x是否为停止点或者其已被加上确定标记,是则将信源节点设置为停止点,并转步骤四,否则进行子步骤6.4;
[0092] 6.4清除当前节点x的临时标记,判断多播树N中x的来源链路EN(x)的链路标记集合LMC(EN(x))是否为只含有多播树N的链路标记的单元素集合{LMN(EN(x))},是则转子步骤6.6,否则进行子步骤6.5;
[0093] 6.5多播树N中当前节点x的来源链路EN(x)的链路标记集合为多元素集合 nm 为 经过该来源链路的已建好的多播树的编号,1≤nm<N,1≤m≤r;当前节点x在多播树N中的父节点 的网络编码操作数减1,若r=1,则令替换因子 查找因
子 若r≥2,则对于所有nm,1≤m≤r,令
替换因子 查找因子
1≤m≤r;遍历以
当前节点x为根节点的子树,检查子树中所有链路的链路标记集合中的链路标记,将这些链路标记作为母字符串,若母字符串中存在与查找因子 完全相同的子串,将其替换为相应的替换因子
[0094] 6.6除去当前节点x在多播树N中的来源链路EN(x)的链路标记集合LMC(EN(x))中多播树N的链路标记LMN(EN(x)),设置当前节点x在多播树N中的父节点 为新的当前节点x,转子步骤6.3。
[0095] 所述的网络传输方法,其特征在于,所述初始化步骤中:
[0096] 所述子步骤1.2计算信源节点到各个信宿节点的最大流,使用Ford-Fulkerson方法;
[0097] 所述子步骤1.3计算网络各个节点到每个信宿节点的最短距离,使用Dijkstra方法。
[0098] 所述的网络传输方法,其特征在于,所述中间节点入栈步骤中:
[0099] 所述子步骤5.9包括下述过程:
[0100] A.在子集合VI1中,判断是否存在其与当前节点x间的链路可用带宽BW(x,vi)>0的节点,是则将满足条件的所有节点构成次子集合VI1p,并进行过程B,否则转过程C;
[0101] B.对于次子集合VI1p中的每个节点,任选其与当前节点x间一条未标记链路绑定该节点,构成网络编码节点-未标记链路对,按其中节点的网络编码操作数NC(vi)大小,由大到小将这些网络编码节点-未标记链路对同时压入路由栈和网络编码栈;当次子集合VI1p中存在多个节点的NC(vi)相同时,需再比较这些节点的BW(x,vi)的大小,按照BW(x,vi)的大小由小到大将相应的网络编码节点-未标记链路对同时压入路由栈和网络编码栈;转过程C;
[0102] C.对于子集合VI1中的节点与当前节点x之间已被标记的有向链路,分别绑定其对应的终节点,构成网络编码节点-已标记链路对,根据网络编码节点-已标记链路对中的节点的网络编码操作数NC(vi)大小,从大到小将这些网络编码节点-已标记链路对同时压入路由栈和网络编码栈;当其中存在多个网络编码节点-已标记链路对中节点的NC(vi)大小相同时,需再比较这些节点构成的网络编码节点-已标记链路对中的已标记链路的链路标记集合中链路标记的个数,按链路标记个数由多到少的顺序,将对应的网络编码节点-已标记链路对同时压入路由栈和网络编码栈。
[0103] 所述的网络传输方法,其特征在于,所述中间节点入栈步骤中:
[0104] 所述子步骤5.11包括下述过程:
[0105] A.在子集合VI2中,判断是否存在其与当前节点x间的链路可用带宽BW(x,vi)>0的节点,是则将满足条件的所有节点构成次子集合VI2p,并进行过程B;否则转过程C;
[0106] B.对于次子集合VI2p中的每个节点,任选其与当前节点x间一条未标记链路绑定该节点,构成非网络编码节点-未标记链路对,根据其中节点的BW(x,vi)大小,由小到大将其组成的非网络编码节点-未标记链路对压入路由栈;转过程C;
[0107] C.对于子集合VI2中的节点与当前节点x之间已被标记过的有向链路,分别绑定其对应的终节点,构成非网络编码节点-已标记链路对,根据其中的已标记链路的链路标记集合中链路标记的个数,按由多到少顺序将其对应的非网络编码节点-已标记链路对压入路由栈。
[0108] 本发明可以实现采用网络编码后计算能力的均衡,而且通过减少网络编码操作数来降低网络编码带来的复杂性,尤其适合于节点计算和存储等可用资源不相同的异构网络,可以解决因采用网络编码后对具有计算和存储可用资源较少的网络节点造成的较重负担所导致的解码时延,进而造成的网络整体性能的下降问题。

附图说明

[0109] 图1为本发明的流程示意图;
[0110] 图2为信源节点入栈步骤流程示意图;
[0111] 图3为出栈步骤流程示意图;
[0112] 图4为中间节点入栈步骤流程示意图;
[0113] 图5为回溯步骤流程示意图;
[0114] 图6为本发明实施例的网络环境。

具体实施方式

[0115] 以下结合附图及实施例,对本发明进一步说明。
[0116] 如图1所示,本发明包括初始化步骤、建树启动步骤、信源节点入栈步骤、出栈步骤、中间节点入栈步骤和回溯步骤。
[0117] 其中,信源节点入栈步骤如图2所示、出栈步骤如图3所示、中间节点入栈步骤如图4所示、回溯步骤如图5所示。
[0118] 如图6所示,本实施例的网络中,包括节点101~110以及节点120,共11个节点;本实施例的传输方法,包括下述步骤:
[0119] 一、初始化步骤:
[0120] 1.1、清除网络中各个节点的节点标记,从如图6所示的网络中确定节点120为信源节点s;节点106、108、110分别为信宿节点t1,t2,t3;以方框表示;
[0121] 1.2、使用Ford-Fulkerson标号算法计算信源节点120到各个信宿节点106、108、110的最大流f(t1)=f(t2)=f(t3)=4,得该有向多边图的最大流f=4;
[0122] 1.3、使用Dijkstra算法计算网络中各个节点vi到每个信宿节点tk的最短距离Dk(vi),并填入相应的各个节点的最短距离向量D(vi)=[Dk(vi)]τ×1中,例如:节点101到信宿节点106的最小跳数为D1(101)=1,到信宿节点108的最小跳数为D2(101)=3,不能T通过有向链路到达信宿节点110,则D3(101)为∞,D(101)=[13∞] ;
[0123] 1.4、初始化各节点的链路可用带宽向量 例如:节点102为终节点时对应P(102)=2个始节点,分别为节点101和103,其中BW(101,102)=
2,BW(103,102)=2,则BW(102)=[22]T;
[0124] 1.5、各节点vi的网络编码操作数NC(vi)初始化为0,将各有向链路ey的链路标记集合LMC(ey)初始化为空集;
[0125] 1.6、置当前在建多播树编号N=0,转步骤二;
[0126] 二、建树启动步骤:
[0127] 2.1、设置信源节点120为当前节点x,并加上确定标记;
[0128] 2.2、置当前在建多播树编号N=N+1=0+1=1,转步骤三;
[0129] 三、信源节点入栈步骤:
[0130] 3.1、当前节点x为信源节点120,它有三个邻居节点101,103和105,均满足条件:未被标记,BW(120,101)=BW(120,103)=BW(120,105)=2>0,且D min(101)=1,Dmin(103)=3,Dmin(105)=1,均小于∞,所以构成节点集合VS={101,103,105},进行子步骤3.2;
[0131] 3.2、对于VS中的每个节点,任选其与节点120间一条未标记的有向链路,构成3个节点-未标记链路对:节点101-链路011对,节点103-链路031对,节点105-链路051对;
[0132] 3.3、集合VS中的节点其NC(101)=NC(103)=NC(105)=0,不满足构成子集合VS1的条件,转子步骤3.5;
[0133] 3.5、集合VS中节点的BW(101)、BW(103)以及BW(105)均等于初始值,不满足构成子集合VS2的条件,转子步骤3.7;
[0134] 3.7、集合VS中节点的BW(101)、BW(103)以及BW(105)均等于初始值,且均为非信宿节点,则构成子集合VS3={101,103,105},进行子步骤3.8;
[0135] 3.8、子集合VS3中节点的BW(120,101)=BW(120,103)=BW(120,105)=2,则按节点的Dmax(vi)的大小从小到大,Dmax(103)=3的节点103对应的节点103-链路031对首先压入路由栈,Dmax(101)=Dmax(105)=∞,由节点101、105组成的节点-未标记链路对,以任意顺序入栈,假定节点105-链路051对先入路由栈,节点101-链路011对最后入路由栈,进行子步骤3.9;
[0136] 3.9、集合VS中不存在信宿节点,转步骤四;
[0137] 四、出栈步骤:
[0138] 4.1、路由栈不为空,进行子步骤4.2;
[0139] 4.2、从路由栈中取出一个节点-链路对为节点101-链路011对,令其对应的始节点120为当前节点x,节点120为信源节点,则多播树1的当前链路标记 转子步骤4.4;
[0140] 4.4、路由栈中取出的节点101-链路011对为非信宿节点-链路对,转子步骤4.9;
[0141] 4.9、当前节点120已被加上确定标记,但非信宿节点101的NC(101)=0,不满足条件,进行子步骤4.10;
[0142] 4.10、节点101-链路011对为非信宿节点-未标记链路对,转子步骤4.13;
[0143] 4.13、给节点101加上临时标记,其BW(101)中的BW(120,101)=2-1=1,未标记链路011的LMC(011)并上 LMC(011)由空集变为{1},转子步骤4.19;
[0144] 4.19、令节点101为当前节点x,转步骤五;
[0145] 五、入栈步骤:
[0146] 5.1、当前节点101有两个邻居节点102和106,它们均满足:未被标记,D min(102)=2<∞,D min(106)=0<∞,且BW(101,102)=BW(101,106)=2≠0,则构成节点集合VIC={102,106},进行子步骤5.2;
[0147] 5.2、当前节点101在多播树1中的来源链路E1(101)为011,链路011的链路标记集合LMC(011)={LM1(011)}={1},则令节点集合VI=节点集合VIC={102,106},并转子步骤5.8;
[0148] 5.8、VI中的节点102和106,BW(102)以及BW(106)均等于初始值,NC(102)=NC(106)=0,均不满足子步骤5.8、5.10、5.12中构成子集合VI1、VI2和VI3的条件,转子步骤5.14;
[0149] 5.14、VI中仅节点102满足非信宿节点且BW(102)等于初始值,所以构成子集合VI4={102},并进行子步骤5.15;
[0150] 5.15、VI4中的节点102,构成节点102-链路121对并压入路由栈;
[0151] 5.16、VI中有信宿节点106,由其构成节点106-链路161对压入路由栈,并转步骤四;
[0152] 四、出栈步骤:
[0153] 4.1、路由栈不为空,进行子步骤4.2;
[0154] 4.2、从路由栈中取出一个节点-链路对为节点106-链路161对,令其对应的始节点101为当前节点x,节点101不为信源节点,进行子步骤4.3;
[0155] 4.3、当前节点101在当前多播树1中的来源链路E1(101)为011,链路011的链路标记集合LMC(011)={LM1(011)}={1},则多播树1的当前链路标记进行子步骤4.4;
[0156] 4.4、节点106-链路161对为信宿节点-未标记链路对,进行子步骤4.5;
[0157] 4.5、对该信宿节点106进行增流检验,由于以节点106为终节点的链路161、162、761、762均未标记,所以通过增流检验,进行子步骤4.6;
[0158] 4.6、在未标记链路161的链路标记集合LMC(161)中并上多播树1的当前链路标记, 则LMC(161)由空集变为{1},节点106的BW(106)中BW(101,106)=2-1=1,从节点106开始反向沿着链路标记集合中含多播树1的链路标记LM1的有向链路,首先给节点106加上确定标记,然后反向沿着LMC(161)为{1}的链路161,经节点101将101的节点标记改为确定标记,继续反向沿着LMC(011)为{1}的链路011遇已为确定标记的信源节点120才结束;进行子步骤4.7;
[0159] 4.7、信宿节点108和110还未标记,转子步骤4.1;
[0160] 顺序进行子步骤4.1、4.2、4.3、4.4、4.9、4.10、4.13、4.19,路由栈不为空,从路由栈中取出节点102-链路121对,令其对应的始节点101为当前节点x,得多播树1的当前链路标记 给节点102加上临时标记,其BW(102)中的BW(101,102)=2-1=1,未标记链路121的链路标记集合LMC(121)中并上多播树1的当前链路标记LMC(121)由空集变为{1},令节点102为当前节点x,转步骤五;
[0161] 五、中间节点入栈步骤:
[0162] 顺序进行子步骤5.1、5.2、5.8、5.10、5.12、5.14、5.15、5.16,当前节点102的唯一邻居节点107,满足条件构成节点集合VIC={107},由当前节点102在多播树1中的来源链路E1(102)为链路121,链路121的链路状态LMC(121)={LM1(121)}={1},则令节点集合VI=节点集合VIC={107},节点107为BW(107)等于初始值的非信宿节点,并不满足子步骤5.8、5.10、5.12中构成子集合VI1、VI2和VI3的条件,由其构成子集合VI4={107},并构成节点107-链路271对,压入路由栈,转步骤四;
[0163] 四、出栈步骤:
[0164] 顺序进行子步骤4.1、4.2、4.3、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点107-链路271对,令节点102为当前节点x,多播树1的当前链路标记 给
节点107加上临时标记,BW(107)中的BW(102,107)=2-1=1,链路271的链路标记集合LMC(271)并上当前链路标记, LMC(271)由空集变为{1},令节点107为当前节点x,转步骤五;
[0165] 五、中间节点入栈步骤:
[0166] 顺序进行子步骤5.1、5.2、5.8、5.10、5.12、5.14、5.16,当前节点107的唯一未标记的邻居节点108,为BW(107,108)>0的信宿节点,构成节点108-链路781对压入路由栈,并转步骤四;
[0167] 四、出栈步骤:
[0168] 顺序进行子步骤4.1、4.2、4.3、4.4、4.5、4.6、4.7,从路由栈中取出节点108-链路781对,令该节点-链路对对应的始节点107为当前节点x,多播树1的当前链路标记对信宿节点108进行增流检验,通过增流检验,在链路781的链路标记集合LMC(781)中并上多播树1的当前链路标记, LMC(781)由空集变为{1},节点
108的BW(108)中BW(107,108)=2-1=1,给节点108加上确定标记,将节点107、102的临时标记改为确定标记,信宿节点110还未标记,转子步骤4.1;
[0169] 顺序进行子步骤4.1、4.2、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点105-链路051对,令其对应的始节点120为当前节点x,多播树1的当前链路标记给节点105加上临时标记,其BW(105)中的BW(120,105)=2-1=1,链路051的链路标记集合LMC(051)中并上多播树1的当前链路标记, LMC(051)由空集变为{1},设置节点105为当前节点x,转步骤五;
[0170] 五、中间节点入栈步骤:
[0171] 顺序进行子步骤5.1、5.2、5.8、5.10、5.12、5.14、5.15、5.16,当前节点105有两个邻居节点104和110,构成节点104-链路541对、节点110-链路501对先后压入路由栈,转步骤四;
[0172] 四、出栈步骤:
[0173] 顺序进行子步骤4.1、4.2、4.3、4.4、4.5、4.6、4.7,4.8,从路由栈中取出节点110-链路501对,令其对应的始节点105为当前节点x,多播树1的当前链路标记对信宿节点110进行增流检验,通过增流检验,在链路501的链路标记集合LMC(501)中并上多播树1的当前链路标记, LMC(501)由空集变为{1},节点
110的BW(110)中BW(105,110)=2-1=1,给节点110加上确定标记,将节点105的临时标记改为确定标记,信宿节点全都被加上了确定标记,此时并未达到网络最大流f,清除所有节点的节点标记,清零路由栈和网络编码栈,转步骤二;
[0174] 建完多播树1后,链路标记集合发生改变的链路及变化如下:
[0175] 链路011、161、121、271、781、051、501的链路标记集合均由空集变为{1},其他链路的链路标记集合保持初始状态为空集。
[0176] 二、建树启动步骤:
[0177] 2.1、设置信源节点120为当前节点x,并加上确定标记;
[0178] 2.2、置当前在建多播树编号N=N+1=1+1=2,转步骤三;
[0179] 三、信源节点入栈步骤:
[0180] 3.1、当前节点x为信源节点120,它有三个邻居节点101,103和105,均满足条件:未被标记,BW(120,103)=2>0,BW(120,101)=BW(120,105)=1>0,且Dmin(101)=
1,Dmin(103)=3,Dmin(105)=1,均小于∞,所以构成节点集合VS={101,103,105},并进行子步骤3.2;
[0181] 3.2、对于VS中的节点101,103和105,构成3个节点-未标记链路对:节点101-链路012对,节点103-链路031对,节点105-链路052对;
[0182] 3.3、集合VS中的节点其NC(101)=NC(103)=NC(105)=0,不满足构成子集合VS1的条件,转子步骤3.5;
[0183] 3.5集合VS中的节点101和105满足条件:非信宿节点、BW(101)和BW(105)不为初始值且NC(101)=NC(105)=0,则构成子集合VS2={101,105},进行子步骤3.6;
[0184] 3.6、VS2中的节点其BW(120,101)=BW(120,105)=1,则按节点的D max(vi)的大小从小到大,Dmax(101)=Dmax(105)=∞,由节点101、105组成的节点-链路对,以任意顺序压入路由栈,假定节点105-链路052对先入路由栈,节点101-链路012对后入路由栈,进行子步骤3.7;
[0185] 3.7、集合VS中的节点103为BW(103)等于初始值的非信宿节点,构成子集合VS3={103},进行子步骤3.8;
[0186] 3.8、构成节点103-链路031对压入路由栈,进行子步骤3.9;
[0187] 3.9、集合VS中不存在信宿节点,转步骤四;
[0188] 四、出栈步骤:
[0189] 顺序进行子步骤4.1、4.2、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点103-链路031对,令节点120为当前节点x,多播树2的当前链路标记 节点103加上临时标记,其BW(103)中的BW(120,103)=2-1=1,未标记链路031的LMC(031)并上LMC(031)由空集变为{2},令节点103为当前节点x,转步骤五;
[0190] 五、入栈步骤:
[0191] 顺序进行子步骤5.1、5.2、5.8、5.10、5.11、5.12、5.14、5.15、5.16,当前节点103T有两个邻居节点102和104,节点102为非信宿节点,其BW(102)=[12] 不等于初始值,BW(103,102)=2<f-(N-1)=4-(2-1)=3且NC(102)=0,则构成节点102-链路321对,先压入路由栈,节点104也为非信宿节点、且其BW(104)等于初始值,构成节点104-链路341对,后压入路由栈,转步骤四;
[0192] 四、出栈步骤:
[0193] 顺序进行子步骤4.1、4.2、4.3、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点104-链路341对,令其对应的始节点103为当前节点x,多播树2的当前链路标记给节点104加上临时标记,其BW(104)中的BW(103,104)=2-1=1,未标记链路341的链路标记集合LMC(341)中并上多播树2的当前链路标记,LMC(341)由空集变为{2},令节点104为当前节点x,转步骤五;
[0194] 五、中间节点入栈步骤:
[0195] 顺序进行子步骤5.1、5.2、5.8、5.10、5.12、5.14、5.15、5.16,当前节点104的唯一一个邻居节点109,构成节点109-链路491对,压入路由栈,转步骤四;
[0196] 四、出栈步骤:
[0197] 顺序进行子步骤4.1、4.2、4.3、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点109-链路491对,令其对应的始节点104为当前节点x,多播树2的当前链路标记给节点109加上临时标记,BW(109)中的BW(104,109)=2-1=1,链路491的链路标记集合LMC(491)并上多播树2的当前链路标记, LMC(491)由空集变为{2},令节点109为当前节点x,转步骤五;
[0198] 五、中间节点入栈步骤:
[0199] 顺序进行子步骤5.1、5.2、5.8、5.10、5.12、5.14、5.16,当前节点109的邻居节点中有两个未标记的邻居节点108和110,均为的信宿节点,且BW(109,108)>0、BW(119,110)>0,构成节点108-链路981对和节点110-链路901对,以任意顺序压入路由栈,假定节点108-链路981对先入路由栈,节点110-链路901对后入路由栈,并转步骤四;
[0200] 四、出栈步骤:
[0201] 顺序进行子步骤4.1、4.2、4.3、4.4、4.5、4.6、4.7,从路由栈中取出节点110-链路901对,令节点109为当前节点x,多播树2的当前链路标记 对信宿节点
110进行增流检验,由于以节点110为终节点的有向链路501,502,901,902中,仅链路501有标记,LMC(501)={LM1(501)}={1},其中的链路标记LM1(501)不与 相同,所以通过增流检验,在链路901的链路标记集合LMC(901)中并上多播树2的当前链路标记,LMC(901)由空集变为{2},节点110的BW(110)中BW(109,110)=2-1=1,给110加上确定标记,将节点109、104、103的临时标记改为确定标记,信宿节点108和106还未标记,转子步骤4.1;
[0202] 顺序进行子步骤4.1、4.2、4.3、4.4、4.5、4.6、4.7从路由栈中取出节点108-链路981对,令节点109为当前节点x,多播树2的当前链路标记 对信宿节
点108进行增流检验,通过增流检验,LMC(981)中并上 LMC(981)由空集变为
{2},节点108的BW(108)中BW(109,108)=2-1=1,给108加上确定标记,信宿节点106还未标记,转子步骤4.1;
[0203] 顺序进行子步骤4.1、4.2、4.3、4.4、4.9、4.10、4.13、4.19,从路由栈中取出节点102-链路321对,令其对应的始节点103为当前节点x,多播树2的当前链路标记给节点102加上临时标记,其BW(102)中的BW(103,102)=2-1=1,LMC(321)中并上多播树2的当前链路标记, LMC(321)由空集变为{2},令节点102为当前节点x,转步骤五;
[0204] 五、中间节点入栈步骤:
[0205] 顺序进行子步骤5.1、5.2、5.8、5.10、5.11、5.12、5.14、5.16,当前节点102的唯一一个邻居节点107,首先构成节点107-链路272对压入路由栈,然后构成节点107-链路271对压入路由栈,转步骤四;
[0206] 四、出栈步骤:
[0207] 4.1、路由栈不为空,进行子步骤4.2;
[0208] 4.2、从路由栈中取出一个节点-链路对为节点107-链路271对,令该节点-链路对对应的始节点102为当前节点x,当前节点102不为信源节点,进行子步骤4.3;
[0209] 4.3、节点102在多播树2中的来源链路E2(102)为链路321,链路321的链路标记集合LMC(321)={LM2(321)}={2},则多播树2的当前链路标记 进行子步骤4.4;
[0210] 4.4、取出的节点107-链路271对为非信宿节点-链路对,转子步骤4.9;
[0211] 4.9、当前节点102未被加上确定标记,且节点107的网络编码操作数NC(107)=0,不满足条件,进行子步骤4.10;
[0212] 4.10、节点107-链路271对为非信宿节点-已标记链路对,进行子步骤4.11;
[0213] 4.11、给节点107加上临时标记,链路271的链路标记集合LMC(271)中并上多播树2的当前链路标记, LMC(271)由{LM1(271)}={1}变为{LM1(271),LM2(271)}={1,2},当前节点102的网络编码操作数NC(102)=NC(102)+1=0+1=1,进行子步骤4.12;
[0214] 4.12、出栈的节点-已标记链路对中已标记链路271的链路标记集合为LMC(271)={LM1(271),LM2(271)}={1,2},由N=2,可知z=1,则替换因 子查 找
因子 遍历以该107为根节点的子树,检查子树中所有链路的链路标记
集合中的链路标记,可知以节点107为根节点的子树包含图中四条有向链路761,762,781,
782,其中仅链路781的LMC(781)非空,LMC(781)={LM1(781)}={1},该链路标记集合中的链路标记LM1(781)=1,与查找因子串相同,将其替换成替换因子Rep1=1(1+2)102,则LMC(781)里的LM1(781)由1变成了1(1+2)102,LMC(781)由{1}变成了{1(1+2)102},转子步骤4.19;
[0215] 4.19、令节点107为当前节点x,转步骤五;
[0216] 五、中间节点入栈步骤:
[0217] 5.1、当前节点107的邻居节点中只有一个未标记的邻居节点106,且节点106为BW(107,106)>0的信宿节点,构成节点集合VIC={106},转子步骤5.2;
[0218] 5.2、当前节点107在多播树2中的来源链路E2(107)为链路271,链路271的链路标记集合LMC(271)={LM1(271),LM2(271)}={1,2},进行子步骤5.3;
[0219] 5.3、当前节点107在多播树2中的来源链路271的链路标记集合为LMC(107)={LM1(271),LM2(271)}={1,2},节点集合VIC中节点106为信宿节点,令节点集合VI=VIC={106},转子步骤5.8;
[0220] 5.8、集合VI中节点106不满足子步骤5.8、5.10、5.12、5.14中构成子集合V1、V2、V3、V4的条件,转子步骤5.16;
[0221] 5.16、集合VI中节点106为信宿节点,由其构成信宿节点106-链路761对,压入路由栈,并转步骤四;
[0222] 四、出栈步骤:
[0223] 4.1、路由栈不为空,进行子步骤4.2;
[0224] 4.2、从路由栈中取出一个节点-链路对为节点106-链路761对,令其对应的始节点107为当前节点x,节点107不为信源节点,转子步骤4.3;
[0225] 4.3、节点107在多播树2中的来源链路E2(107)为链路271,链路271的链路标记集合LMC(271)={LM1(271),LM2(271)}={1,2},则令多播树2的当前链路标记进行子步骤4.4;
[0226] 4.4、取出的节点106-链路761对为信宿节点-未标记链路对,进行子步骤4.5;
[0227] 4.5、对信宿节点106进行增流检验,由于以节点106为终节点的有向链路161,162,761,762中,仅链路161有标记,LMC(161)={LM1(161)}={1},通过去掉 括号前面的多播树编号2以及交换加号连接的各元素的连接次序后,LM1(161)与 并不会相同,所以通过增流检验,进行子步骤4.6;
[0228] 4.6在LMC(761)中并上多播树2的当前链路标记 LMC(761)由空集变为{2(1+2)102},节点106的BW(106)中BW(107,106)=2-1=1,给节点106加上确定标记,将节点107、102的临时标记改为确定标记,进行子步骤4.7;
[0229] 4.7、信宿节点全都被加上了确定标记,转子步骤4.8;
[0230] 4.8、此时并未达到网络最大流f,清除所有节点的节点标记,清零路由栈和网络编码栈,转步骤二;
[0231] 建完多播树2后,链路标记集合发生改变的链路及变化如下:
[0232] 链路031、321、341、491、981、901的链路标记集合由空集变为{2},链路271的链路标记集合由{1}变为{1,2},链路761的链路标记集合由空集变为{2(1+2)102},链路781链路标记集合由{1}变为{1(1+2)102},链路011、161、121、051、501的链路标记集合继续保持为{1},其他链路的链路标记集合保持初始状态为空集。
[0233] 在建多播树3的过程中,当前节点为104时,进行步骤五,将节点109-链路492对和节点109-链路491对先后压入路由栈,转步骤四,取出节点109-链路491对,为非信宿节点-已标记链路对,给节点109加上临时标记,链路491的链路标记集合LMC(491)由{2}变为{2,3},节点104的网络编码操作数加1,NC(104)=0+1=1,LMC(981)和LMC(901)均由{2}变为{2(2+3)104},令节点109为当前节点,转步骤五,将节点108-链路982对压入路由栈,继续转步骤四,取出为节点108-链路982对,由当前节点109在多播树3中的来源链路491的链路标记集合LMC(491)={2,3},多播树3的当前链路标记以信宿节点108为终节点的已标记链路981其LMC(981)={LM2(981)}={2(2+3)104},除去 和LM2(981)括号前的多播树编号后,两者完全相同,信宿节点108的增流检验不能通过,转步骤六,回溯步骤;
[0234] 六、回溯步骤:
[0235] 6.1、路由栈不为空,设置路由栈最上面的节点109-链路491对对应的始节点104为停止点,转子步骤6.3;
[0236] 6.3、当前节点109既不为停止点也未被加上确定标记,进行子步骤6.4;
[0237] 6.4、清除当前节点109的临时标记,多播树3中109的来源链路E3(109)为链路491,LMC(491)={LM2(491),LM3(491)}={2,3},进行子步骤6.5;
[0238] 6.5、当前节点109在多播树3中的父节点104的网络编码操作数减1,NC(104)=1-1=0,由LMC(491)={LM2(491),LM3(491)}={2,3},令替换因子Rep2=2,查找因子Sek2=2(2+3)104,以节点109为根节点的子树中的链路981和链路901的链路标记集合LMC(981)={LM2(901)}={LM2(981)}={2(2+3)104},其中的链路标记与查找因子Sek2=
2(2+3)104相同,将其替换为替换因子Rep2=2,则LMC(981)={LM2(901)}={LM2(981)}={2},进行子步骤6.6;
[0239] 6.6、除去当前节点109在多播树3中的来源链路491的链路标记集合LMC(491)中多播树3的链路标记LM3(491)=3,设置当前节点109在多播树3中的父节点104为新的当前节点,转子步骤6.3;
[0240] 6.3、当前节点104为停止点,将信源节点设为停止点,转步骤四;
[0241] 建完多播树3后,链路标记集合发生改变的链路及变化如下:
[0242] 链路012、162、052、502、541、492、982的链路标记集合由空集变为{3},链路011、161、121、051、501的链路标记集合继续保持为{1},链路031、321、341、491、981、901的链路标记集合继续保持为{2},链路271的链路标记集合为{1,2},链路761的链路标记集合为{2(1+2)102},链路781的链路标记集合为{1(1+2)102},其他链路的链路标记集合保持初始状态为空集。
[0243] 建完多播树4后,链路标记集合发生改变的链路及变化如下:
[0244] 链路032、322、342、272、762、782链路标记集合由空集变为{4},链路492的链路标记集合由{3}变为{3,4},链路982的链路标记集合由{3}变为{3(3+4)104},链路902的链路标记集合由空集变为{4(3+4)104},链路011、161、121、051、501的链路标记集合继续保持为{1},链路031、321、341、491、981、901的链路标记集合继续保持为{2},链路012、162、052、502、541的链路标记集合继续保持为{3},链路271的链路标记集合继续为{1,2},链路
761的链路标记集合继续为{2(1+2)102},链路781的链路标记集合继续为{1(1+2)102},其他链路的链路标记集合保持初始状态为空集。