算法设计与分析 课件 第七章 分支限界 7.3.2 单源最短路径问题.ppt

算法设计与分析 课件 第七章 分支限界 7.3.2 单源最短路径问题.ppt

计算机算法设计与分析第7章分支限界法7.3.2单源最短路径问题给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路径的长度是指路径上各边权之和。这个问题通常称为单源最短路径问题。单源最短路径问题如图所示的有向图G,每一条边都有一个非负权值,求源点S到图中各个结点之间的最短路径。算法分析采用优先队列式分支限界法求解单源最短路径问题,可以构建一个基于结点优先级的小根堆来存放活动结点表:结点的优先级=源点到该结点的当前路径长度初始时源点到其余个结点之间距离长度dist[i]设置为无穷大,当然源点本身的dist[S]=0,并将源点S加入优先队列(小根堆)。图的邻接矩阵存储到二维数组edge内。算法分析从小根堆中取出堆顶元作为当前扩展结点i,并依次检查与结点i相邻结点j是否满足下列条件:dist[i]+edge[i][j]dist[j]则更新结点j的优先级dist[j]=dist[i]+edge[i][j],并将j结点加入小根堆(优先队列)。否则被舍去处理。重复上述过程,直到小根堆(优先队列)为空为止。Sijdist[i]edge[i][j]dist[j]实例(1)开始时小根堆只有源点S,取堆顶元S作为扩展结点,与S相邻的结点A,B,C,都满足

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档