前言:
这一周学习的效率不错,不过图论这一块确实挺麻烦的,学完了算法之后,实现起来还需要码上不少代码。不过让我感到惊奇的一点是,我本科学习数据结构的时候,觉得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的顶点,然后重复这个过程,直到所有可以到达的顶点都已经被考察过。