下载此文档

最短路径 之 dijkstra算法.ppt


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
最短路径求法

Dijkstra算法的理解
YOSO

Shenzhen University
Dijkstra算法过程:
1、先根据带权图建立一个邻接矩阵,如下面的图:
0
1
2
4
3
10
50
20
10
60
100
30
建立的邻接矩阵为:
变为计算机能
识别的二维数组
graph[5][5] ={
{0, 10, MAXVALUE, 30, 100},
{MAXVALUE, 0, 50, MAXVALUE, MAXVALUE},
{MAXVALUE, MAXVALUE, 0, MAXVALUE, 10},
{MAXVALUE, MAXVALUE, 20, 0, 60},
{MAXVALUE, MAXVALUE, MAXVALUE, MAXVALUE, 0}
};
因为计算机无法表示∞的数,所以这里的∞用一个自定义的最大值MAXVALUE来表示,那么MAXVALUE要取多大呢?因为2^31 = 2147483648, 所以MAXVALUE可取2100000000。取其它值也可以,只要保证MAXVALUE+图中的某个最大的权值后,MAXVALUE不会变为负(溢出,你懂的^ ^)
①建立一个表示当前已知顶点0到其它顶点最短距离的数组,如distance[5]。
②建立一个标记两顶点最短距离是否已经找到的数组,例如为found[5],
设found[i](i: 0→4)为TRUE表示顶点0到顶点i的最短距离已经找到,
为FALSE则表示未找到。
③(可要可不要)建立一个标记最短路径间经过的顶点的数组,例如为path[5][5],
设path[i][j]为TRUE时表示从0到顶点i的最短路径中经过j顶点。
有了graph[5][5]二维数组后,我们就可以根据它来求各顶点间的最短路径啦,
这里我们假设我们要求的是从顶点0到其它顶点的最短路径。
2、建立求解最短路径时需要用到的数组:
0
1
2
4
3
10
50
20
10
60
100
30
0
1
2
4
3
10
50
20
10
60
100
30
3、初始化各个数组:
① for(i=0; i<5; i++){distance[i] = graph[0][i];}
② for(i=0; i<5; i++){found[i] = FALSE;} //假设已先宏定义FALSE,如#define FALSE 0
③ for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
path[i][j] = FALSE;

if(distance[i] < MAXVALUE)
{
path[i][0] = TRUE;
path[i][i] = TRUE;
} //这个初始化的意思是刚开始的时候,如果顶点0到顶点i有直接的路径,我们标记从
} //顶点0到顶点i有经过顶点0和顶点i。可能你会想,从顶点0到顶点i的最短路径显然
//是有经过顶点0和顶点i的嘛,但是当i点是孤立一个点,即没有路径能达到i点的时候呢?
有了上面的准备后,我们就可以开始求顶点0到其它顶点的最短路径啦~
0
1
2
4
3
10
50

最短路径 之 dijkstra算法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小76 KB
  • 时间2018-07-08