[发明专利]一种网络图中最短路径的二分查找追踪方法无效
申请号: | 200910251662.5 | 申请日: | 2009-12-30 |
公开(公告)号: | CN101788999A | 公开(公告)日: | 2010-07-28 |
发明(设计)人: | 何富贵;赵姝;陈洁;张铃;张燕平 | 申请(专利权)人: | 安徽大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 汪祥虬 |
地址: | 230039*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种网络图中最短路径的二分查找追踪方法,特征是根据最短路径步数矩阵提取源节点到汇节点的最短路径步数,对其折半拆分为前、后步数;在最短路径步数矩阵的源节点行向量中搜索步数等于前步数的节点,为前步数节点集;在最短路径步数矩阵的汇节点列向量中搜索步数等于后步数的节点,为后步数节点集;取前、后步数节点集的交集为中间节点;以交集中每节点为基准,用上述方法求源节点与该节点、该节点与汇节点的中间节点,直到需求解节点间最短路径步数为1为止;将所求的中间节点顺次插到对应位置得源到汇节点的所有最短路径;利用本发明方法查找两点间所有最短路径,可对应于实际数据中抽象出网络图的择优路径选择提供多种方案。 | ||
搜索关键词: | 一种 网络图 中最短 路径 二分 查找 追踪 方法 | ||
【主权项】:
一种网络图中最短路径的二分查找追踪法,先把出现在包括计算机网络、道路网格、电力系统网或物流运输网在内的实际网络中存在的交叉点作为节点、交叉点之间的联系作为边形成网络图,将所有的节点随机地从1开始按自然数字进行编号,节点之间的边用邻接矩阵存储;其特征在于:采用改进的狄克斯特拉算法或改进的弗洛伊德算法来获得最短路径步数矩阵;将实际网络中的出发点作为源节点,将目的地作为汇节点,从出发点到目的地的最短路径步数即出发点到目的地的最短路径经过的编号节点个数加上1,是最短路径步数矩阵中源节点的行、汇节点的列的值;从最短路径步数矩阵提取源节点到汇节点的最短路径步数,接着查找源节点到汇节点最短路径的中间节点:判断源节点到汇节点的最短路径步数是否为1,如果为1,源节点到汇节点最短路径没有中间节点,结束其中间节点的查找过程;否则对源节点到汇节点的最短路径步数进行拆分,将最短路径步数除以2并对其上取整作为前步数,源节点到汇节点的最短路径步数减去前步数作为后步数;从最短路径步数矩阵的源节点行向量中搜索出步数等于前步数的所有节点,其节点编号的集合称为前步数节点集;从最短路径步数矩阵的汇节点列向量中搜索步数等于后步数的所有节点,其节点编号的集合称为后步数节点集;取前、后步数节点集的交集,称该交集为源节点到汇节点最短路径的中间节点集,则该集合中的每个节点为源节点到汇节点最短路径的中间节点,作为出发点到目的地最短路径的一层中间节点;以每个出发点到目的地最短路径的一层中间节点为基准,并行进行查找源节点到一层中间节点最短路径的中间节点、一层中间节点到汇节点最短路径的中间节点,其操作如下:查找源节点到一层中间节点最短路径的中间节点,源节点不变,一层中间节点作为汇节点,前步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,将该中间节点集中的每个节点作为出发点到目的地最短路径的前二层中间节点;查找一层中间节点到汇节点最短路径的中间节点,一层中间节点作为源节点,汇节点不变,后步数为源节点到汇节点的最短路径步数,接着重复前面所述的查找源节点到汇节点最短路径的中间节点,得到源节点到汇节点最短路径中的中间节点集,其集合中的每个节点作为出发点到目的地最短路径的后二层中间节点;分别以每个出发点到目的地最短路径的前、后二层中间节点为基准,并行进行查找源节点到前二层中间节点、前二层中间节点到一层中间节点、一层中间节点到后二层中间节点、后二层中间节点到汇节点最短路径的中间节点;依此类推,直到要搜索的节点间的最短路径步数为1时为止;在出发点与目的地之间将所得到的各层中间节点顺次插入到对应位置,即得到出发点到目的地的所有最短路径;根据网络图中编号节点与实际网络中交叉点的一一对应关系,最短路径线路上的中间节点分别对应实际网络中的交叉点,即得到实际网络中从出发点到目的地的所有最短路径,选择其中任意一条线路即为出发点到目的地最优路径,从而快速实现了实际复杂网络中的路径择优;所述改进的狄克斯特拉算法为,对每个节点设置一对标号:第一个标号表示从源节点到该节点的最短路径距离,第二个标号表示从源节点到该节点的最短路径的步数;其算法步骤包括:步骤一、初始化:源节点的一对标号设置为0和空,其他节点一对标号设置为无穷大和未定,设置源节点为已标记节点,其他节点为未标记节点;步骤二:遍历所有已标记的节点到其有边连接的未标记节点,对于每个未标记节点,如果源节点到该未标记节点最短路径距离大于中间插入第三个节点后最短路径距离,更新该未标记节点的第一个标号为中间插入第三个节点后最短路径距离,第二个标号在原来的基础上加上1;步骤三:从未标记的节点中选取其第一个标号的值最小的节点,将其设置为已标记;步骤四、判断是否还有未标记点:如果有,转向步骤二;否则退出,算法结束;将每个节点的第一个标号插入到最短路径距离矩阵的源节点标号的向量中,将每个节点的第二个标号插入到最短路径步数矩阵的源节点标号的向量中;以每个节点作为源节点重复使用改进的狄克斯特拉算法,得到最短路径距离矩阵和最短路径步数矩阵;所述改进的弗洛伊德算法为:初始最短路径距离矩阵赋值为邻接矩阵;最短路径步数矩阵根据邻接矩阵两节点是否有边存在:两节点间有边存在,其对应的最短路径步数赋值为1,否则赋值为0;更新最短路径距离矩阵和最短路径步数矩阵:如果两个节点间的最短路径距离大于中间插入第三个节点后的最短路径距离,更新其最短路径距离为插入第三个节点后的最短路径距离,两个节点间的最短路径步数更新为这两个节点分别与第三个节点最短路径步数之和;把每个节点作为第三个节点,循环执行上述更新最短路径距离矩阵和最短路径步数矩阵。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽大学,未经安徽大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910251662.5/,转载请声明来源钻瓜专利网。
- 上一篇:基于J2EE的WEB动态页面静态化解决方法
- 下一篇:信息抓取方法