BFS算法(广度优先搜索)——Python学习日记

BFS算法(广度优先搜索)——Python学习日记一 定义 广度优先搜索算法是最简便的图的搜索算法之一 属于一种盲目搜寻法 目的是系统地展开并检查图中的所有节点 来找寻结果 也就是说 它并不考虑结果的可能存在的位置 全面地搜索整个图 一直到找到结果为止

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、定义:广度优先搜索算法是最简便的图的搜索算法之一,属于一种盲目搜寻法。目的是系统地展开并检查图中的所有节点,来找寻结果。也就是说,它并不考虑结果的可能存在的位置,全面地搜索整个图,一直到找到结果为止。

二、核心思想:讲究的是搜索的广度,每条路都走一点,先把周边的走完,然后再去走更深的地方。

三、算法思路:

队列(先进先出)

1、首先创建一个空队列queue来存放节点和一个空的列表visit来存放已经访问的节点

2、依次将起始点和邻接点加入队列queue和列表visit中

3、pop出队列中最先进入的节点,并且从图中获取该节点的邻接点

4、如果邻接点不在列表visit中,就将该邻接点加入队列queue和列表visit中

5、输出pop出来的节点

6、重复步骤3、4、5,一直到队列为空。

四、算法实现:

def bfs(参数):

初始化队列queue,visit

初始元素存入队列queue,visit

while(队列不空)

出队列头元素

循环找到队头元素相邻的又同时没有被处理的节点进行进队处理,满足条件就入队,变更状态

可以顺便记录步数以及这个节点的父节点是谁。

五、实现过程:

如图从A开始,使用BFS算法,输出查找路径

BFS算法(广度优先搜索)——Python学习日记



欢迎大家来到IT世界,在知识的湖畔探索吧!

1、A首先进队列queue。

queue=A,visit=空

2、接着A出队,这时候与A相邻的节点B,C,D进队。

queue=B,C,D

visit=A

3、接着B出队,与B相邻的A、E、F节点中,E、F没有进过队,所以E、F进队列queue。

queue=C,D,E,F

visit=A,B

4、接着C出队,与C相邻的A、D、F、G中,只有G没有入过队,所以G入队

queue=D,E,F,G

visit=A,B,C

5、接着D出队,与D相邻的A、C、G已经全部进过队列

queue=E,F,G

visit=A,B,C,D

6、接着E出队,相邻的B已经入过队

queue=F,G

visit=A,B,C,D,E

7、接着F出队,相邻的B、C已经入过队

queue=G

visit=A,B,C,D,E,F

8、最后G出队,与G相邻的C、D已经入过队

queue=空

visit=A,B,C,D,E,F,G

至此循环结束,BFS算法也就完成了全部遍历。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/131924.html

(0)
上一篇 50分钟前
下一篇 20分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信