CN102523155B - 一种基于Boost库的K则最短路径搜索方法和系统 - Google Patents

一种基于Boost库的K则最短路径搜索方法和系统 Download PDF

Info

Publication number
CN102523155B
CN102523155B CN201110406474.2A CN201110406474A CN102523155B CN 102523155 B CN102523155 B CN 102523155B CN 201110406474 A CN201110406474 A CN 201110406474A CN 102523155 B CN102523155 B CN 102523155B
Authority
CN
China
Prior art keywords
path
shortest
node
limit
heap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110406474.2A
Other languages
English (en)
Other versions
CN102523155A (zh
Inventor
卢利锋
周静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Corp of China SGCC
China Electric Power Research Institute Co Ltd CEPRI
Global Energy Interconnection Research Institute
Original Assignee
State Grid Corp of China SGCC
China Electric Power Research Institute Co Ltd CEPRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Corp of China SGCC, China Electric Power Research Institute Co Ltd CEPRI filed Critical State Grid Corp of China SGCC
Priority to CN201110406474.2A priority Critical patent/CN102523155B/zh
Publication of CN102523155A publication Critical patent/CN102523155A/zh
Application granted granted Critical
Publication of CN102523155B publication Critical patent/CN102523155B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种基于Boost图库的K则最短路径搜索方法和系统,所述方法在成熟的C++Boost?Graph图库基础之上扩展K则最短路径算法;采用d叉堆数据结构最优化排序待选最短路径;采用偏离边的方式发展多重最短路由。该方法是从计算机应用角度考虑,在一定程度上解决K则最短路径问题的实用化难题,大大减轻实际设计或开发算法的工作量。该系统是基于该方法的一套软硬件系统,其已经集成了该方法的所有发明内容并且可以直接搜索计算前K短路径。

Description

一种基于Boost库的K则最短路径搜索方法和系统
技术领域
本发明属于计算机网络领域,具体涉及一种基于Boost库的K则最短路径搜索方法和系统。
背景技术
在网络规划或路径搜索中,经常需要寻找新路由,一般地,这可以通过图论中的最短路径方法解决。常用的最短路方法是广度优先方法、dijkstra方法等经典方法。这些方法的一个共同特点是只寻找图中给定点到任意点间的最短路径。但是这在实践中往往是不够的,比如,在路由规划中,除了最短路径外,可能需要寻找第二短路径作为备用,在有些条件下,可能需要寻找第三、第四短的路径或者所有路径。这类问题统一称为K短路径问题或K则最短路径问题。
K短路径问题最早由Hoffman和Pavley提出,多年来一直受到业界广泛重视,K短径分为严密K则最短路径方法和有损K则最短路径方法两类。前者具有严密的理论基础,所得到的K条路径是起终点间所有可能路径按权值递增排序后的前K条路径,后者通过启发式策略等技术,通过牺牲有限的精度以换取效率的大幅度提高。根据路径是否成环,K则最短路径方法还可以分为限定无环方法和自由路径方法。前者要求求得的路径必须是简单路径,不能含有回路,后者允许路径包含回路。限定无环路径的K则最短路径应用更加普遍。本发明针对限定无环K短路径。
与单源最短路径问题相比,K则最短路径问题在方法设计上更为复杂,目前尚没有一种K则最短路径方法如单源最短路径方法中的Dijkstra方法一样得到业界共识并且达到大规模实用化程度。对于单源最短路径问题,已经有现成的可以直接调用的高效率免费开源计算机方法,最著名的是C++Boost Graph图库。该库已经集成了图论中的大多数基本方法,包括BFS、DFS、dijkstra、Bellman Ford等基本最短路径方法,这样大大减轻了应用的难度,基本可以直接嵌入在自己代码中,不需要单独编写方法本身代码。
常用的K短路径搜索方法有删除边方法、偏离边方法等。但是这些方法仅仅是一种理论上的模型,与实际应用还有一定差距,不同于最短路径方法,尚未有开源的成熟高效计算机方法可供直接应用。
发明内容
本发明的目的是供一种能直接应用于网络的多重最短路径搜索方法,该方法应能解决以下几个方面具体问题:
1)可提供限定无环路径的K则最短路径问题的计算机算法,具有实用性,而非一种纯理论上的算法概念;
2)给出源宿节点间任意给定数目(即K数)并且以路径距离排序的所有路径,如果实际路径数小于K或K=0,则给出所有实际路径,否则给出前K短路径;
3)可提供限定分离条件的K则最短路径问题计算机算法,限定分离方式分别为节点分离、边分离、不分离3种;
为实现上述目的,本发明提供一种基于Boost库的K则最短路径搜索方法,其改进之处在于:该方法在成熟的C++Boost Graph图库基础之上扩展K则最短路径算法;采用d叉堆数据结构最优化排序待选最短路径;采用偏离边的方式发展多重最短路由。
本发明提供的优选技术方案中,所述K短路径搜索方法包括如下步骤:
步骤1:调用Boost库函数计算源宿节点间最短路径,令k=1;
步骤2:如果要求路径分离,则调用支持分离的K短路径算法,否则进入步骤3;
步骤3:定义d叉堆数据结构Q,将所求最短路径放入堆Q;
步骤4:判断如果k<K且堆Q不空,进入步骤5,否则算法结束;
步骤5:从堆Q中弹取出第k短路径,记为p,采用偏离边方法从p发展新的偏离短路径,存入堆Q;
步骤6:k++,返回步骤4;
本发明提供的第二优选技术方案中,在所述步骤2中支持分离的K短路径搜索方法包括如下步骤:
步骤2-1:判断如果k<K并且第k短路径非空则进入步骤2-2,否则算法结束;
步骤2-2:将前k短路径所有节点或边存入排除列表;
步骤2-3:调用改进Boost库函数,忽略(不遍历)排除列表中的节点或边,求得第k+1短路径,存入所求K短路径集;
步骤2-4:k++,返回步骤2-1。
本发明提供的第三优选技术方案中,在所述步骤5中以路径p为基础发展偏离路径方法包括如下步骤:
步骤5-1:令i=路径p偏离点索引;
步骤5-2:判断如果i<p.size()则进入步骤5-3,否则算法结束;
步骤5-3:记录i对应节点为dev,记录路径p中第一个节点到第i节点集合为colors,记录节点dev对应偏离边集合为edges;
步骤5-4:调用Boost函数计算以节点dev为始的最短路径Pt,需忽略节点集colors和边集edges;
步骤5-5:根据Pt与colors合成新路径_p,计算_p的偏离点、偏离边集并作记录;
步骤5-6:将新路径_p存入d叉堆Q,i++,返回步骤5-2。
本发明提供的第四优选技术方案中,提供一种基于Boost库的K则最短路径搜索系统,其改进之处在于,所述搜索系统包括:
最短路径计算单元,调用Boost库函数计算含有限定条件的源宿节点间最短路径;
分离路径计算单元,判断最短路径分离方式,如果要求路径分离,则调用支持分离的K短路径算法;
K短路径筛选单元,设置d叉堆数据结构Q,将所求k短路径存入堆Q,并且自动筛选出第k短路径;
偏离路径计算单元,根据从堆Q中弹取出的第k短路径p,采用偏离边方法从p发展新的偏离短路径,存入堆Q。
本发明提供的第五优选技术方案中,所述分离路径判断计算单元,包括:
排除列表存储模块,存储前k短路径节点集和边集;
分离路径计算模块,采用Boost库函数并且忽略排除列表中的节点集或边集计算第k+1短路径,存入所求K短路径集。
本发明提供的第六优选技术方案中,所述偏离路径计算单元,包括:
偏离边存储模块,依次记录前k短路径的偏离点与偏离边集;
偏离路径发展模块,以第k短路径p为基础,发展其对应的偏离路径集,并且存入d叉堆Q;
偏离路径合成模块,将路径p偏离点前一段路径与以偏离点为始的最短路径合成新路径_P,计算_P偏离点、偏离边集并存储。
与现有技术方法相比,本发明提供的一种基于Boost库的K则最短路径搜索方法与系统,具有如下的特点:
1)采用STL标准模板库作为基本数据结构,拼弃传统固定大小数组结构,讲求高效率、高精度原则;
2)由于采用了Boost库的成熟数据结构和高效率的算法步骤,大大减少了计算的时间复杂度和空间复杂度,本发明可以适用于上百节点大规模网络的K短路由计算;
3)本发明的方法是从计算机应用角度考虑,而非一般意义上的单纯算法概念,因此使网络多重路由问题的搜寻方法更加接近实用化,大大减轻实际设计或开发算法的工作量。
附图说明
图1为K则最短路径计算机搜索方法的流程图。
图2为支持分离方式的K则最短路径计算方法的流程图。
图3为从给定最短路径基础上发展偏离路径的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图及实例对本发明作进一步详细描述。
假设所求K短路径问题是计算从s点到t点的路径跳数从小到大排序的前K短路径,要求所求最短路径不作分离限定。
参考图1,为本发明所述K则最短路由计算机算法流程,结合上面的具体问题分析得如下所述具体步骤:
步骤1:定义所求前K短路径集为Kpaths。
步骤2:调用Boost Graph库的BFS函数计算s→t的最短路径;
步骤3:由于所求最短路径不作分离限定,直接进入步骤4:
步骤4:定义d叉堆数据结构Q,将所求最短路径放入堆Q;
步骤5:记最短路径第一个顶点为其偏离点,记录该路径每个顶点的偏离边集为其出边;
步骤6:令k=1;
步骤7:判断如果k<K并且堆Q非空则进入步骤8,否则算法结束;
步骤8:弹出堆Q对应的最短路径p,即为所求的第k短路径,存入路径集Kpaths;
步骤9:根据所求第k短路径p,从其偏离点到最后一个顶点作遍历,依次发展新偏离点及偏离路径、更新顶点偏离边集,将所求偏离路径存入堆Q;
步骤10:k++,返回步骤7;
根据上面的流程,算法结束后,路径集Kpaths所存即为以路由路径跳数排序的前K短路径。
如上所述步骤9中,以当前第k短路径p为基础发展新偏离路径是一个复杂过程,下面以前面实例为基础作详细描述。
参考图3,为本发明所述从给定最短路径基础上发展偏离路径的算法流程,假定已经执行到步骤9,并且已求得第k短路径p,下面为从该路径p上发展偏离路径的算法流程,算法步骤号从1开始重新编号,求其详细步骤如下:
步骤9-1:令i=路径p偏离点索引;
步骤9-2:判断如果i<p.size()则进入步骤3,否则算法结束;
步骤9-3:记录i对应偏离点为dev,记录路径p中第一个节点到第i节点集合为colors,记录节点dev对应偏离边集合为edges;
步骤9-4:调用BFS算法计算以节点dev为始的最短路径Pt,需忽略节点集colors和边集edges;
步骤9-5:根据Pt与colors合成新路径_p,计算_p的偏离点、偏离边集并作记录;
步骤9-6:将新路径_p存入d叉堆Q,i++,返回第2步。
如上所述,每次在步骤5中获得新偏离路径_p,步骤6中存入堆Q,当本次算法结束后,Q中已经添加了以路径p为基础发展出来的待选路径集,这时进入前面K短路径算法步骤10循环执行即可求s点到t点的所有K短路径。
以上的搜索从s点到t点不分离的、以路径跳数排序的前K短路径问题中,步骤2、步骤9-4采用本发明所述K短路径搜索系统(以下简称搜索系统)中的“最短路径计算单元”计算所得;步骤4、步骤8、步骤9中对待选k短路径操作采用本搜索系统中的“K短路径筛选单元”计算所得;步骤9中的偏离路径采用本搜索系统的“偏离路径计算单元”计算所得;步骤9-3、步骤9-5采用“偏离边存储模块”读取或记录新路径_p的偏离点与偏离边集;步骤9-5采用“偏离边合成模块”计算得新待选k短路径_p。
以上对本发明的实施步骤结合一个需求实例进行了详细说明,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,实际可有不同于该实施例的步骤参数;同时,本发明所述的调用算法名称及一些特定数据结构名称均出自于Boost Graph库,如果需要详细了解本算法思想,必须首先了解Graph图库中相关算法及其所用的基本数据结构。
需要声明的是,本发明内容及具体实施方式意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理启发下,可作各种修改、等同替换、或改进。但这些变更或修改均在申请待批的保护范围内。

Claims (7)

1.一种基于Boost库的K则最短路径搜索方法,所述方法采用偏离边算法搜寻多重路由,其特征在于,包括以下步骤:
(1).调用Boost库函数计算源宿节点间最短路径,定义变量k,令k=1;
(2).判断最短路径分离方式,如果要求路径分离,则调用支持分离的K短路径算法,否则进入步骤3;
(3).定义d叉堆数据结构Q,将所求最短路径放入堆Q;
(4).从堆Q中弹取出第k短路径,记为p,采用偏离边方法从p发展新的偏离路径,存入堆Q;
所述步骤4是一个循环过程,循环变量为k,每次循环后k++;在步骤4之前需要作条件判断,如果k<K且堆Q不空,则进入循环,否则算法结束。
2.根据权利要求1所述的搜索方法,其特征在于,所述步骤2中K是指所搜索的源宿节点间的指定的最短路径个数。
3.根据权利要求1所述的搜索方法,其特征在于,所述步骤2中计算支持路径分离的K则最短路径的方法包括以下步骤:
(2-1).采用排除列表存储前k短路径节点或边;
(2-2).采用Boost库函数并且忽略排除列表中的节点或边计算第k+1短路径,存入所求K短路径集。
4.根据权利要求1所述的搜索方法,其特征在于,所述步骤4中以路径p为基础,发展偏离路径,其方法包括如下步骤:
(4-1).记录路径p偏离点为dev,记录p中dev前一段节点集合为colors,记录dev对应的偏离边集合为edges;
(4-2).计算以节点dev为始的最短路径Pt,忽略节点集colors、边集edges;
(4-3).根据Pt与路径p中dev前一段路径节点合成新路径_p,计算_p偏离点、偏离边集并作记录;
(4-4).新路径_p存入d叉堆Q。
5.根据权利要求3所述的搜索方法,其特征在于该方法为一个循环过程,循环变量为k,每次循环后k++;在步骤2-1之前需要作条件判断,如果k<K并且第k短路径非空,则进入循环,否则算法结束。
6.根据权利要求4所述的搜索方法,其特征在于该方法为一个循环过程,第一次循环中dev为路径p偏离点,以后依次为从p中该点后一个节点直到最末一个节点作循环。
7.一种基于Boost库的K则最短路径搜索系统,其特征在于,所述系统包括:
最短路径计算单元,调用Boost库函数计算含有限定条件的源宿节点间最短路径;
分离路径计算单元,判断短路径分离方式,如果要求路径分离,则调用支持分离的K短路径算法;
K短路径筛选单元,设置d叉堆数据结构Q,将所求k短路径存入堆Q,并且自动筛选出第k短路径;
偏离路径计算单元,根据从堆Q中弹取出的第k短路径p,采用偏离边方法从p发展新的偏离短路径集,存入堆Q;
所述分离路径计算单元,包括:
排除列表存储模块,存储前k短路径节点集和边集;
分离路径计算模块,采用Boost库函数并且忽略排除列表中的节点集或边集计算第k+1短路径,存入所求K短路径集;
所述偏离路径计算单元,包括:
偏离边存储模块,依次记录前k短路径的偏离点与偏离边集;
偏离路径发展模块,以第k短路径p为基础,发展其对应的偏离路径集,并且存入d叉堆Q;
偏离路径合成模块,将路径p偏离点前一段路径与以偏离点为始的最短路径合成新路径_p,计算_p偏离点、偏离边集并存储。
CN201110406474.2A 2011-12-08 2011-12-08 一种基于Boost库的K则最短路径搜索方法和系统 Active CN102523155B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110406474.2A CN102523155B (zh) 2011-12-08 2011-12-08 一种基于Boost库的K则最短路径搜索方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110406474.2A CN102523155B (zh) 2011-12-08 2011-12-08 一种基于Boost库的K则最短路径搜索方法和系统

Publications (2)

Publication Number Publication Date
CN102523155A CN102523155A (zh) 2012-06-27
CN102523155B true CN102523155B (zh) 2015-03-25

Family

ID=46293954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110406474.2A Active CN102523155B (zh) 2011-12-08 2011-12-08 一种基于Boost库的K则最短路径搜索方法和系统

Country Status (1)

Country Link
CN (1) CN102523155B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103968852B (zh) * 2013-02-04 2017-06-27 山东科技大学 车辆导航装置及采用该装置的经济性道路获取方法
US9413707B2 (en) 2014-04-11 2016-08-09 ACR Development, Inc. Automated user task management
US8942727B1 (en) 2014-04-11 2015-01-27 ACR Development, Inc. User Location Tracking
CN105187309B (zh) * 2015-08-07 2018-11-09 许继集团有限公司 双变电站路径探索方法、装置及电力系统
CN108123827B (zh) * 2017-11-09 2021-01-19 浙江万里学院 基于层次凝聚的大规模图最短路径搜索方法
CN108683593B (zh) * 2018-07-10 2021-01-15 烽火通信科技股份有限公司 一种k短路径的计算方法
CN111210065A (zh) * 2020-01-03 2020-05-29 武汉大学 一种基于重优化技术的物流网络高效k最短路径算法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753425A (zh) * 2008-12-01 2010-06-23 北京航空航天大学 在多约束下求取网络中多条最短简单路径的启发式方法
CN102026051A (zh) * 2010-12-13 2011-04-20 西安交通大学 基于分层虚拓扑的跨粒度层的生存性方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753425A (zh) * 2008-12-01 2010-06-23 北京航空航天大学 在多约束下求取网络中多条最短简单路径的启发式方法
CN102026051A (zh) * 2010-12-13 2011-04-20 西安交通大学 基于分层虚拓扑的跨粒度层的生存性方法

Also Published As

Publication number Publication date
CN102523155A (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
CN102523155B (zh) 一种基于Boost库的K则最短路径搜索方法和系统
CN103473171B (zh) 一种基于函数调用路径的覆盖率动态跟踪方法及装置
US10062188B2 (en) Customizable route planning using graphics processing unit
CN104281652B (zh) 度量空间中逐个支撑点数据划分方法
CN102902573B (zh) 一种基于共享资源的任务的处理方法及装置
US20130231862A1 (en) Customizable route planning
CN100523735C (zh) 一种基于小网格路网组织结构的快速地图匹配方法
CN102693266B (zh) 搜索数据库的方法、生成索引结构的导航设备和方法
CN104239137A (zh) 基于dag节点最优路径的多模型并行调度方法及装置
CN109522428B (zh) 一种基于索引定位的图计算系统的外存访问方法
CN104679864A (zh) 一种基于gis的嫌疑目标智能跟踪方法和装置
CN110046810A (zh) 一种基于赋时Petri网的车间制造系统多目标调度方法
CN101571810A (zh) 执行程序的方法、验证程序结果的方法、装置及系统
CN104516813A (zh) 网络页面的测试节点的选取方法和装置
CN106033442A (zh) 一种基于共享内存体系结构的并行广度优先搜索方法
CN108920105A (zh) 基于社区结构的图数据分布式存储方法及装置
CN106326393A (zh) 一种小图片的存储、读取方法和装置
CN110008030A (zh) 一种元数据访问的方法、系统及设备
CN105025013B (zh) 基于优先级Trie树的动态IP匹配模型的建立方法
CN105302838A (zh) 分类方法、查找方法和设备
CN108052743B (zh) 一种阶梯接近中心度确定方法及系统
CN102043857A (zh) 最近邻查询方法及系统
CN105806348B (zh) 一种道路数据存储方法及设备
CN105005627A (zh) 基于Spark分布式系统的最短路径关键点查询方法
CN104932982B (zh) 一种消息访存的编译方法及相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: STATE ELECTRIC NET CROP.

Effective date: 20130624

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130624

Address after: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Applicant after: China Electric Power Research Institute

Applicant after: State Grid Corporation of China

Address before: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Applicant before: China Electric Power Research Institute

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160425

Address after: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Patentee after: China Electric Power Research Institute

Patentee after: State Grid Smart Grid Institute

Patentee after: State Grid Corporation of China

Address before: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Patentee before: China Electric Power Research Institute

Patentee before: State Grid Corporation of China

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Patentee after: China Electric Power Research Institute

Patentee after: GLOBAL ENERGY INTERCONNECTION RESEARCH INSTITUTE

Patentee after: State Grid Corporation of China

Address before: 100192 Beijing city Haidian District Qinghe small Camp Road No. 15

Patentee before: China Electric Power Research Institute

Patentee before: State Grid Smart Grid Institute

Patentee before: State Grid Corporation of China