基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法技术

技术编号:14854114 阅读:177 留言:0更新日期:2017-03-18 20:58
本发明专利技术公开了一种基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法,主要解决现有技术时间复杂度高、路径权值不够优的问题。其实现步骤为:1)构造满足路径关系的有权有向图G,使用剪枝剔除不需要的节点和有向边得到剪枝后的有权有向图G1;2)将剪枝后的有权有向图G1简化为只包含源节点、必经节点集、目的节点的简单图G2;3)在简单图G2中使用结合迪杰斯特拉算法的最大最小蚁群方法寻找最优路径并输出。本发明专利技术与现有技术相比,具有求解速度快、最短路径优的特点,可用于网络路由系统中路径选择、交通运输中线路规划场景。

【技术实现步骤摘要】

本专利技术属于通信
,更进一步涉及一种无环最短路径搜索方法,可用于网络路由系统中路径选择、交通运输中线路规划场景。
技术介绍
最短路径问题是在给定的网图中,求源节点到目的节点之间经过的路径权值之和最小的路径。经典的最短路径方法有迪杰斯特拉方法和弗洛伊德方法,但这两种方法最初的提出均不能适用于经过指定的必经节点。目前解决经过指定必经节点的最短路径方法主要有深度优先遍历法、迪杰斯特拉方法、遗传方法、传统蚁群方法。深度优先遍历是找出所有满足条件的路径,对比得到最短的路径,虽然得到的最短路径是最优的结果,但时间复杂度高,对于复杂图,通常不能在有效时间内得到解;迪杰斯特拉方法按权值递增的次序来产生源点到其余必经节点的最短路径,同样面临时间复杂度高的问题;遗传方法和传统蚁群方法属于启发式的智能方法,都有一定的随机性,且在必经节点个数大于15、总节点个数超过300的图规模大、结构复杂的场景中通常得到的解的权值不够小。南京富岛信息工程有限公司在其申请的专利“一种原油罐区调度方法”(申请号:CN201410240939.5,公开号CN104008431A)公开了一种获取经过n个必经顶点的最短路径的方法。该方法的主要实现方式是,必经节点之间的顺序采用全排列的方法,生成n!个组合,对于每一种组合在首尾分别加入源节点和目的节点,然后求解相邻顶点之间的局部最优路径,将相邻节点之间的局部最优路径组合得到n!条完整路径,再从这些完整路径中选出最短的一条路径作为最优解。该方法的不足之处是:首先全排列组合非常耗时,导致求解速度慢,其次当使用n!个组合得到n!条路径时,可能会产生环路。武汉烽火技术服务有限公司在其申请的专利“一种带约束条件的拓扑图最优路径方法”(申请号:201510589652.8,公开号105141524A)公开了一种带约束条件的拓扑图最优路径方法。该方法主要是根据给定的必经节点顺序,建立必经节点拓扑列表,并实时更新避开节点拓扑列表,直到找到目的节点。该方法的不足之处是只给定一个必经节点序列,找到解的可能性较小且找到的解的权值通常较大。黄书力,胡大裟,蒋玉明提出的“经过指定的中间节点集的最短路径方法”(《计算机工程与应用》2015)通过迪杰斯特拉算法计算源节点到第一个必经节点、第一个必经节点依次经过其它必经节点到达最后一个必经节点、最后一个必经节点到目的节点的最短路径,通过全排列得到必经节点组合顺序后,按照分段求最短路径方法,得到最短路径。该方法缺点是全排列方法时间复杂度高,对于必经节点较多的复杂网图在有效时间内很难找到解。WuW,RuanQ在其发表的论文中“Ahierarchicalapproachfortheshortestpathproblemwithobligatoryintermediatenodes”(《SignalProcessing》2006)提出采用遗传方法求解经过必经节点集的最短路径,适用于求解必经节点个数少于20的网络图,但有可能经过重复节点,构成有环路径。徐庆征,柯熙政在其发表的论文中“必经点最短路径问题模型及相应遗传方法研究”(《系统工程与电子技术》2009)提出生成无环最短路径的遗传方法,通过构造独特的适应度函数,使包含较多必经点的染色体能够优先被选择进入下一代,但对于节点个数多的网络图难以得到解。综上,现有方法对于求解节点个数较多的大型复杂图,时间复杂度高,在有效时间内得到的路径权值大,不适用于现实情况。
技术实现思路
本专利技术针对上述现有技术存在的不足,提出一种基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法,以降低时间复杂度,改善路径权值。本专利技术实现的技术方案是:通过将源节点作为搜索起点,对原始图进行深度搜索遍历和图筛选,剔除无用点和无用边;通过使用迪杰斯特拉方法计算出图中源节点、必经节点集、目的节点中两两节点之间的最短距离,将包含辅助节点的复杂图转化为不包含辅助节点的简单图;通过最大最小蚁群方法找到简单图的似优路径,再通过迪杰斯特拉方法,将简单图的似优路径展开为原始图的无环似优路径,并从原始图的无环似优路径集合中选择权值最小的一条路径作为最优路径输出。其实现步骤包括如下:(1)构造有权有向图:以G(V,E)为原始图,构造满足源节点s、目的节点t、必经节点集V'和辅助节点集X相互关系的有权有向图G,其中,V为节点集合,E为有权边集合;(2)初始化:建立一个似优路径集合W,并初始化为空,根据有权有向图G的结构建立p节点的出度集合Op和入度集合Ip,其中p∈V;(3)对有权有向图G进行剪枝,得到剪枝后的有权有向图G1:(3.1)通过深度优先遍历方法搜索有权有向图G,删除有权有向图G中不能到达的节点;(3.2)判断节点集合V中节点p的出度集合Op是否为空,若为空,则删除节点p及与p相关的有向边,其中p≠s且p≠t;(3.3)将必经节点集V'和辅助节点集X中所有节点的访问标志位初始化为0,设访问标志位为0表示未被访问,访问标志位为1表示已被访问;(3.4)取必经节点集V'中一个未被访问的节点p,将其访问标志位置为1,判断节点p的入度集合Ip大小是否为1:若为1,则只保留前驱节点到p的有向边,删除该前驱节点的其它出度边,执行(3.5),否则,直接执行(3.5);(3.5)判断节点p的出度集合Op大小是否为1,若为1,则只保留p到后继节点的有向边,删除该后继节点的其它入度边,执行(3.6),否则,直接执行(3.6);(3.6)判断所有必经节点的访问标志位是否都为1,若都为1,则执行(3.7),否则,返回(3.4);(3.7)取辅助节点集X中一个未被访问的节点p1,将其访问标志位置为1,判断节点p1的入度集合Ip1大小是否为1:若为1,则只保留前驱节点到p1的有向边,删除p1到其前驱节点的有向边,执行(3.8),否则,直接执行(3.8);(3.8)判断节点p1的出度集合Op1大小是否为1,若为1,则只保留p1到后继节点的有向边,删除后继节点到p1的有向边,执行(3.9),否则,直接执行(3.9);(3.9)判断所有辅助节点的访问标志位是否都为1,若都为1,得到剪枝后的有权有向图G1,执行(4),否则,返回(3.7)。(4)通过迪杰斯特拉方法将剪枝后的有权有向图G1简化为只包含源节点s、目的节点t、必经节点集V'相互关系的有权有向图G2;(5)在简化的有权有向图G2中使用结合迪杰斯特拉的最大最小蚁群方法得到最优路径:(5.1)初始化参数:蚂蚁个数为m,设置最大迭代次数F,置全局最优解的初始权值为无穷大,已迭代次数为0;(5.2)构造用于存放蚂蚁通过的节点和路径的禁忌表Tabuk,k=1,2,…,m,并初始化为空;(5.3)将全部蚂蚁放置在源节点s上,将源节点s和目的节点t添加到禁忌表Tabuk,k=1,2,…,m,置本次迭代最优解的初始权值为无穷大;(5.4)取一只蚂蚁k,计算其路径Pk;(5.5)计算当前蚂蚁k所走路径Pk的权值,清空该蚂蚁对应的禁忌表Tabuk;(5.6)判断全部蚂蚁是否完成寻路,若是,执行(5.7);否则,返回(5.4);(5.7)对所有蚂蚁的路径P1,P2,…Pk,…,Pm按照权值从小到大排序,并按照排序依次选取蚂蚁k的路径Pk,判断其路径Pk的权值是否小于本次迭本文档来自技高网
...
基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法

【技术保护点】
一种基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法,包括以下步骤:(1)构造有权有向图:以G(V,E)为原始图,构造满足源节点s、目的节点t、必经节点集V'和辅助节点集X相互关系的有权有向图G,其中,V为节点集合,E为有权边集合;(2)初始化:建立一个似优路径集合W,并初始化为空,根据有权有向图G的结构建立p节点的出度集合Op和入度集合Ip,其中p∈V;(3)对有权有向图G进行剪枝,得到剪枝后的有权有向图G1:(3.1)通过深度优先遍历方法搜索有权有向图G,删除有权有向图G中不能到达的节点;(3.2)判断节点集合V中节点p的出度集合Op是否为空,若为空,则删除节点p及与p相关的有向边,其中p≠s且p≠t;(3.3)将必经节点集V'和辅助节点集X中所有节点的访问标志位初始化为0,设访问标志位为0表示未被访问,访问标志位为1表示已被访问;(3.4)取必经节点集V'中一个未被访问的节点p,将其访问标志位置为1,判断节点p的入度集合Ip大小是否为1:若为1,则只保留前驱节点到p的有向边,删除该前驱节点的其它出度边,执行(3.5),否则,直接执行(3.5);(3.5)判断节点p的出度集合Op大小是否为1,若为1,则只保留p到后继节点的有向边,删除该后继节点的其它入度边,执行(3.6),否则,直接执行(3.6);(3.6)判断所有必经节点的访问标志位是否都为1,若都为1,则执行(3.7),否则,返回(3.4);(3.7)取辅助节点集X中一个未被访问的节点p1,将其访问标志位置为1,判断节点p1的入度集合Ip1大小是否为1:若为1,则只保留前驱节点到p1的有向边,删除p1到其前驱节点的有向边,执行(3.8),否则,直接执行(3.8);(3.8)判断节点p1的出度集合Op1大小是否为1,若为1,则只保留p1到后继节点的有向边,删除后继节点到p1的有向边,执行(3.9),否则,直接执行(3.9);(3.9)判断所有辅助节点的访问标志位是否都为1,若都为1,得到剪枝后的有权有向图G1,执行(4),否则,返回(3.7)。(4)通过迪杰斯特拉方法将剪枝后的有权有向图G1简化为只包含源节点s、目的节点t、必经节点集V'相互关系的有权有向图G2;(5)在简化的有权有向图G2中使用结合迪杰斯特拉的最大最小蚁群方法得到最优路径:(5.1)初始化参数:蚂蚁个数为m,设置最大迭代次数F,置全局最优解的初始权值为无穷大,已迭代次数为0;(5.2)构造用于存放蚂蚁通过的节点和路径的禁忌表Tabuk,k=1,2,…,m,并初始化为空;(5.3)将全部蚂蚁放置在源节点s上,将源节点s和目的节点t添加到禁忌表Tabuk,k=1,2,…,m,置本次迭代最优解的初始权值为无穷大;(5.4)取一只蚂蚁k,计算其路径Pk;(5.5)计算当前蚂蚁k所走路径Pk的权值,清空该蚂蚁对应的禁忌表Tabuk;(5.6)判断全部蚂蚁是否完成寻路,若是,执行(5.7);否则,返回(5.4);(5.7)对所有蚂蚁的路径P1,P2,…Pk,…,Pm按照权值从小到大排序,并按照排序依次选取蚂蚁k的路径Pk,判断其路径Pk的权值是否小于本次迭代最优解,若是,则将G2中每个节点的访问标志位置为0,执行(5.8),否则,跳转到(5.12);(5.8)使用正向迪杰斯特拉方法将当前蚂蚁k得到的路径Pk恢复为正向实际路径P′k,判断正向实际路径P′k的权值是否小于本次迭代最优解,若是,则更新本次迭代最优解,执行(5.9),否则,执行(5.10);(5.9)判断正向实际路径P′k的权值是否小于全局最优解,若是,则更新全局最优解,并将似优路径集合W中的路径替换为正向实际路径P′k,执行(5.10),否则,直接执行(5.10);(5.10)将所有节点访问标志位重新置0,使用反向迪杰斯特拉方法将路径Pk恢复为反向实际路径P″k,判断反向实际路径P″k的权值是否小于本次迭代最优解,若是,则更新本次迭代最优解,执行(5.11),否则,执行(5.12);(5.11)判断反向实际路径P″k的权值是否小于全局最优解,若是,则更新全局最优解,并将似优路径集合W中的路径替换为反向实际路径P″k,执行(5.12),否则,直接执行(5.12);(5.12)计算最大最小信息素,并更新路径信息素;(5.13)迭代次数加1,判断是否达到预定的迭代次数F,若是,则将似优路径集合W中保存的路径作为最优路径输出,否则,返回(5.3)。...

【技术特征摘要】
1.一种基于迪杰斯特拉和最大最小蚁群的无环最短路径搜索方法,包括以下步骤:(1)构造有权有向图:以G(V,E)为原始图,构造满足源节点s、目的节点t、必经节点集V'和辅助节点集X相互关系的有权有向图G,其中,V为节点集合,E为有权边集合;(2)初始化:建立一个似优路径集合W,并初始化为空,根据有权有向图G的结构建立p节点的出度集合Op和入度集合Ip,其中p∈V;(3)对有权有向图G进行剪枝,得到剪枝后的有权有向图G1:(3.1)通过深度优先遍历方法搜索有权有向图G,删除有权有向图G中不能到达的节点;(3.2)判断节点集合V中节点p的出度集合Op是否为空,若为空,则删除节点p及与p相关的有向边,其中p≠s且p≠t;(3.3)将必经节点集V'和辅助节点集X中所有节点的访问标志位初始化为0,设访问标志位为0表示未被访问,访问标志位为1表示已被访问;(3.4)取必经节点集V'中一个未被访问的节点p,将其访问标志位置为1,判断节点p的入度集合Ip大小是否为1:若为1,则只保留前驱节点到p的有向边,删除该前驱节点的其它出度边,执行(3.5),否则,直接执行(3.5);(3.5)判断节点p的出度集合Op大小是否为1,若为1,则只保留p到后继节点的有向边,删除该后继节点的其它入度边,执行(3.6),否则,直接执行(3.6);(3.6)判断所有必经节点的访问标志位是否都为1,若都为1,则执行(3.7),否则,返回(3.4);(3.7)取辅助节点集X中一个未被访问的节点p1,将其访问标志位置为1,判断节点p1的入度集合Ip1大小是否为1:若为1,则只保留前驱节点到p1的有向边,删除p1到其前驱节点的有向边,执行(3.8),否则,直接执行(3.8);(3.8)判断节点p1的出度集合Op1大小是否为1,若为1,则只保留p1到后继节点的有向边,删除后继节点到p1的有向边,执行(3.9),否则,直接执行(3.9);(3.9)判断所有辅助节点的访问标志位是否都为1,若都为1,得到剪枝后的有权有向图G1,执行(4),否则,返回(3.7)。(4)通过迪杰斯特拉方法将剪枝后的有权有向图G1简化为只包含源节点s、目的节点t、必经节点集V'相互关系的有权有向图G2;(5)在简化的有权有向图G2中使用结合迪杰斯特拉的最大最小蚁群方法得到最优路径:(5.1)初始化参数:蚂蚁个数为m,设置最大迭代次数F,置全局最优解的初始权值为无穷大,已迭代次数为0;(5.2)构造用于存放蚂蚁通过的节点和路径的禁忌表Tabuk,k=1,2,…,m,并初始化为空;(5.3)将全部蚂蚁放置在源节点s上,将源节点s和目的节点t添加到禁忌表Tabuk,k=1,2,…,m,置本次迭代最优解的初始权值为无穷大;(5.4)取一只蚂蚁k,计算其路径Pk;(5.5)计算当前蚂蚁k所走路径Pk的权值,清空该蚂蚁对应的禁忌表Tabuk;(5.6)判断全部蚂蚁是否完成寻路,若是,执行(5.7);否则,返回(5.4);(5.7)对所有蚂蚁的路径P1,P2,…Pk,…,Pm按照权值从小到大排序,并按照排序依次选取蚂蚁k的路径Pk,判断其路径Pk的权值是否小于本次迭代最优解,若是,则将G2中每个节点的访问标志位置为0,执行(5.8),否则,跳转到(5.12);(5.8)使用正向迪杰斯特拉方法将当前蚂蚁k得到的路径Pk恢复为正向实际路径P′k,判断正向实际路径P′k的权值是否小于本次迭代最优解,若是,则更新本次迭代最优解,执行(5.9),否则,执行(5.10);(5.9)判断正向实际路径P′k的权值是否小于全局最优解,若是,则更新全局最优解,并将似优路径集合W中的路径替换为正向实际路径P′k,执行(5.10),否则,直接执行(5.10);(5.10)将所有节点访问标志位重新置0,使用反向迪杰斯特拉方法将路径Pk恢复为反向实际路径P″k,判断反向实际路径P″k的权值是否小于本次迭代最优解,若是,则更新本次迭代最优解,执行(5.11),否则,执行(5.12);(5.11)判断反向实际路径P″k的权值是否小于全局最优解,若是,则更新全局最优解,并将似优路径集合W...

【专利技术属性】
技术研发人员:裴婉婉吴炜
申请(专利权)人:西安电子科技大学宁波信息技术研究院
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1