首页 > 其他 > 详细

最短路径

时间:2014-03-23 23:32:42      阅读:511      评论:0      收藏:0      [点我收藏+]

问题描述:

给定一个网络,如何计算两点之间的最短路径。

这里的路径可以看做一个权重函数,实际中可以是网络延时,成本等。


Dijkstra‘s 算法:(动态规划思想)

思路: 假设A到B的最短路径是A-C-B,则显然A-C与C-B均为最短路径。

             这样就符合子问题也是最优解的条件。

具体算法:

构建2个集合  A, B

A为以已计算好最短路径点的集合, B为其余顶点集合。

初始A只包含出发点a,其余顶点放入B。


步骤1: 将出发顶点a入集合A,其余顶点入集合B。并计算w(b) = weight(a,b)

while (集合B非空)

从集合B中选择一个顶点b,满足w(b)最小

       将b从集合B移出,并放入集合A

       更新集合B中与b相连的顶点c (如果w(c) > w(b) + weight(b,c), w(c) = w(b) + weight(b,c))


最后,得到的w(b)即为各顶点到a的最短距离。


最短路径,布布扣,bubuko.com

最短路径

原文:http://blog.csdn.net/levinjoe/article/details/21882683

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!