python算法----广度优先搜索

本文介绍了如何使用Python实现广度优先搜索(BFS)算法来解决最短路径问题。首先定义了图的概念,包括节点和边,接着讨论了如何利用队列解决寻找最短路径的问题。队列作为一种先进先出的数据结构,对于BFS至关重要。最后,文章提到了用散列表实现图,并展示了Python中使用deque创建双端队列进行BFS的代码片段。
摘要由CSDN通过智能技术生成

今天我们来学习一下另一种算法----广度优先搜索
解决最短路径问题的算法被称为广度优先搜索

图是什么:

图模拟一组连接,图用于模拟不同的东西是如何相连的
图由节点(node)和边(edge)组成
一个节点可能与众多节点直接相连,这些节点被称为邻居

查找最短路径:

第一类问题:从节点A出发,又前往节点B的路径吗?
第二类问题:从节点A出发,前往节点B哪条路径最短?
解决第二类问题,我们可以看做一度关系大于二度关系,二度关系大于三度关系…,因此我们现在一度关系中查找,若没有找到,则在二度关系中查找…直到找到目标,我们可以依次将一度关系,二度关系…按顺序加入到一个查找名单,这样我们就会先找到离我们最近的目标了,有一种可以实现这种目的的数据结构----队列

队列:

队列类似于栈,你不能随机的访问队列中的元素,队列只支持两种操作:入队和出队
队列是一种先进先出(First In First Out,FIFO)的数据结构,而栈是一种后进先出(Last In First Out,LIFO)的数据结构

实现图:

散列表能够实现每个节点都与邻节点相连的关系,散列表能够将键映射到值
键—值对的添加顺序重要吗?散列表是无序的,因此添加键—值对的 顺序无关紧要
节点与节点的关系是单向的,没有指向别人的箭头我们称为有向图
节点与节点之间没有箭头,直接相连的节点互为邻居,这就叫做无向图

实现算法:

更新队列时,我使用术语“入队”和“出队”,但你也可能遇到术语“压入”和“弹出”。 压入大致相当于入队,而弹出大致相当于出队

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值