【优选算法专栏】专题十六:BFS解决最短路问题---前言

简介: 【优选算法专栏】专题十六:BFS解决最短路问题---前言


什么是最短路问题:

我们先举一个例子:

A是起点,I是终点。我们从A到I有以上好多种路径,并且点与点之间的距离是一样的,上面例子距离都为1.而这个距离我们也把它叫做边权。

我们此专题就解决的是边权为1的最短路问题,同时我们也可以解决边权相同的最短路问题。

两者是同类型题目。

如何解决最短路问题

那么介绍了什么是最短路问题,那么我们如何解决它呢?

其实很简单:

我们从起点开始,进行一次BFS即可

那么肯定首先需要一个队列来存储信息,其次我们还需要一个数组,可以是一个bool数组也可以是哈希表,其目的都是用来标记当前位置是否已经被遍历过了。

接下来我们模拟一下这个过程:

A AAI II:

先把A AA这个点扔到队列里面,丢进队列后进行标记,弹出对头元素,

把对头元素能去到地方加入到队列里面,从A AA可以到达B BBC CC,将B BBC CC丢进队列,相当于在A AA基础上向外扩展一层,然后统计队列里面有多少个元素,同时讲这些元素弹出去(在循环里)然后再同时向外扩展,依次内推…

当走到I II位置时,走到终点。最短路我们也就找到了。

最短路径我们知道是那一条,那么这个最短路是多少呢?

其实不难发现,我们层序遍历是一层一层剥开,那么这个扩展的层数其实就是我们的最短路的长度。

介绍到这,我们的最短路就基本介绍差不多了,其实就是用BFS来进行寻找最短路径。

相关文章
|
5月前
|
存储 机器学习/深度学习 算法
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
56 3
|
5月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
45 4
|
25天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
21 0
|
1月前
|
机器学习/深度学习 存储 算法
数据结构与算法——BFS(广度优先搜索)
数据结构与算法——BFS(广度优先搜索)
|
3月前
|
存储 算法
BFS算法的实现
BFS算法的实现
43 1
|
5月前
|
数据采集 算法 Java
Java数据结构与算法:图算法之广度优先搜索(BFS)
Java数据结构与算法:图算法之广度优先搜索(BFS)
|
5月前
|
人工智能 算法 网络性能优化
【调度算法】服务组合优选问题的指标选择与评估
【调度算法】服务组合优选问题的指标选择与评估
107 0
|
12天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
9天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。