最短路径算法,即Dijkstra分析及C语言实现

Dijkstra算法用于寻找单源最短路径,适用于处理带正权值的连通图。它通过优先队列逐步确定各顶点的最短路径,确保路径长度不减。在实现时,需要邻接矩阵或邻接表存储权值,同时使用boolean数组和int数组记录已确定和距离信息。算法执行过程中,不断更新最短路径直到所有点确定。
摘要由CSDN通过智能技术生成

指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”,即Dijkstra算法。

单源什么意思?

  • 从一个顶点出发,Dijkstra算法只能求一个顶点到其他点的最短距离而不能任意两点。

Dijkstra算法的标记和结构与prim算法的用法十分相似,它们两者都会从余下顶点的优先队列中选择下一个顶点来构造一颗扩展树。但千万不要把它们混淆了,它们解决的是不同的问题。因此,所操作的优先级也是以不同的方式计算的:Dijkstra算法比较路径的长度,因此必须把边的权重相加,而prim算法则直接比较给定的权重。

Dijkstra在处理具体实例的应用还是很多的,因为具体的问题其实带权更多一些。

比如一个城市有多个乡镇,乡镇可能有道路,也可能没有,整个乡镇联通,如果想计算每个乡镇到a镇的最短路径,那么Dijkstra就派上了用场。

判断一个问题是否适合用Dijkstra算法解决,要看该问题是否满足这个前提

  • 一个连通图,若干节点,节点可能有数值,但是路径一定有权值。并且路径不能为负

如果该问题不满足这个前提

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Storm-Shadow

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值