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 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
Python实现的石头剪子布代码分享
Aug 22 Python
python模拟Django框架实例
May 17 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
Python 共享变量加锁、释放详解
Aug 28 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
pytorch forward两个参数实例
Jan 17 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
jquery 获取json数据实现代码
2009/04/27 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python3爬楼梯算法示例
2019/03/04 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
keras多显卡训练方式
2020/06/10 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
临床医学应届生求职信
2013/11/06 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
初中政治教学工作总结
2015/08/13 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python