算法图解(六) 广度优先搜索

本文介绍了有向图的概念,阐述了广度优先搜索(BFS)的基本原理,强调其在查找连通路径和求最短路径问题上的应用。通过邻接表的Python实现展示了BFS算法,并探讨了队列在搜索过程中的作用,以及队列与栈的区别。同时,简要提及树作为无环图的特性。
摘要由CSDN通过智能技术生成

翻翻目录看看能想到什么
1.图2.广度优先搜索3.算法实现图的建立与广度优先搜索

1. 图
本节讨论的是有向图,即带箭头的图,例如A->B。
只要有一条边连着的两个点,两个点便称为邻居(无论是有向图还是无向图)
A-B之间有a条边,便称为a度
2. 广度优先搜索
广度优先搜索又称BFS。
从A点开始,找到度数为1的节点,然后再从这些几点开始再次寻找度数为1的节点,直到找完。逐渐扩大这个搜索范围,以广度为优先。
广度优先搜索可以解决两个问题:
1.是否存在连通路径
2.寻找最短路径
3. 算法实现图的建立与广度优先搜索
图的建立采用邻接表的方法,用python实现也就是采用字典的方式,例如
A->B,A->C,A->D,则 {A:[B,C,D]}
广度优先搜索有需要借助队列(LIFO)(Last In First Out)这一数据结构
首先导入一个元素的邻居到队列里,判断是否已经寻找过,判断是否是要查找的元素,如果是,则结束;如果不是,则将该元素加入到寻找过的列表中,并且把他的邻居加入到队列中…直到找到
翻翻书看看遗忘了什么

队列

队列是后进先出,栈是先进先出。
队列的顺序就是度数的顺序,队列保证了先检查完1度关系再检查二度关系。

简单来说就是不能形成回路的图。(后面会详细讲解)
代码实现

from collections import deque 
def search
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值