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实现程序的单一实例用法分析
Jun 03 Python
Python存取XML的常见方法实例分析
Mar 21 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python生成器推导式用法简单示例
Oct 08 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
python 实现超级玛丽游戏
Nov 25 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
Python进程池与进程锁之语法学习
Apr 11 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 类型转换函数intval
2009/06/20 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
python DataFrame 取差集实例
2019/01/30 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
python3代码中实现加法重载的实例
2020/12/03 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
培训心得体会
2013/12/29 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
工艺员岗位职责
2014/02/11 职场文书
授权委托书
2014/07/31 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
复兴之路观后感
2015/06/02 职场文书
python 网络编程要点总结
2021/06/18 Python