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

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。
💓博主csdn个人主页:小小unicorn

⏩专栏分类:算法从入门到精通

🚚代码仓库:小小unicorn的代码仓库🚚

🌹🌹🌹关注我带你学习编程知识

专题十六

什么是最短路问题:

我们先举一个例子:

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

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

两者是同类型题目。

如何解决最短路问题

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

其实很简单:
我们从起点开始,进行一次BFS即可

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

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

从 A A A到 I I I:

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

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

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

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

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

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

相关推荐
QiLinkOS20 小时前
第三视觉理解徐玉生与他的商业活动(30)
大数据·c++·人工智能·算法·开源协议
疯狂打码的少年21 小时前
【操作系统】页面置换算法(OPT/FIFO/LRU)
算法
小O的算法实验室21 小时前
2026年CIE,优化客货协同运输:综合地铁系统的列车容量动态分配
算法
Coder_Shenshen1 天前
西门子S7CommPlus协议鉴权算法原理与流程详解
网络·后端·算法
硕风和炜1 天前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集
我是一颗柠檬1 天前
【Java项目技术亮点】加权轮询负载均衡算法
java·算法·负载均衡
灯厂码农1 天前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
凯瑟琳.奥古斯特1 天前
K次取反最大化数组和解法(力扣1005)
开发语言·c++·算法·leetcode·职场和发展
Jerry1 天前
LeetCode 203. 移除链表元素
算法
地平线开发者1 天前
征程 6 | 工具链 QAT ObserverBase 源码解析
算法