下载此文档

单源最短路径Dijkstra算法的实现.docx


文档分类:IT计算机 | 页数:约2页 举报非法文档有奖
1/2
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/2 下载此文档
文档列表 文档介绍
pascal
PROCEDURE DIJKSTRA;
VAR
DIST:ARRAY[1..MAXP]OF LONGINT;{距离数组,记录目前从源点出发已经找到的最短路径长度}
VISITED:ARRAY[1..MAXP]OF BOOLEAN;{标志数组,记录是否已经找到了某一点的最终最短路径}
I,J,MIN,MINP:LONGINT;
BEGIN
FILLCHAR(VISITED,SIZEOF(VISITED),FALSE);{初始化源点和路径数组}
FOR I:=1 TO MAXP DO
BEGIN
DIST:=MAP[SOURCE,I];
IF DIST<M THEN
PATH:=SOURCE
ELSE
PATH:=0;
END;{源点的最短路径肯定是不用找的...}
VISITED[SOURCE]:=TRUE;
{DIJKSTRA的思想是按递增长度来产生路径,每次选出当前已经
找到的最短的一条路径,
每次找出当前距离数组中最小的,必然是一条最终的最短路径}
FOR I:=2 TO MAXP DO
BEGIN
MIN:=INFINITY;
MINP:=0;
FOR J:=1 TO MAXP DO
IF (NOTVISITED[J]) AND (DIST[J]<MIN) THEN
BEGIN
MIN:=DIST[J];
MINP:=J;
END;{已找到源点到点MINP的最短路径,做上标志}
VISITED[MINP]:=TRUE;{修改距离数组}
FOR J:=1 TO MAXP DO
IF (NOTVISITED[J]) AND (DIST[MINP]+MAP[MINP,J]<DIST[J]) THEN
BEGIN
DIST[J]:=DIST[MINP]+MAP[MINP,J];
PATH[J]:=MINP;
END;
END;
END;
Dijkstra算法的实现(c++)
//Compute shortest path distances from s,return them in D
void Dijkstra(Graph *G,int *D,int s){ //这里的s是指计算最小路径的源,但是题目中没有
用到,应该加一个
//初始化数组D的函数
/*
for(int i =0; i<G->n() ; i++){//仅供参考(本来这个初始化应该在传入时候就做好的,但是为了符合这个函数)
if(i ==s ) D[i] =0;
else D[i]=INFINITY;
}
*/
int i,v,w;
for(i=0;i<G->n();i++)

单源最短路径Dijkstra算法的实现 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数2
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cby201601
  • 文件大小71 KB
  • 时间2018-01-26