CN101788999A - 一种网络图中最短路径的二分查找追踪方法 - Google Patents

一种网络图中最短路径的二分查找追踪方法 Download PDF

Info

Publication number
CN101788999A
CN101788999A CN200910251662A CN200910251662A CN101788999A CN 101788999 A CN101788999 A CN 101788999A CN 200910251662 A CN200910251662 A CN 200910251662A CN 200910251662 A CN200910251662 A CN 200910251662A CN 101788999 A CN101788999 A CN 101788999A
Authority
CN
China
Prior art keywords
node
shortest path
step number
nodes
label
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.)
Pending
Application number
CN200910251662A
Other languages
English (en)
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.)
Anhui University
Original Assignee
Anhui University
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 Anhui University filed Critical Anhui University
Priority to CN200910251662A priority Critical patent/CN101788999A/zh
Publication of CN101788999A publication Critical patent/CN101788999A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种网络图中最短路径的二分查找追踪方法,特征是根据最短路径步数矩阵提取源节点到汇节点的最短路径步数,对其折半拆分为前、后步数;在最短路径步数矩阵的源节点行向量中搜索步数等于前步数的节点,为前步数节点集;在最短路径步数矩阵的汇节点列向量中搜索步数等于后步数的节点,为后步数节点集;取前、后步数节点集的交集为中间节点;以交集中每节点为基准,用上述方法求源节点与该节点、该节点与汇节点的中间节点,直到需求解节点间最短路径步数为1为止;将所求的中间节点顺次插到对应位置得源到汇节点的所有最短路径;利用本发明方法查找两点间所有最短路径,可对应于实际数据中抽象出网络图的择优路径选择提供多种方案。

Description

一种网络图中最短路径的二分查找追踪方法
技术领域
本发明属于应用网络图进行路径搜索技术领域,具体涉及网络图中最短路径的二分查找追踪方法。
背景技术
随着信息技术的发展,网络图数据处理技术也随之得到了快速发展。为了便于数据处理,常常将具体的实际问题抽象建模为网络图的结构,如计算机网络、道路网格、电力系统网和物流运输网等。网络图中的路径寻优是常见的问题,如计算机网络路由选择、地理信息系统的交通道路路径选择、电力系统路径规划、物流运输线路选择等问题,据《运筹学方法与模型》(复旦大学出版社,傅家良主编,2006年1月,第216-228页)介绍,这也是图论、运筹学等领域中的经典问题。网络图中的最短路径方法包括点到点、单源点、多点之间和所有节点之间的最短路径算法。网络图中的路径寻优发现节点间最短路径是一个基本的问题,传统的最短路径算法以狄克斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法为经典,在实际中已得到广泛应用。
据《运筹学方法与模型》(复旦大学出版社,傅家良主编,2006年1月,第217-220页)介绍,Dijkstra算法是荷兰学者Edgar Wybe Dijkstra于1959年提出来的,适合加权有向图中求解单源点最短路径问题。最初的算法只适用于权重为正值的加权网络,后期有不同的改进算法。Dijkstra算法的基本思想是从源节点出发,逐步地向外探寻最短路径。每个节点都有一对标号(dn,pn),其中dn是从源节点到节点n的最短路径距离,pn记录从源节点到节点n的最短路径中节点n的前一节点。其算法步骤包括:
步骤(1)、初始化:源节点标号(ds,ps)设置为(0,空),其他节点标号(dn,pn)设置为(无穷大,未定),设置源节点为已标记,其他节点为未标记;
步骤(2):遍历所有已标记的节点i到其直接连接的未标记节点j,更新其未标记节点的标号中dj为dj、已标号节点i的di与节点i到节点j的距离之和中的最小值,并更新其pj;
步骤(3):从未标记的节点中,选取标号中dj最小的,将其设置为已标记;
步骤(4)、判断是否还有未标记点:如果有,转向步骤(2);否则退出,算法结束。
据《运筹学方法与模型》(复旦大学出版社,傅家良主编,2006年1月,第221-225页)介绍,Floyd算法是通过图的邻接矩阵A来求得一个最短路径矩阵D和一个最短路由矩阵U,来获得网络中所有节点的最短路径。其最短路径距离矩阵D和最短路由矩阵U构建过程为:
初始最短路径距离矩阵D赋值为邻接矩阵A,最短路由矩阵U根据邻接矩阵A是否连接赋值为起点;对于每一个节点k,如果D(i,j)大于D(i,k)与D(k,j)之和,更新D(i,j)并赋值U(i,j)为k。
以上介绍的现有最短路径算法中,Dijkstra算法只能得到每个节点的标号,Folyd算法只能有最短路径矩阵,不能求得源节点到汇节点的最短路径,离提取出网络图中的最短路径还差一步。
据《运筹学方法与模型》(复旦大学出版社,傅家良主编,2006年1月,第219,222页)介绍,对于Dijkstra算法和Folyd算法,其后期的最短路径的提取方法是逆向追踪法。对于Dijkstra算法,逆向追踪法是根据节点的标号中的pn来反向追踪:从汇节点开始,根据其标号中的pn追踪到其紧前一个节点v,再由v逆向追踪到其紧前节点,直到反向回溯到源节点。而Floyd算法是根据最短路由矩阵U来反向追踪:从U(s,t)(其中节点s为源节点,节点t为汇节点)得到汇节点t的紧前节点v,接着追踪到U(s,v),一直到反向追踪到源节点s,输出其最短路径。
Dijkstra算法和Floyd算法是规划算法,Dijkstra算法适合于稀疏型网络,密集型网络用Floyd算法求解最短路径比较方便,其实Dijkstra算法中每个节点的标号用矩阵表示等同于Floyd算法中的最短路径距离矩阵D和最短路由矩阵U。对于并行计算来说,Dijkstra算法和Floyd算法可以改写为并行算法,但是其逆向追踪算法不可改写。逆向追踪算法是根据最短路由矩阵U来搜索提取最短路径线路,只能得到网络图中节点对间一条最短路径,无法提供多条最短路径来满足实际应用的需求。
发明内容
本发明的目的是提出一种网络图中最短路径的二分查找追踪法,以解决网络图中最短路径算法的后期路径的快速提取问题,找出任意两节点间的最短路径。
本发明网络图中最短路径的二分查找追踪法,先把出现在包括计算机网络、道路网格、电力系统网或物流运输网在内的实际网络中存在的交叉点作为节点、交叉点之间的联系作为边形成网络图,将所有的节点随机地从1开始按自然数字进行编号,节点之间的边用邻接矩阵存储;其特征在于:采用本发明改进的狄克斯特拉(Dijkstra)算法或改进的弗洛伊德(Floyd)算法来获得最短路径步数矩阵;将实际网络中的出发点作为源节点,将目的地作为汇节点,从出发点到目的地的最短路径步数即出发点到目的地的最短路径经过的编号节点个数加上1,是最短路径步数矩阵中源节点的行、汇节点的列的值;从最短路径步数矩阵提取源节点到汇节点的最短路径步数,接着查找源节点到汇节点最短路径的中间节点:判断源节点到汇节点的最短路径步数是否为1,如果为1,源节点到汇节点最短路径没有中间节点,结束其中间节点的查找过程;否则对源节点到汇节点的最短路径步数进行拆分,将最短路径步数除以2并对其上取整作为前步数,源节点到汇节点的最短路径步数减去前步数作为后步数;从最短路径步数矩阵的源节点行向量中搜索出步数等于前步数的所有节点,其节点编号的集合称为前步数节点集;从最短路径步数矩阵的汇节点列向量中搜索步数等于后步数的所有节点,其节点编号的集合称为后步数节点集;取前、后步数节点集的交集,称该交集为源节点到汇节点最短路径的中间节点集,则该集合中的每个节点为源节点到汇节点最短路径的中间节点,作为出发点到目的地最短路径的一层中间节点;以每个出发点到目的地最短路径的一层中间节点为基准,并行进行查找源节点到一层中间节点最短路径的中间节点、一层中间节点到汇节点最短路径的中间节点,其操作如下:查找源节点到一层中间节点最短路径的中间节点,源节点不变,一层中间节点作为汇节点,前步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,将该中间节点集中的每个节点作为出发点到目的地最短路径的前二层中间节点;查找一层中间节点到汇节点最短路径的中间节点,一层中间节点作为源节点,汇节点不变,后步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,其集合中的每个节点作为出发点到目的地最短路径的后二层中间节点;分别以每个出发点到目的地最短路径的前、后二层中间节点为基准,并行进行查找源节点到前二层中间节点、前二层中间节点到一层中间节点、一层中间节点到后二层中间节点、后二层中间节点到汇节点最短路径的中间节点;依此类推,直到要搜索的节点间的最短路径步数为1时为止;在出发点与目的地之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的所有最短路径;根据网络图中编号节点与实际网络中交叉点的一一对应关系,最短路径线路上的中间节点分别对应实际网络中的交叉点,即得到实际网络中从出发点到目的地的所有最短路径,选择其中任意一条线路即为出发点到目的地最优路径,从而快速实现了实际复杂网络中的路径择优;
所述本发明改进的狄克斯特拉(Dijkstra)算法为,对每个节点设置一对标号:第一个标号表示从源节点到该节点的最短路径距离,第二个标号表示从源节点到该节点的最短路径的步数;其算法步骤包括:
步骤一、初始化:源节点的一对标号设置为0和空,其他节点一对标号设置为无穷大和未定,设置源节点为已标记节点,其他节点为未标记节点;
步骤二:遍历所有已标记的节点到其有边连接的未标记节点,对于每个未标记节点,如果源节点到该未标记节点最短路径距离大于中间插入第三个节点后最短路径距离,更新该未标记节点的第一个标号为中间插入第三个节点后最短路径距离,第二个标号在原来的基础上加上1;
步骤三:从未标记的节点中选取其第一个标号的值最小的节点,将其设置为已标记;
步骤四、判断是否还有未标记点:如果有,转向步骤二;否则退出,算法结束;
将每个节点的第一个标号插入到最短路径距离矩阵的源节点标号的向量中,将每个节点的第二个标号插入到最短路径步数矩阵的源节点标号的向量中;以每个节点作为源节点重复使用改进的狄克斯特拉(Dijkstra)算法,得到最短路径距离矩阵和最短路径步数矩阵;
所述本发明改进的弗洛伊德(Floyd)算法为:初始最短路径距离矩阵赋值为邻接矩阵;最短路径步数矩阵根据邻接矩阵两节点是否有边存在:两节点间有边存在,其对应的最短路径步数赋值为1,否则赋值为0;
更新最短路径距离矩阵和最短路径步数矩阵:如果两个节点间的最短路径距离大于中间插入第三个节点后的最短路径距离,更新其最短路径距离为插入第三个节点后的最短路径距离,两个节点间的最短路径步数更新为这两个节点分别与第三个节点最短路径步数之和;把每个节点作为第三个节点,循环执行上述更新最短路径距离矩阵和最短路径步数矩阵。
上述网络图中最短路径的二分查找追踪法中的某一条最短路径查找的具体操作如下:
对已给定的网络图,根据其邻接矩阵A采用改进的狄克斯特拉(Dijkstra)算法或改进的弗洛伊德(Floyd)算法的得到最短路径步数矩阵S,从节点i到节点j的最短路径所经过的网络图中边的条数即为节点i到节点j的最短路径步数S(i,j);对于给定出发点作为源节点s,目的地作为汇节点t,根据最短路径步数矩阵S,得到源节点s到汇节点t的最短路径步数k=S(s,t);
查找源节点s到汇节点t最短路径的中间节点:
步骤1、判断:如果最短路径步数k为1,则源节点s到汇节点t最短路径为边e(s,t),结束源节点s到汇节点t最短路径的中间节点的查找过程;否则,取前步数k1等于最短路径步数k除以2后对其上取整,后步数k2等于最短路径步数k减去前步数k1
步骤2:在最短路径步数矩阵S中的源节点s行向量中搜索步数等于前步数k1的所有节点,得到其前步数节点集Ak1;在最短路径步数矩阵S中的汇节点t列向量中搜索步数等于后步数k2的所有节点,得到其后步数节点集Ak2
步骤3:取前步数节点集Ak1和后步数节点集Ak2的交集,在该交集中任意选择一个中间节点i1
结束源节点s到汇节点t最短路径的中间节点的查找过程,中间节点i1即为源节点s到汇节点t最短路径的一个中间节点,作为出发点到目的地最短路径的一层中间节点;
步骤4、查找源节点到中间节点i1最短路径的中间节点,作为出发点到目的地最短路径的前一层中间节点:以中间节点i1替代前面的汇节点t,前步数k1替代最短路径步数k,查找源节点s到汇节点t最短路径的中间节点,跳转到步骤1;
步骤5、与步骤4并行,查找中间节点i1到汇节点t最短路径的中间节点,作为出发点到目的地最短路径的后一层中间节点:以中间节点i1替代前面的源节点s,后步数k2替代最短路径步数k,查找源节点s到汇节点t最短路径的中间节点,跳转到步骤1;
再分别查找源节点到前二层中间节点、前二层中间节点到一层中间节点、一层中间节点到后二层中间节点、后二层中间节点到汇节点最短路径的中间节点,依此类推,直到要搜索节点间的最短路径步数为1时为止;
在出发点与目的地之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的一条最短路径:出发点,...,前二层中间节点,...,一层中间节点,...,后二层中间节点,...,目的地;
所述本发明改进的狄克斯特拉(Dijkstra)算法为:每个节点有一对标号Dn、Sn,其中第一个标号Dn是从起源节点到节点n的最短路径的长度,第二个标号Sn记录的是从源节点到节点n的最短路径的步数。其算法步骤包括:
步骤(A)、初始化:源节点标号第一个标号Ds、第二个标号Ss分别设置为0、空,其他节点标号的第一个标号Dn、第二个标号Sn设置为无穷大、未定,设置源节点为已标记,其他节点为未标记;
步骤(B):遍历所有已标记的节点i到其直接连接的未标记节点j,对于其未标记节点j,如果节点j的第一个标号Dj大于第一个标号Di与节点i到节点j的距离A(i,j)之和,更新第一个标号Dj,第二个标号Sj更新为第二个标号Si加上1;
步骤(C):从未标记的节点中,选取标号中第一个标号Dj最小的节点,将其设置为已标记;
步骤(D)、判断是否还有未标记点:如果有,转向步骤(B);否则退出,算法结束;
将每个节点的第一个标号Dn插入到最短路径距离矩阵D的源节点标号的向量中,将每个节点的第二个标号Sn插入到最短路径步数矩阵S的源节点标号的向量中;以每个节点作为源节点重复使用改进的狄克斯特拉(Dijkstra)算法,得到最短路径距离矩阵D和最短路径步数矩阵S;
所述本发明改进的弗洛伊德(Floyd)算法为:初始最短路径距离矩阵D赋值为邻接矩阵A,最短路径步数矩阵S根据邻接矩阵A中两节点是否有边存在,如果有边存在赋值为1,否则赋值为0;对于每一个节点k,如果节点i到节点j的最短路径距离D(i,j)大于节点i到节点k的最短路径距离D(i,k)与节点k到节点j的最短路径距离D(k,j)之和,更新节点i到节点j的最短路径距离D(i,j)为节点i到节点k的最短路径距离D(i,k)与节点k到节点j的最短路径距离D(k,j)之和,节点i到节点j的最短路径步数S(i,j)更新为节点i到节点k的最短路径步数S(i,k)与节点k到节点j的最短路径步数S(k,j)之和。
若对所述步骤1中最短路径步数k的拆分方式采用前步数k1等于最短路径步数k减去1、后步数k2等于1来替代,就转化成为逆向追踪法。
若所述步骤3中前步数节点集Ak1和后步数节点集Ak2的交集中有多个中间节点,表明源节点到汇节点有多条最短路径;则采用每次取不同的中间节点源节点s到汇节点t最短路径的中间节点执行步骤4和步骤5,即可提取出多条不同的最短路径。
若将所述步骤4和步骤5在并行计算机中分别分配给2个处理器进行最短路径的提取,可加快算法的进程。
本发明网络图中最短路径的二分查找追踪法的一种在实际网络的地图上作业具体操作方法如下:
先标出地图中各线路的交叉点和各交叉点间边,根据本发明改进的狄克斯特拉(Dijkstra)算法或改进的弗洛伊德(Floyd)算法的求得所有交叉点间的最短路径步数,并在地图上标出所有交叉点间的最短路径步数;将出发点到目的地的最短路径步数除以2后上取整作为前步数,出发点到目的地的最短路径步数减去前步数作为后步数;在地图上找出出发点到其它交叉点的最短路径步数等于前步数,记录这些交叉点为前步数节点集;再在地图上找出各交叉点到目的地的最短路径步数等于后步数,记录其交叉点为后步数节点集;在前步数节点集和后步数节点集中找出共同的交叉点,即为在地图上标记为最短路径必经过的一层中间点;再用相同的方法分别求出发点到一层中间点的中间节点为前二层中间点、一层中间点到目的地的中间点为后二层中间点,如此类推,直到要搜索的节点间的最短路径步数为1时为止;按照出发点,...,前二层中间点,...,一层中间点,...,后二层中间点,...目的地顺序得到一个交叉点序列,即为出发点到目的地的最短路径。
由于本发明采用了二分折半分解问题的思想,根据最短路径步数矩阵,在得到源节点和汇节点的最短路径步数基础上,找到源节点经过一半步数其最短路径到达的节点集和经过一半步数最短路径到达汇节点集,其交集中的节点为源节点和汇节点必经过的中间节点,如此类推,用并行方法操作二分折半分解方法求源节点与中间节点、中间节点与汇节点间的中间节点,直到最短路径步数二分折半到1为止,提取出源节点到汇节点最短路径;对于以上过程中交集的节点数目多于1,提取源节点与汇节点间多条最短路径线路。与逆向追踪算法相比较,克服了最短路径追踪方法无法用并行算法来处理,且二分查找追踪法对于有多条最短路径的网络图提取其所有的最短路径线路。
由于本发明根据最短路径步数矩阵,将网络作为一个从源节点到汇节点的一个层次结构的图,离源节点最短路径只经过一条边的为第一层,离源节点最短路径经过两条边的为第二层;......,依此类推。得知源节点到汇节点最短路径步数后,用二分折半的方法找到其中必经点,再分别就源节点与该节点、该节点与汇节点的最短路径,这样就加快了最短路径的提取进程的速度,并得到源节点到汇节点的所有最短路径线路,与现有逆向追踪方法相比较,克服了现有技术的反向顺序查找追踪只能提取一条最短路径线路,提供了一种追踪所有最短路径线路的方法。
由于本发明采用了分解问题的思想,分而治之的方法,分解得到的每个子问题都是和原问题相同的问题,可以用递归算法来处理,与现有逆向追踪方法相比较,克服了现有技术的反向顺序查找追踪思想,提供了一种新的追踪最短路径的方法。
由于本发明采用了应用分解问题的思想,将整个问题分解为几个部分,对多个子问题同时并行处理。如果用计算机来处理,应用并行计算来实现,与现有逆向追踪方法相比较,克服了现有技术的串行计算方法,提供了一种并行方法追踪最短路径方法。
由于本发明算法的复杂度是线性时间复杂度,复杂程度低,因此对于大规模的网络具有很好的应用价值。本发明适用的网络可以是无向网络、有向网络、无权网络、加权网络,对于存在负权重的网络同样适用,是包括计算机网络、道路网格、电力系统网或物流运输网在内的实际网络。
采用本发明方法可利用预先计算得到的最短路径信息,通过较少的空间和时间代价提高最短路径的发现和执行效率并能得到多条最短路径,达到存储有限的预先计算的节点间的最短路径关系,提高了网络中两节点间最短路径的发现效率。
本发明通过采取改进的Dijkstra算法和改进的Floyd算法,提供求解最短路径步数矩阵方法,可以方便地求解最短路径步数矩阵而并没有给算法增加附带的计算量。
具体实施方式
以下举例说明本发明在不同类型网络下的具体使用。
实施例1:提取计算机网络中路由器的无权网络的最短路径
计算机网络中,由在路由器层面上建立网络,节点为路由器,边为路由器之间的物理连接(如光纤)。同样,在自治系统的层面上,节点为域,边为连接域的物理连接。
选取某个区域的互联网上的路由器层面的网络,将各个路由器按照顺序标号,各个路由器的连接状况用无权边来连接表示,无连接为0,有连接的为1,建立商空间覆盖模型。本实施例中对于一个无向无权网络,共有5个节点记为X{1,2,3,4,5,6,7,8},设其边集E:节点1到节点2、节点1到节点3、节点2到节点3、节点2到节点4、节点3到节点5、节点4到节点6、节点5到节点6、节点5到节点7、节点6到节点8、节点7到节点8之间有边,其他节点间无相连。
其初始网络,对应的邻接矩阵 A = 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 .
根据改进的Floyd算法,求所有顶点对的最短路径矩阵D和最短路径步数矩阵S。其计算机算法的伪代码为:
  begin
(1)   D←A;
(2)   for i←l to n do
(3)     for j←l to n do
(4)        if A(i,j)=1
(5)           S(i,j)←1;
(6)          Else
(7)           S(i,j)←-1;
         endfor
      endfor
(8)    for k←l to n do
(9)        for i←l to n do
(10)           for j←l to n do
(11)               if D(i,j)>D(i,k)+D(k,j)
(12)                    D(i,j)←d(i,k)+d(k,j)
(13)                    S(i,j)←S(i,k)+S(k,j)
                 endfor
               endfor
            endfor
end.
对于无权网络来说,最短路径矩阵D和最短路径步数矩阵S是相等的,求得的最短路径矩阵D最短路径步数矩阵S为:
D = S = 0 1 1 2 2 3 3 4 0 0 1 1 2 2 3 3 0 0 0 2 1 2 2 3 0 0 0 0 2 1 3 2 0 0 0 0 0 1 1 2 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 .
应用二分查找追踪法来提取从出发点节点1到目的地节点8的最短路径:根据最短路径步数矩阵S求得S(1,8)=4,则得到源节点1到汇节点8的最短路径步数k=4。
最短路径步数k除以2的对其上取整得前步数k1=2,最短路径步数k减去前步数k1得后步数k2=2;在最短路径步数矩阵S中的节点1行向量中搜索步数等于前步数k1=2,得前步数节点集Ak1={4,5},在最短路径步数矩阵S中的节点8列向量中搜索步数等于后步数k2=2,得后步数节点集Ak2={4,5};取前步数节点集Ak1和后步数节点集Ak2交集为{4,5}。
在交集中选择第一个节点4,节点4为出发点节点1到目的地节点8的最短路径的一层中间节点,并行求解节点1到节点4最短路径的中间节点和节点4到节点8最短路径的中间节点:
求节点1到节点4最短路径的中间节点:前步数k1代替最短路径步数k,节点4替代汇节点,则有最短路径步数k=2,源节点为节点1,汇节点为节点4;最短路径步数k除以2的对其上取整得前步数k1=1,最短路径步数k减去前步数k1得后步数k2=1;在最短路径步数矩阵S中的节点1行向量中搜索步数等于1,得前步数节点集Ak1={2,3},在最短路径步数矩阵S中的节点4列向量中搜索步数等于步数1,得后步数节点集Ak2={2};取节点集合Ak1和节点集合Ak2交集为{2}。节点2为出发点节点1到目的地节点8的最短路径的前二层中间节点,再求节点1到节点2最短路径的中间节点和节点2到节点4最短路径的中间节点,由于k1=1和k2=1,表示节点1到节点2的最短路径为节点1到节点2的边,节点2到节点4的最短路径为节点2到节点4的边。
求节点4到节点8最短路径的中间节点:后步数k2代替最短路径步数k,节点4替代源节点,则有最短路径步数k=2,源节点为节点4,汇节点为节点8;最短路径步数k除以2的对其上取整得前步数k1=1,最短路径步数k减去前步数k1得后步数k2=1;在最短路径步数矩阵S中的节点4行向量中搜索步数等于1,得前步数节点集Ak1={6},在最短路径步数矩阵S中的节点8列向量中搜索步数等于步数1,得后步数节点集Ak2={6,7};取节点集合Ak1和节点集合Ak2交集为{6}。节点6为出发点节点1到目的地节点8的最短路径的后二层中间节点,再求节点4到节点6的最短路径和节点6到节点8的最短路径,由于k1=1和k2=1,表示节点4到节点6的最短路径为节点4到节点6的边,节点6到节点8的最短路径为节点6到节点8的边。
在出发点节点1与目的地节点8之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的一条最短路径:出发点,前二层中间节点,一层中间节点,后二层中间节点,目的地;得最短路径:1,2,4,6,8。
在交集中选择第二个节点5,节点5为出发点节点1到目的地节点8的最短路径的一层中间节点,并行求解节点1到节点5的最短路径和节点5到节点8的最短路径:
求节点1到节点5最短路径的中间节点:前步数k1代替最短路径步数k,节点5替代汇节点,则有最短路径步数k=2,源节点为节点1,汇节点为节点5;最短路径步数k除以2的对其上取整得前步数k1=1,最短路径步数k减去前步数k1得后步数k2=1;在最短路径步数矩阵S中的节点1行向量中搜索步数等于1,得前步数节点集Ak1={2,3},在最短路径步数矩阵S中的节点5列向量中搜索步数等于步数1,得后步数节点集合Ak2={3};取前步数节点集Ak1和后步数节点集Ak2交集为{3}。节点3为出发点节点1到目的地节点8的最短路径的前二层中间节点,再求节点1到节点3的最短路径和节点3到节点4的最短路径,由于k1=1和k2=1,表示节点1到节点3的最短路径为节点1到节点3的边,节点3到节点5的最短路径为节点3到节点5的边。
求节点5到节点8最短路径的中间节点:后步数k2代替最短路径步数k,节点5替代源节点,则有最短路径步数k=2,源节点为节点5,汇节点为节点8;最短路径步数k除以2的对其上取整得前步数k1=1,最短路径步数k减去前步数k1得后步数k2=1;在最短路径步数矩阵S中的节点5行向量中搜索步数等于1,得前步数节点集Ak1={6,7},在最短路径步数矩阵S中的节点8列向量中搜索步数等于步数1,得后步数节点Ak2={6,7};取前步数节点集Ak1和后步数节点集Ak2交集为{6,7}。节点6和节点7为出发点节点1到目的地节点8的最短路径的后二层中间节点,选取交集中的第一个节点6,再求节点4到节点6的最短路径和节点6到节点8的最短路径,由于k1=1和k2=1,表示节点5到节点6的最短路径为节点5到节点6的边,节点6到节点8的最短路径为节点6到节点8的边;选取交集中的第二个节点7,再求节点5到节点7的最短路径和节点7到节点8的最短路径,由于k1=1和k2=1,表示节点5到节点7的最短路径为节点5到节点7的边,节点7到节点8的最短路径为节点7到节点8的边。
在出发点节点1与目的地节点8之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的一条最短路径:出发点,前二层中间节点,一层中间节点,后二层中间节点,目的地;得最短路径:1,3,5,6,8和1,3,5,7,8。
最后得最短路径有三条:1,2,4,6,8、1,3,5,6,8和1,3,5,7,8。
以上是对有向无权网络的一个例子分析。
对于无向无权网络,可以作为两个有向无权网络的叠加,最短路径矩阵D和最短路径步数矩阵S为对称矩阵且D和S相等,故采用二分查找追踪法查找源节点到汇节点的最短路径过程是一样的。
应用二分查找追踪算法提取出任意两节点间的最短路径,再将最短路径的数字编码对应于各个网络路由器名称,即可得到任意两路由器之间的最短路径,使得网络路径经过路由器最少,为网络中的路径选择提供方便,为网络资源的综合充分利用创造条件。对于移动无线网络路由,也是与此类似的。
以上是总体的最短路径的提取查找过程,对于每个路由器预先应用改进的Dijkstra算法计算出以自身为源节点的最短路径树,该最短路径树存储的是源节点到其他节点的最短路径步数,再利用二分查找追踪法就可以快速提取最短路径线路。
实施例2:提取道路网格中的加权网络的最短路径
对于公路交通网络中,节点为有交叉点的地名,边为道路。在铁路交通网络中,节点为火车站,边为铁路。同理在航空网络以飞机场为节点,边是航班。
下面以公路网络来举例说明。
根据中国《公路工程技术标准》将公路划分为五个等级,城市道路分为快速路、主干路、次干路及支路四类。具体的城市路段通常包括高速公路、街、路、巷、道多种类型。在城市、城乡和城镇间,公路路段有高速公路、国道、省道和乡镇公路,路道有4车道、3车道、2车道和单车道。对于某一有公路相通的城镇集合地区构建道路交通网络图,可将其节点对应为城市的具体地点和各个叉路口,网络边上的权则可根据公路的节点间的距离和行驶速度来设定,其中行驶速度是根据路段类型、路面宽度、允许行车时速和红绿灯设置间距来设定:对于路段好、路面宽、允许时速大和红绿灯间距大的路段,所对应的速度快,反之对应的速度慢小。
将所选取的某一地区城市间公路网络中的城市地点、各个叉路口按顺序标号为1,2,3,4,5,6,7,8;城市间的交通公路状况用带权值的网络边表示:无公路连接的两城市间的网络边权值是0,其它网络边权值的大小由公路的节点间的距离和行驶速度来设定,将距离除以行驶速度得到边的权值大小;由上面设定条件所对应出其节点2到节点3、节点3到节点4、节点5到节点6、节点6到节点8的权值分别为5,节点4到节点5、节点4到节点7、节点5到节点4的权值分别为4,节点2到节点4、节点2到节点5、节点5到节点7、节点7到节点8的权值分别为3,节点1到节点3、节点4到节点6的权值分别为2,节点1到节点2、节点6到节点7的权值分别为1,其它节点间无相连。
其初始网络,对应的邻接矩阵 A = 0 1 2 0 0 0 0 0 0 0 5 3 3 0 0 0 0 0 0 5 0 0 8 0 0 0 0 0 4 2 4 0 0 0 0 4 0 5 3 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 .
根据改进的Floyd算法或者改进的Dijkstra算法,求所有顶点对的最短路径矩阵D和最短路径步数矩阵S。
D = 0 1 2 4 4 6 7 10 0 0 5 3 3 5 6 9 0 0 0 5 9 7 8 11 0 0 0 0 4 2 3 6 0 0 0 4 0 5 3 6 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 , S = 0 1 1 2 2 3 3 4 0 0 1 1 1 2 2 3 0 0 0 1 2 2 1 2 0 0 0 0 1 1 2 3 0 0 0 1 0 1 1 2 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 .
应用二分查找追踪法来提取从节点1到节点8的最短路径。根据最短路径步数矩阵S求得S(1,8)=4,则得到源节点1到汇节点8的最短路径步数k=4。
步数k除以2的对其上取整得k1=2,步数k减去k1得k2=2;在最短路径步数矩阵S中的节点1行向量中搜索步数等于2,得其节点集合Ak1={4,5},在最短路径步数矩阵S中的节点8列向量中搜索步数等于步数2,得其节点集合Ak2={3,5,6};取节点集合Ak1和节点集合Ak2交集为{5}。
在交集中选择节点5,求节点1到节点5的最短路径和节点5到节点8的最短路径:
步数k1除以2的对其上取整得k11=1,步数k1减去k11得k12=1;在最短路径步数矩阵S中的节点1行向量中搜索步数等于1,得其节点集合Ak11={2,3},在最短路径步数矩阵S中的节点5列向量中搜索步数等于步数1,得其节点集合Ak2={2,4};取节点集合Ak1和节点集合Ak2交集为{2}。再求节点1到节点2的最短路径和节点2到节点5的最短路径,由于k11=1和k12=1,表示节点1到节点2的最短路径为节点1到节点2的边,节点2到节点5的最短路径为节点2到节点5的边。
步数k2除以2的对其上取整得k21=1,步数k2减去k21得k22=1;在最短路径步数矩阵S中的节点5行向量中搜索步数等于1,得其节点集合Ak21={4,6,7},在最短路径步数矩阵S中的节点8列向量中搜索步数等于步数1,得其节点集合Ak2={7};取节点集合Ak21和节点集合Ak22交集为{7}。再求节点5到节点7的最短路径和节点7到节点8的最短路径,由于k21=1和k22=1,表示节点5到节点7的最短路径为节点5到节点7的边,节点7到节点8的最短路径为节点7到节点8的边。
得节点1到节点8的最短路径为(1,2,5,7,8),其最短路径长度为D(1,8)=10。
应用二分查找追踪法提取网络中的最短路径,然后将最短路径的数字编码对应于城市和各个叉路口的名称对应,即得到任意两个地理位置间的最短路径。如果只需要两地理位置间的最短路径线路,只要预先存储最短路径步数矩阵即可,这样大大减少了空间存储便于在实际中应用。
以上是有向加权网络的一个例子分析,对于无向加权网络可以认为是两个有向加权网络的叠加,最短路径矩阵D和最短路径步数矩阵S为对称矩阵,二分查找追踪法在查找源节点到汇节点的最短路径过程是一样的。
实施例3:提取电力系统网络中的最短路径
根据我国远距离输电的电压有110千伏、220千伏、330千伏,近年还建成了500千伏的超高压输电线路,以及国外还建有1150千伏的试验性超高压输电线路的具体实际情况,对电力系统的电力输送过程建立有向加权网络,节点是各个配电变压器、升压器和降压器,边上的权根据输送线路的输送电压、线路总长度和输送功率等来决定,其输送过程中的电能损耗越少,其边上权值越小。
选取某一区域的电力输送系统,将各个配电变压器、升压器和降压器按照顺序标号,各个配电变压器、升压器和降压器的连接状况用加权的有向边表示,无连接的权值是0,其它的权值根据输送过程中的电能损耗越少来决定。应用本发明方法通过计算机仿真模拟了1500节点以内的网络,分别用改进的Dijkstra算法和改进的Floyd算法计算最短路径步数矩阵,应用二分查找追踪法来提取查找最短路径线路,并与逆向追踪算法进行了时间复杂度的比较,其中二分查找追踪法速度要快。
应用二分查找追踪法提取任意两节点间的最短路径,然后将最短路径的数字编码对应于各个配电变压器、升压器和降压器名称对应,即可以得到任意两配电变压器、升压器和降压器间的最短路径,从而为电力输送过程提供了方便。
实施例4:提取物流运输网中最短路径
在物流运输网的地图中,先标出地图中各线路的交叉点和各交叉点间边,根据改进的狄克斯特拉(Dijkstra)算法或改进的弗洛伊德(Floyd)算法的求得所有交叉点间的最短路径步数,并在地图上标出所有交叉点间的最短路径步数;将出发点到目的地的最短路径步数除以2后上取整作为前步数,出发点到目的地的最短路径步数减去前步数作为后步数;在地图上找出出发点到其它交叉点的最短路径步数等于前步数,记录这些交叉点为前步数节点集;再在地图上找出各交叉点到目的地的最短路径步数等于后步数,记录其交叉点为后步数节点集;在前步数节点集和后步数节点集中找出共同的交叉点,即为在地图上标记为最短路径必经过的一层中间点;再用相同的方法分别求出发点到一层中间点的中间节点为前二层中间点、一层中间点到目的地的中间点为后二层中间点,如此类推,直到要搜索的节点间的最短路径步数为1时为止;按照出发点,...,前二层中间点,...,一层中间点,...,后二层中间点,...目的地顺序得到一个交叉点序列,即为出发点到目的地的最短路径。
应用二分查找追踪法提取任意两节点间的最短路径,为物流运输的路径寻优过程提供了多条可供选择的快捷线路,从而可减少运输的费用和时间、带来良好的经济效益。

Claims (6)

1.一种网络图中最短路径的二分查找追踪法,先把出现在包括计算机网络、道路网格、电力系统网或物流运输网在内的实际网络中存在的交叉点作为节点、交叉点之间的联系作为边形成网络图,将所有的节点随机地从1开始按自然数字进行编号,节点之间的边用邻接矩阵存储;其特征在于:采用改进的狄克斯特拉算法或改进的弗洛伊德算法来获得最短路径步数矩阵;将实际网络中的出发点作为源节点,将目的地作为汇节点,从出发点到目的地的最短路径步数即出发点到目的地的最短路径经过的编号节点个数加上1,是最短路径步数矩阵中源节点的行、汇节点的列的值;从最短路径步数矩阵提取源节点到汇节点的最短路径步数,接着查找源节点到汇节点最短路径的中间节点:判断源节点到汇节点的最短路径步数是否为1,如果为1,源节点到汇节点最短路径没有中间节点,结束其中间节点的查找过程;否则对源节点到汇节点的最短路径步数进行拆分,将最短路径步数除以2并对其上取整作为前步数,源节点到汇节点的最短路径步数减去前步数作为后步数;从最短路径步数矩阵的源节点行向量中搜索出步数等于前步数的所有节点,其节点编号的集合称为前步数节点集;从最短路径步数矩阵的汇节点列向量中搜索步数等于后步数的所有节点,其节点编号的集合称为后步数节点集;取前、后步数节点集的交集,称该交集为源节点到汇节点最短路径的中间节点集,则该集合中的每个节点为源节点到汇节点最短路径的中间节点,作为出发点到目的地最短路径的一层中间节点;以每个出发点到目的地最短路径的一层中间节点为基准,并行进行查找源节点到一层中间节点最短路径的中间节点、一层中间节点到汇节点最短路径的中间节点,其操作如下:查找源节点到一层中间节点最短路径的中间节点,源节点不变,一层中间节点作为汇节点,前步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,将该中间节点集中的每个节点作为出发点到目的地最短路径的前二层中间节点;查找一层中间节点到汇节点最短路径的中间节点,一层中间节点作为源节点,汇节点不变,后步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,其集合中的每个节点作为出发点到目的地最短路径的后二层中间节点;分别以每个出发点到目的地最短路径的前、后二层中间节点为基准,并行进行查找源节点到前二层中间节点、前二层中间节点到一层中间节点、一层中间节点到后二层中间节点、后二层中间节点到汇节点最短路径的中间节点;依此类推,直到要搜索的节点间的最短路径步数为1时为止;在出发点与目的地之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的所有最短路径;根据网络图中编号节点与实际网络中交叉点的一一对应关系,最短路径线路上的中间节点分别对应实际网络中的交叉点,即得到实际网络中从出发点到目的地的所有最短路径,选择其中任意一条线路即为出发点到目的地最优路径,从而快速实现了实际复杂网络中的路径择优;
所述改进的狄克斯特拉算法为,对每个节点设置一对标号:第一个标号表示从源节点到该节点的最短路径距离,第二个标号表示从源节点到该节点的最短路径的步数;其算法步骤包括:
步骤一、初始化:源节点的一对标号设置为0和空,其他节点一对标号设置为无穷大和未定,设置源节点为已标记节点,其他节点为未标记节点;
步骤二:遍历所有已标记的节点到其有边连接的未标记节点,对于每个未标记节点,如果源节点到该未标记节点最短路径距离大于中间插入第三个节点后最短路径距离,更新该未标记节点的第一个标号为中间插入第三个节点后最短路径距离,第二个标号在原来的基础上加上1;
步骤三:从未标记的节点中选取其第一个标号的值最小的节点,将其设置为已标记;
步骤四、判断是否还有未标记点:如果有,转向步骤二;否则退出,算法结束;
将每个节点的第一个标号插入到最短路径距离矩阵的源节点标号的向量中,将每个节点的第二个标号插入到最短路径步数矩阵的源节点标号的向量中;以每个节点作为源节点重复使用改进的狄克斯特拉算法,得到最短路径距离矩阵和最短路径步数矩阵;
所述改进的弗洛伊德算法为:初始最短路径距离矩阵赋值为邻接矩阵;最短路径步数矩阵根据邻接矩阵两节点是否有边存在:两节点间有边存在,其对应的最短路径步数赋值为1,否则赋值为0;
更新最短路径距离矩阵和最短路径步数矩阵:如果两个节点间的最短路径距离大于中间插入第三个节点后的最短路径距离,更新其最短路径距离为插入第三个节点后的最短路径距离,两个节点间的最短路径步数更新为这两个节点分别与第三个节点最短路径步数之和;把每个节点作为第三个节点,循环执行上述更新最短路径距离矩阵和最短路径步数矩阵。
2.如权利要求1所述网络图中最短路径的二分查找追踪法,特征在于其中的某一条最短路径查找的具体操作如下:
对已给定的网络图,根据其邻接矩阵A采用改进的狄克斯特拉算法或改进的弗洛伊德算法的得到最短路径步数矩阵S,从节点i到节点j的最短路径所经过的网络图中边的条数即为节点i到节点j的最短路径步数S(i,j);对于给定出发点作为源节点s,目的地作为汇节点t,根据最短路径步数矩阵S,得到源节点s到汇节点t的最短路径步数k=S(s,t);
查找源节点s到汇节点t最短路径的中间节点:
步骤1、判断:如果最短路径步数k为1,则源节点s到汇节点t最短路径为边e(s,t),结束源节点s到汇节点t最短路径的中间节点的查找过程;否则,取前步数k1等于最短路径步数k除以2后对其上取整,后步数k2等于最短路径步数k减去前步数k1
步骤2:在最短路径步数矩阵S中的源节点s行向量中搜索步数等于前步数k1的所有节点,得到其前步数节点集Ak1;在最短路径步数矩阵S中的汇节点t列向量中搜索步数等于后步数k2的所有节点,得到其后步数节点集Ak2
步骤3:取前步数节点集Ak1和后步数节点集Ak2的交集,在该交集中任意选择一个中间节点i1
结束源节点s到汇节点t最短路径的中间节点的查找过程,中间节点i1即为源节点s到汇节点t最短路径的一个中间节点,作为出发点到目的地最短路径的一层中间节点;
步骤4、查找源节点到中间节点i1最短路径的中间节点,作为出发点到目的地最短路径的前一层中间节点:以中间节点i1替代前面的汇节点t,前步数k1替代最短路径步数k,查找源节点s到汇节点t最短路径的中间节点,跳转到步骤1;
步骤5、与步骤4并行,查找中间节点i1到汇节点t最短路径的中间节点,作为出发点到目的地最短路径的后一层中间节点:以中间节点i1替代前面的源节点s,后步数k2替代最短路径步数k,查找源节点s到汇节点t最短路径的中间节点,跳转到步骤1;
再分别查找源节点到前二层中间节点、前二层中间节点到一层中间节点、一层中间节点到后二层中间节点、后二层中间节点到汇节点最短路径的中间节点,依此类推,直到要搜索节点间的最短路径步数为1时为止;
在出发点与目的地之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的一条最短路径:出发点,…,前二层中间节点,…,一层中间节点,…,后二层中间节点,…,目的地;
所述改进的狄克斯特拉算法为:每个节点有一对标号Dn、Sn,其中第一个标号Dn是从起源节点到节点n的最短路径的长度,第二个标号Sn记录的是从源节点到节点n的最短路径的步数。其算法步骤包括:
步骤(A)、初始化:源节点标号第一个标号Ds、第二个标号Ss分别设置为0、空,其他节点标号的第一个标号Dn、第二个标号Sn设置为无穷大、未定,设置源节点为已标记,其他节点为未标记;
步骤(B):遍历所有已标记的节点i到其直接连接的未标记节点j,对于其未标记节点j,如果节点j的第一个标号Dj大于第一个标号Di与节点i到节点j的距离A(i,j)之和,更新第一个标号Dj,第二个标号Sj更新为第二个标号Si加上1;
步骤(C):从未标记的节点中,选取标号中第一个标号Dj最小的节点,将其设置为已标记;
步骤(D)、判断是否还有未标记点:如果有,转向步骤(B);否则退出,算法结束;
将每个节点的第一个标号Dn插入到最短路径距离矩阵D的源节点标号的向量中,将每个节点的第二个标号Sn插入到最短路径步数矩阵S的源节点标号的向量中;以每个节点作为源节点重复使用改进的狄克斯特拉算法,得到最短路径距离矩阵D和最短路径步数矩阵S;
所述改进的弗洛伊德算法为:初始最短路径距离矩阵D赋值为邻接矩阵A,最短路径步数矩阵S根据邻接矩阵A中两节点是否有边存在,如果有边存在赋值为1,否则赋值为0;对于每一个节点k,如果节点i到节点j的最短路径距离D(i,j)大于节点i到节点k的最短路径距离D(i,k)与节点k到节点j的最短路径距离D(k,j)之和,更新节点i到节点j的最短路径距离D(i,j)为节点i到节点k的最短路径距离D(i,k)与节点k到节点j的最短路径距离D(k,j)之和,节点i到节点j的最短路径步数S(i,j)更新为节点i到节点k的最短路径步数S(i,k)与节点k到节点j的最短路径步数S(k,j)之和。
3.如权利要求2所述网络图中最短路径的二分查找追踪法,特征在于对所述步骤1中最短路径步数k的拆分方式采用前步数k1等于最短路径步数k减去1、后步数k2等于1来替代,则转化成逆向追踪法。
4.如权利要求2所述网络图中最短路径的二分查找追踪法,特征在于所述步骤3中前步数节点集Ak1和后步数节点集Ak2的交集中有多个中间节点,表明源节点到汇节点有多条最短路径;则采用每次取不同的中间节点源节点s到汇节点t最短路径的中间节点执行步骤4和步骤5,即提取出多条不同的最短路径。
5.如权利要求2所述网络图中最短路径的二分查找追踪法,特征在于将所述步骤4和步骤5在并行计算机中分别分配给2个处理器进行最短路径的提取,加快算法的进程。
6.如权利要求1所述网络图中最短路径的二分查找追踪法,特征在于在实际网络的地图上作业具体操作方法如下:
先标出地图中各线路的交叉点和各交叉点间边,根据改进的狄克斯特拉算法或改进的弗洛伊德算法的求得所有交叉点间的最短路径步数,并在地图上标出所有交叉点间的最短路径步数;将出发点到目的地的最短路径步数除以2后上取整作为前步数,出发点到目的地的最短路径步数减去前步数作为后步数;在地图上找出出发点到其它交叉点的最短路径步数等于前步数,记录这些交叉点为前步数节点集;再在地图上找出各交叉点到目的地的最短路径步数等于后步数,记录其交叉点为后步数节点集;在前步数节点集和后步数节点集中找出共同的交叉点,即为在地图上标记为最短路径必经过的一层中间点;再用相同的方法分别求出发点到一层中间点的中间节点为前二层中间点、一层中间点到目的地的中间点为后二层中间点,如此类推,直到要搜索的节点间的最短路径步数为1时为止;按照出发点,…,前二层中间点,…,一层中间点,…,后二层中间点,…目的地顺序得到一个交叉点序列,即为出发点到目的地的最短路径。
CN200910251662A 2009-12-30 2009-12-30 一种网络图中最短路径的二分查找追踪方法 Pending CN101788999A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910251662A CN101788999A (zh) 2009-12-30 2009-12-30 一种网络图中最短路径的二分查找追踪方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910251662A CN101788999A (zh) 2009-12-30 2009-12-30 一种网络图中最短路径的二分查找追踪方法

Publications (1)

Publication Number Publication Date
CN101788999A true CN101788999A (zh) 2010-07-28

Family

ID=42532215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910251662A Pending CN101788999A (zh) 2009-12-30 2009-12-30 一种网络图中最短路径的二分查找追踪方法

Country Status (1)

Country Link
CN (1) CN101788999A (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101977120A (zh) * 2010-10-15 2011-02-16 清华大学 基于图形处理器的大规模静态网络划分方法
CN103020130A (zh) * 2012-11-20 2013-04-03 北京航空航天大学 一种面向城市路网的位置服务中支持区域的k最近邻查询方法
CN103994769A (zh) * 2013-02-19 2014-08-20 腾讯科技(深圳)有限公司 地图导航路线获取方法和终端
CN104008431A (zh) * 2014-05-30 2014-08-27 南京富岛信息工程有限公司 一种原油罐区调度方法
CN105005627A (zh) * 2015-08-07 2015-10-28 上海交通大学 基于Spark分布式系统的最短路径关键点查询方法
CN105141524A (zh) * 2015-09-16 2015-12-09 武汉烽火技术服务有限公司 一种带约束条件的拓扑图最优路径算法
CN106052692A (zh) * 2016-05-20 2016-10-26 中国地质大学(武汉) 一种最短路径规划导航方法及系统
CN106909614A (zh) * 2017-01-12 2017-06-30 杭州电子科技大学 一种叠加网络的提取方法
CN106933908A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 最短路径识别方法及装置
CN106933911A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 最短路径识别方法及装置
CN107566268A (zh) * 2016-06-30 2018-01-09 南京中兴软件有限责任公司 以太网路径的获取方法及装置
CN109840624A (zh) * 2019-01-08 2019-06-04 浙江工业大学 一种基于狄克斯特拉算法的电动汽车充电调度优化方法
CN110866629A (zh) * 2019-09-20 2020-03-06 合肥工业大学 面向异构任务的车辆路径优化方法及装置
CN110932973A (zh) * 2018-09-19 2020-03-27 中国移动通信集团广东有限公司 一种光缆网点到点的最佳路由计算方法及装置
CN111289816A (zh) * 2020-02-11 2020-06-16 南方电网科学研究院有限责任公司 一种多端直流输电系统的试验排序优化方法及装置
CN111431173A (zh) * 2020-03-30 2020-07-17 国网经济技术研究院有限公司 考虑负荷互补特性的中压配电网环网结构确定方法及系统
CN112529292A (zh) * 2020-12-11 2021-03-19 重庆邮电大学 一种基于改进Floyd算法的交通网络线路优化方法
CN113312694A (zh) * 2021-05-25 2021-08-27 中国科学院计算技术研究所厦门数据智能研究院 一种在方舱类建筑中生成动线规划的方法
CN113379342A (zh) * 2021-04-28 2021-09-10 杭州中港科技有限公司 基于最短路径算法优化物联网服务管理系统
CN115907256A (zh) * 2022-11-24 2023-04-04 交通运输部科学研究院 最短路径查找方法、装置、电子设备及可读存储介质
CN116028678A (zh) * 2023-03-27 2023-04-28 中证信息技术服务有限责任公司 一种知识图谱中全量路径查找方法及系统

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101977120B (zh) * 2010-10-15 2013-01-02 清华大学 基于图形处理器的大规模静态网络划分方法
CN101977120A (zh) * 2010-10-15 2011-02-16 清华大学 基于图形处理器的大规模静态网络划分方法
CN103020130B (zh) * 2012-11-20 2016-11-09 北京航空航天大学 一种面向城市路网的位置服务中支持区域的k最近邻查询方法
CN103020130A (zh) * 2012-11-20 2013-04-03 北京航空航天大学 一种面向城市路网的位置服务中支持区域的k最近邻查询方法
CN103994769A (zh) * 2013-02-19 2014-08-20 腾讯科技(深圳)有限公司 地图导航路线获取方法和终端
CN104008431A (zh) * 2014-05-30 2014-08-27 南京富岛信息工程有限公司 一种原油罐区调度方法
CN104008431B (zh) * 2014-05-30 2017-10-31 南京富岛信息工程有限公司 一种原油罐区调度方法
CN105005627A (zh) * 2015-08-07 2015-10-28 上海交通大学 基于Spark分布式系统的最短路径关键点查询方法
CN105141524A (zh) * 2015-09-16 2015-12-09 武汉烽火技术服务有限公司 一种带约束条件的拓扑图最优路径算法
CN105141524B (zh) * 2015-09-16 2018-06-01 武汉烽火技术服务有限公司 一种带约束条件的拓扑图最优路径算法
CN106933908B (zh) * 2015-12-31 2020-03-03 北京国双科技有限公司 最短路径识别方法及装置
CN106933908A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 最短路径识别方法及装置
CN106933911A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 最短路径识别方法及装置
CN106052692A (zh) * 2016-05-20 2016-10-26 中国地质大学(武汉) 一种最短路径规划导航方法及系统
CN107566268A (zh) * 2016-06-30 2018-01-09 南京中兴软件有限责任公司 以太网路径的获取方法及装置
CN107566268B (zh) * 2016-06-30 2021-08-17 中兴通讯股份有限公司 以太网路径的获取方法及装置
CN106909614A (zh) * 2017-01-12 2017-06-30 杭州电子科技大学 一种叠加网络的提取方法
CN110932973A (zh) * 2018-09-19 2020-03-27 中国移动通信集团广东有限公司 一种光缆网点到点的最佳路由计算方法及装置
CN110932973B (zh) * 2018-09-19 2022-05-10 中国移动通信集团广东有限公司 一种光缆网点到点的最佳路由计算方法及装置
CN109840624A (zh) * 2019-01-08 2019-06-04 浙江工业大学 一种基于狄克斯特拉算法的电动汽车充电调度优化方法
CN110866629A (zh) * 2019-09-20 2020-03-06 合肥工业大学 面向异构任务的车辆路径优化方法及装置
CN110866629B (zh) * 2019-09-20 2022-12-13 合肥工业大学 面向异构任务的车辆路径优化方法及装置
CN111289816A (zh) * 2020-02-11 2020-06-16 南方电网科学研究院有限责任公司 一种多端直流输电系统的试验排序优化方法及装置
CN111431173A (zh) * 2020-03-30 2020-07-17 国网经济技术研究院有限公司 考虑负荷互补特性的中压配电网环网结构确定方法及系统
CN112529292A (zh) * 2020-12-11 2021-03-19 重庆邮电大学 一种基于改进Floyd算法的交通网络线路优化方法
CN113379342A (zh) * 2021-04-28 2021-09-10 杭州中港科技有限公司 基于最短路径算法优化物联网服务管理系统
CN113312694A (zh) * 2021-05-25 2021-08-27 中国科学院计算技术研究所厦门数据智能研究院 一种在方舱类建筑中生成动线规划的方法
CN115907256A (zh) * 2022-11-24 2023-04-04 交通运输部科学研究院 最短路径查找方法、装置、电子设备及可读存储介质
CN115907256B (zh) * 2022-11-24 2023-12-19 交通运输部科学研究院 最短路径查找方法、装置、电子设备及可读存储介质
CN116028678A (zh) * 2023-03-27 2023-04-28 中证信息技术服务有限责任公司 一种知识图谱中全量路径查找方法及系统

Similar Documents

Publication Publication Date Title
CN101788999A (zh) 一种网络图中最短路径的二分查找追踪方法
CN100578152C (zh) 用于处理大规模浮动车数据的启发式路径匹配方法
CN104050237B (zh) 一种道路测绘方法和系统
CN101614551B (zh) 步行网建立方法及装置、路径搜索方法及装置
CN104215254B (zh) 路径导航的方法和装置
CN102175256A (zh) 一种基于进化树拓扑路网构建的路径规划确定方法
CN101957208B (zh) 一种基于浮动车技术的新增道路发现方法
CN104266656A (zh) 用于道路网的最短路径搜索方法及装置
CN103389101B (zh) 一种基于层次结构的道路连通性检查方法
CN111197991A (zh) 基于深度神经网络的预测车辆最佳驾驶路径方法
CN111879329B (zh) 基于a*算法的定制公交可通行最短路径计算方法
CN101650191A (zh) 道路网络拓扑抽象的方法及装置
CN100542117C (zh) 一种基于复杂网络商空间模型的路径搜索方法
Wang et al. Route planning based on floyd algorithm for intelligence transportation system
CN100520300C (zh) 城际导航路径的计算方法
CN105160429A (zh) 一种具有虚拟换乘微枢纽的多模式公交换乘方法
CN113096389B (zh) 一种基于多源数据的全国高速公路网络拓扑构建方法
CN104596527A (zh) 一种划分各级引导道路和细街路的方法
Anamisa et al. Analysis of the result of the ant colony system adaptive on tourism object
CN106709011A (zh) 一种基于空间定位簇的位置概念层次消解计算方法
Tahilyani et al. A new genetic algorithm based lane-by-pass approach for smooth traffic flow on road networks
Wang et al. Prediction of the Deviation between Alternative Routes and Actual Trajectories for Bicyclists
KR101254708B1 (ko) 복합 환승 경로 탐색 방법 및 그 방법에 대한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
Saeidi A genetic algorithm for route optimization in public transportation problem
Moreno-Navarro et al. GIS modelling of intermodal networks: a comparison of two methods

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20100728