最短路径(Dijkstra算法)

本文介绍了Dijkstra算法,用于找到图中一个点到其余所有点的最短路径。算法使用邻接表存储图,讨论了其时间复杂度,并指出在稀疏图中邻接表的效率优势。同时,文章指出了Dijkstra算法不适用于存在负权边的图这一局限性。
摘要由CSDN通过智能技术生成

Dijkstra算法

一个点到其余个点的算法

仍用邻接矩阵的方法存储图
使用dis[]初始化为:存储1号顶点到其余顶点的初始路径
此时dis数组的值被称为最短路径的估计值

松弛

算法的基本思想:
每次找到离源点最近的一个顶点,然后以该顶点为中心开始扩展,最终得到源点到其余所有点的最短路径。
基本步骤如下:
在这里插入图片描述
在这里插入图片描述
算法核心代码:

for (i = 1; i <= n; i++)
{
   
	dis[i] = e[1][i];	//对dis进行初始化
}
for (i = 1; i <= n; i++)
{
   
	book[i] = 0;	//book数组用来标记1到i点是否已经是最小路径
}
book[1] = 1;

//Dijksta算法核心语句
for (i = 1; i <= n; i++)
{
   
	min = inf;
	for (j 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值