一种路径计算方法及装置的制作方法

文档序号:7765456阅读:317来源:国知局
专利名称:一种路径计算方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种路径计算方法及装置。
背景技术
KSP算法,即K优路径算法,在无向图中可以按代价大小,依次求出拓扑中源节点 和目的节点之间的第一优路径、第二优路径直至第K优路径。K值可以任意设置,只要拓扑 中有足够多路径。KSP算法本身很复杂,如果拓扑中,任意两个节点之间存在多条链路(1条以上), 则KSP算法将会更加复杂。其复杂体现在两个层面,一个是理解上复杂,当需要经过或者避 开某一条链路时,不仅需要指明链路从哪个节点到哪个节点,还需指明从哪个端口到哪个 端口,复杂度上多了一层;另外,在实现上也很复杂,对于两条甚至更多的路径,其经过的节 点可能完全一样,只是经过的链路不同而已,但是,KSP算法将经过节点相同而经过链路不 同的路径认为是完全不同的路径,为了完成路径的选择,需要多次遍历整个拓扑,多次调用 D (Dijkstra)算法,拓扑越大遍历次数越多,实现的效率很低。为了简单起见,有人将KSP 算法只用在节点间单链路的拓扑中。在节点间单链路的拓扑中,KSP算法实现的总体流程如下,请参照图1,包括 步骤101,调用Dijkstra算法计算第一优路径Pl ;
步骤102,判断计算出的路径的数量是否满足要求,如果满足,则退出算法,停止计算; 如果不满足,则执行步骤103,继续计算;
步骤103,调用KSP算法,在节点间单链路的拓扑上,计算下一优路径,转步骤102,进行 判断。上述方法仅支持节点间具有单链路的拓扑,无法在节点间具有多链路的拓扑中使 用,局限性很大。

发明内容
本发明要解决的技术问题是提供一种路径计算方法及装置,实现在节点间具有多 链路的拓扑中进行路径计算。为解决上述技术问题,本发明提供了一种路径计算方法,包括
对多链路拓扑进行简化运算,得到单链路拓扑,在所述单链路拓扑中计算路径,并且, 从计算出的路径中选中路径输出结果后,根据所述多链路拓扑中节点间存在的多条链路, 组合出与所述路径输出结果经过相同节点的扩展路径,从该扩展路径或计算出的路径中继 续选择路径输出结果。进一步地,所述在所述单链路拓扑中计算路径的步骤包括
在所述单链路拓扑中,计算第一优路径,选中该第一优路径作为一路径输出结果,并在该单链路拓扑中继续计算下一优路径进一步地,所述从该扩展路径或计算出的路径中继续选择路径输出结果的步骤包 括
从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径与所述下一优路 径进行代价比较,将比较得到的代价较小的路径作为一路径输出结果。进一步地,该方法还包括
在所述代价较小的路径为从所述扩展路径中选择出的路径时,则将该路径从所述扩展 路径中去除,并继续从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径 与所述下一优路径进行代价比较。进一步地,该方法还包括
在所述代价较小的路径为所述下一优路径时,则根据所述多链路拓扑中节点间存在的 多条链路,组合出与所述下一优路径经过相同节点的扩展路径,将该扩展路径合并到已存 在的扩展路径中,并在单链路拓扑中再次计算路径,从合并后的扩展路径或计算出的路径 中选择路径输出结果。进一步地,所述对多链路拓扑进行简化运算的步骤包括
当所述多链路拓扑中两节点间存在多条链路时,保留该两节点间代价最小的一条链路。进一步地,该方法还包括
所述从计算出的路径中选中路径输出结果后,还判断所述路径输出结果的数量是否达 到预设的数量值,如果未达到,则执行所述根据所述多链路拓扑中节点间存在的多条链路, 组合出与所述路径输出结果经过相同节点的扩展路径。进一步地,一种路径计算装置,包括路径计算单元、路径选择单元和路径扩展单 元,其中
所述路径计算单元,用于对多链路拓扑进行简化运算,得到单链路拓扑,在所述单链路 拓扑中计算路径;
所述路径选择单元,用于在所述路径计算单元计算路径后,从计算出的路径中选中路 径输出结果,并在所述路径扩展单元组合出与所述路径输出结果经过相同节点的扩展路径 后,从该扩展路径或计算出的路径中继续选择路径输出结果;
所述路径扩展单元,用于在所述路径选择单元从计算出的路径中选中路径输出结果 后,根据所述多链路拓扑中节点间存在的多条链路,组合出与所述路径输出结果经过相同 节点的扩展路径。进一步地,所述路径计算单元在所述单链路拓扑中计算路径的步骤包括
在所述单链路拓扑中,计算第一优路径,选中该第一优路径作为一路径输出结果,并在 该单链路拓扑中继续计算下一优路径。进一步地,所述路径选择单元从该扩展路径或计算出的路径中继续选择路径输出 结果的步骤包括
从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径与所述下一优路 径进行代价比较,将比较得到的代价较小的路径作为一路径输出结果。进一步地,所述路径选择单元,还用于在所述代价较小的路径为从所述扩展路径中选择出的路径时,则将该路径从所述扩展路径中去除,并继续从所述扩展路径中选择代 价最小的路径,将所选择的代价最小的路径与所述下一优路径进行代价比较。进一步地,所述路径选择单元,还用于在所述代价较小的路径为所述下一优路径 时,则根据所述多链路拓扑中节点间存在的多条链路,组合出与所述下一优路径经过相同 节点的扩展路径,将该扩展路径与已存在的扩展路径进行合并,并在单链路拓扑中再次计 算路径,从合并后的扩展路径或计算出的路径中选择路径输出结果。综上所述,本发明使得KSP算法能够有效处理节点间多链路的拓扑,理解起来复 杂度低,实现起来效率更高。


图1是现有的KSP算法在单链路拓扑中实现的流程图; 图2是本发明实施方式在多链路拓扑中实现的流程图3是原始的多链路拓扑的示意图; 图4是对多链路拓扑简化后的单链路拓扑的示意图; 图5是本实施方式路径计算装置的结构图。
具体实施例方式本实施方式中通过KSP算法在节点间为单链路的拓扑中计算路径,参考节点间为 多链路的拓扑,采用节点间的多条链路,通过组合的方式,对计算出的路径进行扩展,得到 所有可能的路径。下面结合附图对本实施方式进行详细说明。
如图2所示为本实施方式的路径计算方法,包括
步骤201,获取并保存原始拓扑,原始拓扑中的节点间可能存在多条链路(下面将原始 拓扑简称为多链路拓扑);
步骤202,对获取到的多链路拓扑进行简化,简化为节点间为单链路的拓扑(下面简称 单链路拓扑);
对多链路拓扑简化的过程包括对两个节点间存在多条链路的地方,只保留代价最小 的一条链路,如果代价最小的链路为多条,则随机保留其中一条,从而将原始拓扑修改为单 链路拓扑。步骤203,调用D算法,在单链路拓扑中,计算第一优路径Pl ; 步骤204,选中第一优路径Pl作为一个路径输出结果;
步骤205,判断路径输出结果的数量是否达到预设的数量值,如果满足,则退出算法,停 止计算;如果不满足,则执行步骤206,继续计算;
步骤206,根据已保存的多链路拓扑中节点间的多条链路,通过组合的方式,得到与选 中的路径经过完全相同的节点的扩展路径,将扩展出的所有路径,放入路径集合中,更新路 径集合;在步骤202中是对多链路拓扑进行简化运算,而并非在物理实体上将多链路拓扑进行 结构的简化,根据单链路拓扑计算出路径后,还需要根据所保存的多链路拓扑,通过组合的 方式得到扩展路径,以实现本实施方式为多链路拓扑计算路径的目的。步骤207,调用KSP算法,在单链路拓扑中,计算下一优路径Pk ;
计算出第一优路径后,需要将第一优路径作为一个路径输出结果,如果路径的数量不 满足要求,则对第一优路径进行扩展,并调用KSP算法计算下一优路径,从下一优路径和路 径集合中选择路径输出结果,如果选择下一优路径作为路径输出结果,则对该路径进行扩 展,如果选择路径集合中的路径,则不对该路径进行扩展。步骤208,从路径集合中选择代价最小的一条路径Pb ;
步骤209,比较Pb与Pk代价的大小,选出代价小的路径,作为多链路拓扑的一个路径输 出结果;
如果选中Pb,则将Pb从路径集合中删除。步骤210,判断路径输出结果的数量是否满足要求,如果满足,则退出算法,停止计 算;如果不满足,则执行步骤211 ;
步骤211,判断选中的路径输出结果是Pb还是Pk,如果是Pb,则跳至步骤208 ;如果选 中Pk,则跳至步骤206 ;
在步骤211中,如果选中Pb作为路径输出结果,则仍然从原来的路径集合中选出代价 最小的路径,也无需执行KSP算法,Pk不变。随后,继续比较新选出的Pb与Pk。如果选中 Pk作为路径输出结果,则对Pk进行扩展,并更新路径集合,还要执行KSP算法,重新计算 Pk,并从重新计算的Pk和更新后的路径集合中选择下一个路径输出结果,并以此循环。
在附图3的拓扑中,以节点1为源节点,以节点5为目的节点,求出代价最小的4条路 径,P1、P2、P3和P4。下面结合附图3和附图4对本实施方式的实现方法进行说明,包括 步骤1,获取原始的多链路拓扑(如附图3);
步骤2,对多链路拓扑进行简化,对于节点间存在多条链路的地方,只保留代价最小的 一条链路,简化结果如图4所示;
步骤3,调用D算法,在单链路拓扑中,求第一优路径Pl (点1一>点2—>点3—>点 4->点5,代价为1+1+1+1=4),这也是原始拓扑的第一优路径;
步骤4,判断所求路径的数量是否满足要求,要求获得4条路经,现在只有1条,所以不 满足要求,需要继续往下求;
步骤5,调用KSP算法,在单链路拓扑中,求下一优路径Pk,即点1一>点2—>点6—> 点4—>点5,代价为1+6+1+1=9 ;
步骤6,根据原始的多链路拓扑,针对单链路拓扑中被选中的路径P1,进行路径扩展, 通过组合的方式,扩展出Pl的所有路径形式,将扩展出来的路径放入集合B中,更新集合 B ;
扩展出的路径经过的节点都一样(点1一>点2—>点3—>点4一>点5),只是代价 不同,下面以不同的链路选择来表示这些路径,Pll 1+5+1+1=8 ;P12 1+1+8+1=11 ;P13 1+5+8+1=15。目前集合B中包含Pll (代价为8)、P12 (代价为11)和P13 (代价为15)。步骤7,从集合B中选择代价最小的一条路径,作为Pb,即P11,代价为8 ;步骤8,比较Pb (代价为8)与Pk (代价为9)的大小,选出代价小的一个,即Pb作为原 始拓扑的第二优路径,即P2 (点1->点2->点3->点4->点5,代价为1+5+1+1=8),将 Pll从集合B中删除;
步骤9,判断所求路径数量是否满足要求,要求获得4条路经,现在只有2条,所以不满 足要求,需要继续往下求;
步骤10,判断刚才选的是Pb还是Pk,因为选择了 Pb,所以跳至步骤7,继续选择下一优 路径,即,从集合B (现在包含P12、P13)中找出代价最小的一条路径Pb,即P12,代价为11 ; 步骤11,重复步骤8,比较Pb (代价为11)与Pk (代价为9)的大小,选出代价小的一 个,即Pk作为原始拓扑的第三优路径,即P3 (点1->点2->点6->点4->点5,代价为 1+6+1+1=9);
步骤12,重复步骤9,判断所求路径数量是否满足要求,要求获得4条路经,现在只有3 条,所以不满足要求,需要继续往下求;
步骤13,重复步骤10,判断刚才选的是Pb还是Pk,因为选择了 Pk,所以跳至步骤5,调 用KSP算法,在单链路拓扑中,求下一优路径Pk,即点1一>点2—>点7—>点3—>点4一> 点 5,代价为 1+10+8+1+1=21 ;
步骤14,重复步骤6,根据原始的多链路拓扑,针对单链路拓扑中被选中的一条路径 P3,进行路径扩展,通过组合的方式,扩展出P3的所有路径形式,将扩展出来的路径放入集 合B中,更新集合B;
P3扩展出的路径经过的节点都一样(点1一>点2—>点6—>点4一>点5),只是代价 不同,下面以不同的链路选择来表示这些路径,P31 :1+6+2+1=10。目前集合B包含P12 (代 价为11)、P13 (代价为15)和P31 (代价为10);
步骤15,重复步骤7,从集合B中找出代价最小的一条路径Pb,即P31,代价为10 ; 步骤16,重复步骤8,比较Pb(代价为10)与Pk(代价为21)代价的大小,选出代价小的一 个,即Pb作为第四优路径,即P4(点1—>点2—>点6—>点4—>点5,代价为1+6+2+1=10), 将P31从集合B中删除;
步骤17,重复步骤9,判断所求路径数量是否满足要求,要求获得4条路经,现在已4 条,所以满足要求,退出算法。
最终获得的4条路径为
Pl(点 1—〉占2—>占3—>占4--> 点 5,代价为 1+1+1+1=4);P2(点 1—〉占2—>占3—>占4--> 点 5,代价为 1+5+1+1=8);P3(点 1—〉占2—>占6—>占4--> 点 5,代价为 1+6+1+1=9);P4(点 1—〉占2—>占6—>占4--> 点 5,代价为 1+6+2+1=10)
图5为本实施方式的路径计算装置,包括路径计算单元、路径选择单元和路径扩展单 元,其中
路径计算单元,用于对多链路拓扑进行简化运算,得到单链路拓扑,在单链路拓扑中计 算路径;在单链路拓扑中计算路径的步骤包括在单链路拓扑中,计算第一优路径,选中该 第一优路径作为一路径输出结果,并在该单链路拓扑中继续计算下一优路径。在代价较小 的路径为从扩展路径中选择出的路径时,则将该路径从扩展路径中去除,并继续从扩展路径中选择代价最小的路径,将所选择的代价最小的路径与下一优路径进行代价比较。在代 价较小的路径为下一优路径时,则根据多链路拓扑中节点间存在的多条链路,组合出与下 一优路径经过相同节点的扩展路径,将该扩展路径与已存在的扩展路径进行合并,并在单 链路拓扑中再次计算路径,从合并后的扩展路径或计算出的路径中选择路径输出结果。路径选择单元,用于在路径计算单元计算路径后,从计算出的路径中选中路径输 出结果,并在路径扩展单元组合出与路径输出结果经过相同节点的扩展路径后,从该扩展 路径或计算出的路径中继续选择路径输出结果;从该扩展路径或计算出的路径中继续选择 路径输出结果的步骤包括从扩展路径中选择代价最小的路径,将所选择的代价最小的路 径与下一优路径进行代价比较,将比较得到的代价较小的路径作为一路径输出结果。路径扩展单元,用于在路径选择单元从计算出的路径中选中路径输出结果后,根 据多链路拓扑中节点间存在的多条链路,组合出与路径输出结果经过相同节点的扩展路 径。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关 硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地, 上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施 例中的各模块可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不 限制于任何特定形式的硬件和软件的结合。当然,本发明还可有多种实施方式,在不背离本发明精神及其实质的情况,熟悉本 领域的技术人员当可根据本发明做出各种相应的更改或变化,但凡在本发明的精神和原则 之内所作的任何修改、等同替换、改进,均应包含在本发明的保护范围之内。
9
权利要求
一种路径计算方法,包括对多链路拓扑进行简化运算,得到单链路拓扑,在所述单链路拓扑中计算路径,并且,从计算出的路径中选中路径输出结果后,根据所述多链路拓扑中节点间存在的多条链路,组合出与所述路径输出结果经过相同节点的扩展路径,从该扩展路径或计算出的路径中继续选择路径输出结果。
2.如权利要求1所述的方法,其特征在于,所述在所述单链路拓扑中计算路径的步骤 包括在所述单链路拓扑中,计算第一优路径,选中该第一优路径作为一路径输出结果,并在 该单链路拓扑中继续计算下一优路径。
3.如权利要求2所述的方法,其特征在于,所述从该扩展路径或计算出的路径中继续 选择路径输出结果的步骤包括从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径与所述下一优路 径进行代价比较,将比较得到的代价较小的路径作为一路径输出结果。
4.如权利要求3所述的方法,其特征在于,该方法还包括在所述代价较小的路径为从所述扩展路径中选择出的路径时,则将该路径从所述扩展 路径中去除,并继续从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径 与所述下一优路径进行代价比较。
5.如权利要求3所述的方法,其特征在于,该方法还包括在所述代价较小的路径为所述下一优路径时,则根据所述多链路拓扑中节点间存在的 多条链路,组合出与所述下一优路径经过相同节点的扩展路径,将该扩展路径合并到已存 在的扩展路径中,并在单链路拓扑中再次计算路径,从合并后的扩展路径或计算出的路径 中选择路径输出结果。
6.如权利要求1所述的方法,其特征在于,所述对多链路拓扑进行简化运算的步骤包括当所述多链路拓扑中两节点间存在多条链路时,保留该两节点间代价最小的一条链路。
7.如权利要求1所述的方法,其特征在于,该方法还包括所述从计算出的路径中选中路径输出结果后,还判断所述路径输出结果的数量是否达 到预设的数量值,如果未达到,则执行所述根据所述多链路拓扑中节点间存在的多条链路, 组合出与所述路径输出结果经过相同节点的扩展路径。
8.—种路径计算装置,包括路径计算单元、路径选择单元和路径扩展单元,其中 所述路径计算单元,用于对多链路拓扑进行简化运算,得到单链路拓扑,在所述单链路拓扑中计算路径;所述路径选择单元,用于在所述路径计算单元计算路径后,从计算出的路径中选中路 径输出结果,并在所述路径扩展单元组合出与所述路径输出结果经过相同节点的扩展路径 后,从该扩展路径或计算出的路径中继续选择路径输出结果;所述路径扩展单元,用于在所述路径选择单元从计算出的路径中选中路径输出结果 后,根据所述多链路拓扑中节点间存在的多条链路,组合出与所述路径输出结果经过相同 节点的扩展路径。
9.如权利要求8所述的装置,其特征在于,所述路径计算单元在所述单链路拓扑中计 算路径的步骤包括在所述单链路拓扑中,计算第一优路径,选中该第一优路径作为一路径输出结果,并在 该单链路拓扑中继续计算下一优路径。
10.如权利要求9所述的装置,其特征在于,所述路径选择单元从该扩展路径或计算出 的路径中继续选择路径输出结果的步骤包括从所述扩展路径中选择代价最小的路径,将所选择的代价最小的路径与所述下一优路 径进行代价比较,将比较得到的代价较小的路径作为一路径输出结果。
11.如权利要求10所述的装置,其特征在于所述路径选择单元,还用于在所述代价较小的路径为从所述扩展路径中选择出的路径 时,则将该路径从所述扩展路径中去除,并继续从所述扩展路径中选择代价最小的路径,将 所选择的代价最小的路径与所述下一优路径进行代价比较。
12.如权利要求10所述的装置,其特征在于所述路径选择单元,还用于在所述代价较小的路径为所述下一优路径时,则根据所述 多链路拓扑中节点间存在的多条链路,组合出与所述下一优路径经过相同节点的扩展路 径,将该扩展路径与已存在的扩展路径进行合并,并在单链路拓扑中再次计算路径,从合并 后的扩展路径或计算出的路径中选择路径输出结果。
全文摘要
本发明公开了一种路径计算方法及装置,包括对多链路拓扑进行简化运算,得到单链路拓扑,在所述单链路拓扑中计算路径,并且,从计算出的路径中选中路径输出结果后,根据所述多链路拓扑中节点间存在的多条链路,组合出与所述路径输出结果经过相同节点的扩展路径,从该扩展路径或计算出的路径中继续选择路径输出结果。本发明使得KSP算法能够有效处理节点间多链路的拓扑,理解起来复杂度低,实现起来效率更高。
文档编号H04L12/56GK101986625SQ20101054766
公开日2011年3月16日 申请日期2010年11月17日 优先权日2010年11月17日
发明者吕文祥 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1