Dijkstra算法及性能评估

本文详细介绍了Dijkstra算法,包括算法的介绍、图文解析、实现步骤和执行速度。Dijkstra算法主要用于解决有向图中单源点到其他顶点的最短路径问题,适用于非负权重的边。文章探讨了算法的实现方式,如邻接矩阵表示,并讨论了不同数据结构(如二叉堆和斐波那契堆)对算法时间复杂度的影响,指出最佳情况下的时间复杂度为O(V*lgV + E)。
摘要由CSDN通过智能技术生成


二、Dijkstra 算法详解

 写在前面:本文参考数据结构c语言版、july的blog——经典算法研究系列:二、Dijkstra 算法初探。


一、Dijkstra 算法的介绍

    Dijkstra 算法,又叫迪科斯彻算法(Dijkstra),算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离,Dijkstra 算法可以用来找到两个城市之间的最短路径。

二、图文解析 Dijkstra 算法

    ok,经过上文有点繁杂的信息,你还并不对此算法了如指掌,清晰透彻。没关系,咱们来幅图,就好了。请允许我再对此算法的概念阐述下,

    Dijkstra算法是典型最短路径算法,用于计算一个节点到其他所有节点的最短路径。不过,针对的是非负值权边。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。[Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。]

     ok如下图,设A为源点,求A到其他各所有一一顶点(BCDEF)的最短路径。线上所标注为相邻线段之间的距离,即权值。

(注:此图为随意所画,其相邻顶点间的距离与图中的目视长度不能一一对等)

               Dijkstra无向图

 

算法执行步骤如下表<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值