8.3 单源最短路径 给定带权有向图G =(V,E),其中每条边的权是非负实数 。另外,还给定V中的一个顶点,称为源。现在要计算从源 到所有其它各顶点的最短路长度。这里路的长度是指路上各 边权之和。这个问题通常称为单源最短路径问题。 1、算法基本思想 Dijkstra算法是解单源最短路径问题的贪心算法。8.3 单源最短路径 其基本思想是,设置顶点集合S并不断地作贪心选择来 扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点 的最短路径长度已知。 初始时,S中仅含有源。设u是G的某一个顶点,把从源 到u且中间只经过S中顶点的路称为从源到u的特殊路径,并 用数组dist记录当前每个顶点所对应的最短特殊路径长度。 Dijkstra算法每次从V-S中取出具有最短特殊路长度的顶点u ,将u添加到S中,同时对数组dist作必要的修改。一旦S包 含了所有V中顶点,dist就记录了从源到所有其它顶点之间 的最短路径长度。8.3 单源最短路径 例如,对右图中的有 向图,应用Dijkstra算法 计算从源顶点1到其它顶 点间最短路径的过程列在 下页的表中。8.3 单源最短路径 迭代 S u dist2