数据结构实验报告
实验名称: 实验七 图 dijkstra算法
学号:***
姓名:gnosed
实验日期:2017.12.23
一、实验目的
掌握求最短路径的Dijkstra算法
二、实验具体内容
1、实验题目1:
(1)题目
编写程序,用Dijkstra算法求图的最短路径
(2)分析
存储结构:
- 图以邻接矩阵表示,关系矩阵对角线初值取为0。
- 数组dist[]:dist[i]最终储存Vo到Vi的最短路径及最短路径上Vi的前驱顶点(计算过程为距离值,可能会被调整)。
说明:
- dist可分为集合U和V两部分,U指从Vo到一个顶点最短路径的所有顶点,V指未确定最短路径的顶点集合。
- 初始化dist时,集合U只有Vo,其对应的距离值为0;集合V中Vi的距离值为边(Vo,Vi)的权,若Vo和Vi之间无直接边,则Vi的距离值为无穷大(这里定为1000)。
算法过程:
1)从集合V中选择距离值最小的顶点Vmin加入到集合U(可通过修改对角线元素值为1来表示)
2)因为上面选出的Vmin放到U时,如果Vmin可能是Vo到其它顶点V[i]最短路径上的一个顶点,这使得dist[i]的距离值减小,所以这时,需要根据min值,对集合V中各顶点的距离值进行调整:如果Vo到Vi的距离值比原来的距离值小,则修改Vi的距离值dist[i].length,否则不修改。
3)重复1)2),直到从Vo可以到达的所有顶点都被放入集合U为止。