最短路径流程图及算法详解(2页).doc
《最短路径流程图及算法详解(2页).doc》由会员分享,可在线阅读,更多相关《最短路径流程图及算法详解(2页).doc(2页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-:算法的设计思想本算法采用分支定界算法实现。构造解空间树为:第一个城市为根结点,与第一个城市相邻的城市为根节点的第一层子节点,依此类推;每个父节点的子节点均是和它相邻的城市;并且从第一个根节点到当前节点的路径上不能出现重复的城市。本算法将具有最佳路线下界的节点作为最有希望的节点来展开解空间树,用优先队列实现。算法的流程如下:从第一个城市出发,找出和它相邻的所有城市,计算它们的路线下界和费用,若路线下界或费用不满足要求,将该节点代表的子树剪去,否则将它们保存到优先队列中,并选择具有最短路线下界的节点作为最有希望的节点,并保证路径上没有回路。当找到一个可行解时,就和以前的可行解比较,选择一个较小
2、的解作为当前的较优解,当优先队列为空时,当前的较优解就是最优解。算法中首先用Dijkstra算法算出所有点到代表乙城市的点的最短距离。算法采用的下界一个是关于路径长度的下界,它的值为从甲城市到当前城市的路线的长度与用Dijkstra算法算出的当前城市到乙城市的最短路线长度的和;另一个是总耗费要小于1500。-第 2 页-伪代码算法 AlgBB()读文件m1和m2中的数据到矩阵length和cost中Dijkstra(length)Dijkstra(cost)while true dofor i1 to 50 do/选择和node节点相邻的城市节点if shortestlengthoptimal
3、 or mincost1500pruningelse if i50optimal=min(optimal,tmpopt)/选当前可行解和最优解的较小值做最优解 elseif looped/如果出现回路pruning/剪枝else将城市i插入到优先队列中end forwhile true doif 优先队列为空输出结果else取优先队列中的最小节点if 这个最小节点node的路径下界大于当前的较优解continueend whileend while算法流程图利用Dijkstra算法算出各城市到乙城市的最短路径以及最小耗费Y将这个节点保存下来作为剪枝使用的下界Y队列为空?不如下界?选择头节点将节点放入优先队列分析当前的下界,得出程序结果,并返回.N从优先队列中取出当前最优元素并算出当前这个可行解的路径长度和耗费并与最优解比较N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 路径 流程图 算法 详解
限制150内