经过必经顶点的最短路径搜索方法与流程

文档序号:13147130阅读:来源:国知局
技术特征:
1.一种经过必经顶点的最短路径搜索方法,包括以下步骤:(1)构造有权有向图:构造满足源顶点、目的顶点、必经顶点、非必经顶点之间相互关系的有权有向图;(2)初始化:将目的顶点d添加到必经顶点集合X中,建立一个用来存放似优路径上的顶点集合M,将存放似优路径上的顶点集合M初始化为空,将迭代次数k初始化为1,建立一个用来存放似优路径的集合W,将存放似优路径的集合W初始化为空;(3)判断必经顶点集合X中的顶点个数是否为1,若是,则执行步骤(17),否则,执行步骤(4);(4)搜索第1阶段的最短路径:(4a)以源顶点s作为搜索起点sk,采用Dijkstra迪杰斯特拉方法,分别求出搜索起点sk到必经顶点集合X中除去目的顶点d之外的所有顶点之间的不成环最短路径;(4b)采用最短路径权值公式,计算第1阶段搜索起点到每个必经顶点的最短路径pk,将最短路径pk按照权值从小到大的顺序排列为其中,qk表示搜索过程中搜索起点到其余未搜索到的必经顶点能够连通的最短路径的个数;(5)存储第k阶段的路径:(5a)建立一个用来存放第k阶段搜索过程中,搜索起点到其余必经顶点能够连通的最短路径集合Nk,将最短路径集合Nk初始化为空;(5b)按照最短路径权值从小到大的顺序,将与最短路径权值大小顺序对应的最短路径分别存放到最短路径集合Nk中,ik表示最短路径在最短路径集合Nk中索引,初始化ik为1;(6)确定下一阶段的搜索起点:(6a)找出最短路径集合Nk中索引为ik的最短路径对应的必经顶点将连接搜索起点sk到必经顶点之间的所有顶点的集合记为(6b)将集合中的所有顶点存到似优路径的顶点集合M中;(6c)最短路径存到似优路径的集合W中;(6d)在必经顶点集合X中移除必经顶点将必经顶点作为k=k+1阶段的搜索起点sk;(7)判断必经顶点集合X中的个数是否为1,若是,则执行步骤(8),否则,执行步骤(10);(8)寻找搜索起点sk到目的顶点d之间的最短路径;(9)判断搜索起点sk到目的顶点d之间是否存在最短路径,若是,则执行步骤(17),否则,执行步骤(10);(10)搜索下一阶段的最短路径:(10a)通过Dijkstra迪杰斯特拉方法寻找搜索起点sk到必经顶点集合X中除去目的顶点d外的每个必经顶点之间的不成环最短路径;(10b)第k阶段搜索过程中,搜索起点到其余未搜索到的必经顶点能够连通的最短路径个数qk;(11)判断最短路径个数qk的值是否为0,若是,则执行步骤(13),否则,执行步骤(12);(12)采用最短路径权值公式,计算搜索起点到每个必经顶点的最短路径权值,将路径按照权值由从小到大的的顺序排列为执行步骤(5);(13)恢复上一个必经顶点的路径信息:(13a)回溯到似优路径的顶点集合M中必经顶点的上一个必经顶点,恢复上一个必经顶点的路径信息;(13b)将当前搜索阶段变为k=k-1,似优路径的顶点集合M中移除第k阶段的最短路径包含的顶点(13c)似优路径的集合W中移除最短路径(13d)必经顶点集合X中加上必经顶点(14)判断最短路径集合Nk中索引ik+1的值是否小于等于路径个数qk,若是,执行步骤(15),否则,执行步骤(16);(15)选择权值次小的最短路径:将最短路径集合Nk中索引变为ik=ik+1,执行步骤(6);(16)深度回溯:(16a)将当前搜索阶段变为k=k-1,似优路径顶点集合M中移除第k阶段的最短路径包含的顶点(16b)似优路径集合W中移除最短路径(16c)必经顶点集合X中加上必经顶点(16d)将最短路径集合Nk中索引变为ik=ik+1,执行步骤(6);(17)输出路径:通过Dijkstra迪杰斯特拉方法求出最短路径,将最短路径存储到似优路径集合W中,将似优路径集合W中的路径作为经过必经顶点的似优路径。2.根据权利要求1所述的经过必经顶点的最短路径搜索方法,其特征在于,步骤(1)中所述的有权有向图包含相邻顶点之间的路径,相邻顶点之间的路径权值。3.根据权利要求1所述的经过必经顶点的最短路径搜索方法,其特征在于,步骤(4b)、步骤(12)中所述的最短路径权值公式如下:c=Σmb]]>其中,c表示搜索起点到必经顶点的最短路径权值,∑表示求和操作,m表示搜索起点到每个必经顶点的所有路径集合,b表示路径集合m中单条路径对应的权值。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1