Dijkstra算法
2016-01-01 15:01:38 75 举报
Dijkstra算法是一种用于解决单源最短路径问题的贪心算法。它以顶点集合(V)中的每一个顶点作为源点,计算源点到其他所有顶点的最短路径及源点到其他各顶点的最短路径长度。该算法每次遍历到始点距离最短的顶点的邻接节点时,都会更新始点到该顶点的距离。其主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法可以正确处理有向图和无向图,但不能处理负权边。
作者其他创作
大纲/内容
DIST[j](COST[n*u+j]+DIST[u]?
开始
j=0;更新v到所有未找到最短路结点j的最短路
i++
利用MinIndex找到v到未找到最短路结点中的最短路径所对应的结点u
定义纪录已经找到的结点数组finded
否
finded[j]=0?
i=1;记录寻找最短路径的次数
in?
是
jn?
初始化最短路径DIST为v结点到各结点的路径长度path所有元素为v,除了v以外所有其他结点在finded中的取值为0,v为1
j++
输入起点v,路径的邻接矩阵COST,v到各结点的最短路长度DIST,记录路径的数组path,结点个数n
结束
更新最短路径与最短路DIST[j] = COST[n*u+j]+DIST[u];path[j] = u;
0 条评论
下一页