最短路径查询方法及查询系统与流程

文档序号:22627694发布日期:2020-10-23 19:36阅读:287来源:国知局
最短路径查询方法及查询系统与流程

本发明涉及信息技术领域,特别是涉及一种用于交通网络或通信网络的最短路径查询方法。本发明还涉及一种用于交通或通信网络的最短路径查询系统。



背景技术:

目前在交通或通信领域可用的最短路径算法常见有4种:dijkstra算法,bellman-ford算法,floyd算法和spfa算法。

dijkstra算法是由荷兰计算机科学家dijkstra于1959年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

bellman-ford算法由bellman和ford创立,原理是对图进行次松弛操作,得到所有可能的最短路径。

floyd算法又称为插点法,由1978年图灵奖获得者、斯坦福大学计算机科学系教授floyd创立,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。

spfa算法是bellman-ford算法的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。spfa最坏情况下复杂度和朴素bellman-ford相同。

上述4种算法都只解决了最短路径的算法,在提供进一步查找topn(多条)最短路径时或者难以奏效,或者效率几何级数下降。



技术实现要素:

在发明内容部分中引入了一系列简化形式的概念,该简化形式的概念均为本领域现有技术简化,这将在具体实施方式部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。

本发明要解决的技术问题是提供一种用于交通网络或通信网络能快速、准确查询topn(前n条最短路径,n是正整数)最短路径的最短路径查询方法。

本发明要解决的另一技术问题是提供一种用于交通网络或通信网络能快速、准确查询topn(前n条最短路径,n是正整数)最短路径的最短路径查询系统。

为解决上述技术问题,本发明提供的最短路径查询方法,包括以下步骤:

s1,通过生成树算法获取最短路径ri;

可选择的,实施步骤s1时,使用双向生成树算法获取最短路径ri。使用双向的生成树算法进行单次寻路,可以在保证效率同时获得所有点到起点和终点的最短路径,减少递归中的重复计算。

s2,计算ri的备用路径集合{rbi};

可选择的,备用路径集合计算包括以下子步骤;

s2.1,排除最短路径ri上的点集{ax}和{bx},排除线a1a2,b1b2;

a1和b1是第一最短路径r1上的任选两点,a1与起点之间距离小于第一阈值,b1与终点之间距离小于第二阈值;

{ax}是最短路径ri起点到a1之间的所有点的集,{bx}是最短路径ri上b1到终点之间的所有点的集,a2是最短路径ri起点出发方向a1的下一点,b2是最短路径ri起点出发方向b1上一点;

s2.2,如果还存在最短路径r(i+1)与最短路径ri在点集{ax}和{bx}完全重合,则排除线a1a3,b1b3;

a3是最短路径ri起点出发方向a1的下一点,b3是第一最短路径r1起点出发方向b1上一点;

s2.3,查找a1到b1的最短路径,替换最短路径ri上a1与b1之间的部分,得到备用路径rbi

s2.4,对最短路径ri上包括起点和终点在内的任意两点查询组成其备用路径集合{rbi}。

s3,从备用路径集合{rbi}中获取最短路径r(i+1);

s4,计算最短路径r(i+1)的备用路径集合{rb(i+1)};

s5,利用备用路径集合{rb(i+1)}更新最短路径ri的备用路径集合{rbi};

s6,从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

s7,循环s4-s6步骤顺序依次获得不同备用路径集合的最短路径;

其中,i为最短路径序号,其为正整数。

可选择的,进一步改进最短路径查询方法,实施步骤s2中,计算新增最短路径rm的备用路径集合时,先将最短路径rm与已有各条最短路径比较,对于新增最短路径rm与现有各条最短路径路径重合部分点的备用路径计算采用直接继承。

可选择的,进一步改进最短路径查询方法,更新新增路径rm之前已有各条最短路径的备用路径集合时,比较rm与已有各条最短路径只对已有各条最短路径排除与rm重合路径部分点后的最长备用路径进行更新。

本发明提供一种最短路径查询系统,包括:

第一路径获取模块,其用于通过生成树算法获取最短路径ri;

第一计算模块,其用于计算ri的备用路径集合{rbi};

第二路径生成模块,其用于从备用路径集合{rbi}中获取最短路径r(i+1);

第二计算模块,其用于计算最短路径r(i+1)的备用路径集合{rb(i+1)};

更新模块,其用于更新最短路径ri的备用路径集合{rbi};

第二路径获取模块,其用于从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

控制模块,其用于控制第二计算模块、更新模块和第二路径获取模块顺序循环执行,依次获得不同备用路径集合的最短路径。其中,i为最短路径序号,其为正整数。

本发明各模块能通过计算机编程技术手段实现。

可选择的,进一步改进所述的最短路径查询系统,第一路径获取模块使用双向生成树算法获取最短路径ri。

可选择的,进一步改进所述的最短路径查询系统,备用路径集合计算采用以下步骤;

s2.1,排除最短路径ri上的点集{ax}和{bx},排除线a1a2,b1b2;

a1和b1是第一最短路径r1上的任选两点,a1与起点之间距离小于第一阈值,b1与终点之间距离小于第二阈值;

{ax}是最短路径ri起点到a1之间的所有点的集,{bx}是最短路径ri上b1到终点之间的所有点的集,a2是最短路径ri起点出发方向a1的下一点,b2是最短路径ri起点出发方向b1上一点;

s2.2,如果还存在最短路径r(i+1)与最短路径ri在点集{ax}和{bx}完全重合,则排除线a1a3,b1b3;

a3是最短路径ri起点出发方向a1的下一点,b3是第一最短路径r1起点出发方向b1上一点;

s2.3,查找a1到b1的最短路径,替换最短路径ri上a1与b1之间的部分,得到备用路径rbi

s2.4,对最短路径ri上包括起点和终点在内的任意两点查询组成其备用路径集合{rbi},i为最短路径序号。

可选择的,进一步改进所述的最短路径查询系统,第一计算模块计算新增最短路径rm的备用路径集合时,先将最短路径rm与已有各条最短路径比较,对于新增最短路径rm与现有各条最短路径路径重合部分点的备用路径计算采用直接继承。

可选择的,进一步改进所述的最短路径查询系统,更新模块其更新新增路径rm之前已有各条最短路径的备用路径集合时,在比较rm与已有各条最短路径时,只对已有各条最短路径排除与rm重合路径部分点后的最长备用路径进行更新。

本发明对于多条最短路径进行递归计算原理如下:

如果已经获取了i条最短路径(topi),那么第i+1条最短路径(即与之前i条路径不同的最优路径)必然是每条最短路径的备用路径集合中最短的一条路径。按照以上递归原理得到了可以准确实现查找topn最短路径的方法。

假设已知若干条最短路径集合{ri},选取其中一条r进行处理:从路径上任选两点a1,b1,a1接近起点,即a1与起点之间距离小于第一阈值;b1接近终点,即b1与终点之间距离小于第二阈值;第一阈值和第二阈值根据实际需要指定。起点到a1之间的所有点集合{ai},b1到终点之间的所有点集合{bi},r路径起点出发a1下一点为a2,b1上一点b2,排除点集合{ai}、{bi},排除线a1a2,b1b2;如果最短路径集合{ri}种还有另一路径r2与r的路径在点集合{ai}、点集合{bi}完全重合,r路径起点出发a1下一点为a3,b1上一点b3,排除线a1a3,b1b3;

在排除后的图中查找a1到b1的最短路径,替换r路径的a1与b1之间部分,得到备用路径rb1,对r上包括起点和终点在内的任意两点查询组成备用路径集合{rbi}。

以中国电信上海公司使用的智能选路功能软件采用dijkstra算法进行选路,智能支持最佳路径的查找,耗时一般为2-10秒,性能表现一般。在新建的智能专线(分组otn-tp专线)智能选路功能原型研发过程中尝试采用了本发明的方案,通过计算验证,本发明获得的结果对于模拟结构模型(采用2000点左右,每点连接4-12条通路,比现网复杂一倍以上)进行测试,本发明3秒内即可以获取最佳路径,30秒以内可以依次获取top10最佳路径,能力和性能都远超现有技术,并且本发明能避免最短路径查询效率发生几何级数下降。

附图说明

本发明附图旨在示出根据本发明的特定示例性实施例中所使用的方法、结构和/或材料的一般特性,对说明书中的描述进行补充。然而,本发明附图是未按比例绘制的示意图,因而可能未能够准确反映任何所给出的实施例的精确结构或性能特点,本发明附图不应当被解释为限定或限制由根据本发明的示例性实施例所涵盖的数值或属性的范围。下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1是本发明第一实施例流程示意图。

具体实施方式

以下通过特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所公开的内容充分地了解本发明的其他优点与技术效果。本发明还可以通过不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点加以应用,在没有背离发明总的设计思路下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。本发明下述示例性实施例可以多种不同的形式来实施,并且不应当被解释为只限于这里所阐述的具体实施例。应当理解的是,提供这些实施例是为了使得本发明的公开彻底且完整,并且将这些示例性具体实施例的技术方案充分传达给本领域技术人员。

第一实施,如图1所述,本发明提供一种最短路径查询方法,包括以下步骤:

s1,通过生成树算法获取最短路径ri;

s2,计算ri的备用路径集合{rbi};

s3,从备用路径集合{rbi}中获取最短路径r(i+1);

s4,计算最短路径r(i+1)的备用路径集合{rb(i+1)};

s5,利用备用路径集合{rb(i+1)}更新最短路径ri的备用路径集合{rbi};

s6,从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

s7,循环s4-s6步骤顺序依次获得不同备用路径集合的最短路径。

第二实施,本发明提供一种最短路径查询方法,包括以下步骤:

s1,使用双向生成树算法获取最短路径ri;

s2,计算ri的备用路径集合{rbi};备用路径集合计算包括以下子步骤;

s2.1,排除最短路径ri上的点集{ax}和{bx},排除线a1a2,b1b2;

a1和b1是第一最短路径r1上的任选两点,a1与起点之间距离小于第一阈值,b1与终点之间距离小于第二阈值;

{ax}是最短路径ri起点到a1之间的所有点的集,{bx}是最短路径ri上b1到终点之间的所有点的集,a2是最短路径ri起点出发方向a1的下一点,b2是最短路径ri起点出发方向b1上一点;

s2.2,如果还存在最短路径r(i+1)与最短路径ri在点集{ax}和{bx}完全重合,则排除线a1a3,b1b3;

a3是最短路径ri起点出发方向a1的下一点,b3是第一最短路径r1起点出发方向b1上一点;

s2.3,查找a1到b1的最短路径,替换最短路径ri上a1与b1之间的部分,得到备用路径rbi

s2.4,对最短路径ri上包括起点和终点在内的任意两点查询组成其备用路径集合{rbi},i为最短路径序号。

s3,从备用路径集合{rbi}中获取最短路径r(i+1);

s4,计算最短路径r(i+1)的备用路径集合{rb(i+1)};

s5,利用备用路径集合{rb(i+1)}更新最短路径ri的备用路径集合{rbi};

s6,从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

s7,循环s4-s6步骤顺序依次获得不同备用路径集合的最短路径。

可选择的,进一步改进上述第二实施例,新增最短路径rm计算其备用路径集合时,先将rm与已有各条最短路径比较,对于新增最短路径rm与现有各条最短路径路径重合部分点的备用路径计算采用直接继承。

可选择的,进一步改进上述第二实施例,更新新增路径rm之前已有各条最短路径的备用路径集合时,比较rm与已有各条最短路径只对已有各条最短路径排除与rm重合路径部分点后的最长备用路径进行更新。

此外,还应当理解的是,尽管在这里可以使用术语“第一”、“第二”等来描述不同的元件、参数、组件、区域、层和/或部分,但是这些元件、参数、组件、区域、层和/或部分不应当受这些术语的限制。这些术语仅是用来将一个元件、参数、组件、区域、层或部分与另一个元件、参数、组件、区域、层或部分区分开来。因此,在不脱离根据本发明的示例性实施例的教导的情况下,以下所讨论的第一元件、参数、组件、区域、层或部分也可以被称作第二元件、参数、组件、区域、层或部分。

第三实施例,本发明提供一种最短路径查询系统,通过计算机编程技术实现,包括:

第一路径获取模块,其用于通过生成树算法获取最短路径ri;

第一计算模块,其用于计算ri的备用路径集合{rbi};

第二路径生成模块,其用于从备用路径集合{rbi}中获取最短路径r(i+1);

第二计算模块,其用于计算最短路径r(i+1)的备用路径集合{rb(i+1)};

更新模块,其用于更新最短路径ri的备用路径集合{rbi};

第二路径获取模块,其用于从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

控制模块,其用于控制第二计算模块、更新模块和第二路径获取模块顺序循环执行,依次获得不同备用路径集合的最短路径。

第四实施例,本发明提供一种最短路径查询系统,通过计算机编程技术实现,包括:

第一路径获取模块,其用于通过双向生成树算法获取最短路径ri;

第一计算模块,其用于计算ri的备用路径集合{rbi};备用路径集合计算采用以下步骤;

s2.1,排除最短路径ri上的点集{ax}和{bx},排除线a1a2,b1b2;

a1和b1是第一最短路径r1上的任选两点,a1与起点之间距离小于第一阈值,b1与终点之间距离小于第二阈值;

{ax}是最短路径ri起点到a1之间的所有点的集,{bx}是最短路径ri上b1到终点之间的所有点的集,a2是最短路径ri起点出发方向a1的下一点,b2是最短路径ri起点出发方向b1上一点;

s2.2,如果还存在最短路径r(i+1)与最短路径ri在点集{ax}和{bx}完全重合,则排除线a1a3,b1b3;

a3是最短路径ri起点出发方向a1的下一点,b3是第一最短路径r1起点出发方向b1上一点;

s2.3,查找a1到b1的最短路径,替换最短路径ri上a1与b1之间的部分,得到备用路径rbi

s2.4,对最短路径ri上包括起点和终点在内的任意两点查询组成其备用路径集合{rbi},i为最短路径序号。

第二路径生成模块,其用于从备用路径集合{rbi}中获取最短路径r(i+1);

第二计算模块,其用于计算最短路径r(i+1)的备用路径集合{rb(i+1)};

更新模块,其用于更新最短路径ri的备用路径集合{rbi};

第二路径获取模块,其用于从最短路径ri的备用路径集合{rbi}和最短路径r2的备用路径集合{rb(i+1)}中获取最短路径r(i+2);

控制模块,其用于控制第二计算模块、更新模块和第二路径获取模块顺序循环执行,依次获得不同备用路径集合的最短路径。

可选择的,进一步改进上述第四实施例,第一计算模块计算新增最短路径rm的备用路径集合时,先将最短路径rm与已有各条最短路径比较,对于新增最短路径rm与现有各条最短路径路径重合部分点的备用路径计算采用直接继承。

可选择的,进一步改进上述第四实施例,更新模块更新新增路径rm之前已有各条最短路径的备用路径集合时,比较rm与已有各条最短路径只对已有各条最短路径排除与rm重合路径部分点后的最长备用路径进行更新。

假设性的,以中国电信常见的电路网路模拟模型进行测试;

模型采用21点为一个底层网络小组,组内每点连接4条线,连通率20%;

10个底层网络小组每组取出2个核心点,新增一个核心点,合计21点组成二层干网小组,组内每点连接4条线,连通率20%;

10个二层干网小组每组取出2个核心点,新增一个核心点,合计21点组成三层干网小组,组内每点连接4条线,连通率20%;

模型合计2111点,4662条线;

随机从模型中抽取3组2点进行最短路径查询,采用传统算路工具和采用本发明的最短路径查询方法进行查找比较。

传统工具智能计算最短路径,三次用时分别为2秒、3秒和6秒;

而采用本发明的最短路径查询方法在2-3秒之间都获取到了最短路径,并且可以继续在2-5秒之间依次获取topn最短路径,直接测试过程中3次都在30秒以内获取到了top10最佳路径。本发明能显著提高最短路径查询效率,并且在扩大模型规模后,发现本发明能避免最短路径查询效率发生几何级数下降,本发明技术方案的查询效率比较稳定。

除非另有定义,否则这里所使用的全部术语(包括技术术语和科学术语)都具有与本发明所属领域的普通技术人员通常理解的意思相同的意思。还将理解的是,除非这里明确定义,否则诸如在通用字典中定义的术语这类术语应当被解释为具有与它们在相关领域语境中的意思相一致的意思,而不以理想的或过于正式的含义加以解释。

以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1