图_dijkstra算法【数据结构实践报告】

本次实验旨在掌握Dijkstra算法,用于求解图的最短路径。实验内容包括利用邻接矩阵存储结构实现算法,初始设置起始点到其他点的路径为无穷大或边权重,通过不断选择最小距离值顶点并更新路径,直至所有可达顶点路径确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构实验报告

实验名称: 实验七 图 dijkstra算法

学号:***

姓名:gnosed

实验日期:2017.12.23

 

一、实验目的

掌握求最短路径的Dijkstra算法

 

二、实验具体内容

1、实验题目1:

(1)题目

编写程序,用Dijkstra算法求图的最短路径

(2)分析

存储结构:

  1. 图以邻接矩阵表示,关系矩阵对角线初值取为0。
  2. 数组dist[]:dist[i]最终储存Vo到Vi的最短路径及最短路径上Vi的前驱顶点(计算过程为距离值,可能会被调整)。

说明:

  1. dist可分为集合U和V两部分,U指从Vo到一个顶点最短路径的所有顶点,V指未确定最短路径的顶点集合。
  2. 初始化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为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值