实验报告
课程名称 《算法分析与设计》 实验日期 2021年3月15 日 至 2021年 3 月 22 日
学生姓名 郑超逸 所在班级 计科195 学号 2019211909055
实验名称 Dijkstra算法求最短路径
实验地点 寝室 同组人员 无
1.问题
对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径
2.解析
用V1表示已经找到最短路径的顶点,V2表示与V1中某个顶点相邻接且不在V1中的顶点;E1表示加入到最短路径中的边,E2为与V1中的顶点相邻接且距离最短的路径。
步骤 V1 V2 E1 E2
1. {a} {b} {} {ab}
2. {a,b} {d} {ab} {bd}
3. {a,b,d} {c,f} {ab,bd} {dc,df}
4. {a,b,d,c} {f} {ab,bd} {df}
5. {a,b,c,d,f} {e} {ab,bd,dc,df} {fe}
6. {a,b,c,d,e,f} {g} {ab,bd,dc,df,fe} {eg}
7. {a,b,c,d,e,f,g} {h} {ab,bd,dc,df,fe,eg} {gh}
8. {a,b,c,d,e,f,g,h} {} {ab,bd,de,df,fe,eg,gh} {}
求所有顶点对之间的最短路径可以使用Dijkstra算法,使其起始节点从a循环到h,每次求起始节点到其他节点的最短路径,最终可以求得所有顶点对之间的最短路径。
使用二维数组作表存储顶点之间的关系。 将a比作V1,b比作V2依次类推得: