python实现广度优先搜索过程解析


Posted in Python onOctober 19, 2019

广度优先搜索

适用范围: 无权重的图,与深度优先搜索相比,深度优先搜索法占内存少但速度较慢,广度优先搜索算法占内存多但速度较快

复杂度: 时间复杂度为O(V+E),V为顶点数,E为边数

思路

广度优先搜索是以层为顺序,将某一层上的所有节点都搜索到了之后才向下一层搜索;

代码

from collections import deque

#解决从你的人际关系网中找到芒果销售商的问题
#使用字典表示映射关系
graph = {} 
graph["you"] = ["alice", "bob", "claire"] 
graph["bob"] = ["anuj", "peggy"] 
graph["alice"] = ["peggy"] 
graph["claire"] = ["thom", "jonny"] 
graph["anuj"] = [] 
graph["peggy"] = [] 
graph["thom"] = [] 
graph["jonny"] = []

#判断是否是要查找的目标 
def is_target_node(name):
   return name[-1] == 'm'

#实现广度优先搜索算法 
def search(name):
   search_queue = deque() #创建一个队列
   search_queue += graph[name] 
   searched = [] #记录用于检查过的人
   while search_queue: #只要队列不为空
     person = search_queue.popleft() #就取出其中的第一个人
     if not person in searched: #这个人没有被检查过
       if is_target_node(person): #判断这个人是否是要查找的销售商
         print(person + " is target node!")
         return True
       else:
         search_queue += graph[person] #如果这个人不是,就将这个人的朋友压入队列
         searched.append(person) #将这个人追加到已检查过的字典中
   return False

#调用方法
search("you")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.x版本中新的字符串格式化方法
Apr 24 Python
python append、extend与insert的区别
Oct 13 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
Python continue继续循环用法总结
Jun 10 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
python实现静态web服务器
Sep 03 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python学习笔记之装饰器
Aug 06 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
Python编程源码报错解决方法总结经验分享
Oct 05 Python
python文件与路径操作神器 pathlib
Apr 01 Python
python字符串格式化方式解析
Oct 19 #Python
基于python3监控服务器状态进行邮件报警
Oct 19 #Python
使用python绘制温度变化雷达图
Oct 18 #Python
详解numpy矩阵的创建与数据类型
Oct 18 #Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 #Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 #Python
python如何将两个txt文件内容合并
Oct 18 #Python
You might like
php的XML文件解释类应用实例
2014/09/22 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
Flask数据库迁移简单介绍
2017/10/24 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
卫生安全检查制度
2014/02/04 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
酒店端午节活动方案
2014/08/26 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
初中重阳节活动总结
2015/05/05 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
Python制作表白爱心合集
2022/01/22 Python