《数据结构与算法分析》最短路径算法--BFS遍历和Dijkstra算法

本文介绍了数据结构与算法分析中的最短路径算法,包括无权图的BFS遍历和有权图的Dijkstra算法。通过实例解析算法原理,展示从起点到所有顶点的最短路径计算过程。并提供了代码实现,帮助读者深入理解这两种算法。
摘要由CSDN通过智能技术生成

前言:

      这一周学习的效率不错,不过图论这一块确实挺麻烦的,学完了算法之后,实现起来还需要码上不少代码。不过让我感到惊奇的一点是,我本科学习数据结构的时候,觉得Dijkstra算法很难,当时只能勉强记住算法的操作步骤,具体原理没弄明白。结果现在实现完BFS遍历之后,Dijkstra算法的雏形自动在我脑子里出来了,只是在一些细节上,算法复杂度上没有想清楚。然后看书上的概念,发现Dijkstra算法原来这么简单安静。修改一下BFS算法,三两下就实现出来了。果然是我的算法水平大大提升了吗。

我的github:

我实现的代码全部贴在我的github中,欢迎大家去参观。

https://github.com/YinWenAtBIT

最短路径算法:

无权最短路径:

一、定义:

在一个有向无权图中,使用某个顶点s作为出发点,找出从s到其他所有顶点的最短路径,我们只计算路径上的边数。这是有权最短路径问题的特殊情况,我们可以假设所有边上的权值为1。

二、BFS算法:

首先建立一个无权图,如下图所示,该图与《数据结构与算法分析》书中P221页用来举例的图相同。

1.选取一个点作为起点,在这里选取v3。

2.立刻可以得出从起点到v3的路径长为0,记录该信息

3.考察与s距离为1的顶点,可以得到v1,v6,记录下来。

4.考察距离为2的顶点,然后重复这个过程,直到所有可以到达的顶点都已经被考察过。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值