本文章根据《算法图解》提供来写的。

# -*- coding = utf-8 -*-
# @Time : 2021/12/14 17:20
# @Author : 宁洪康
# @File : 广度优先搜索.py
# @Software : PyCharm
"""
以下是为找到芒果经销商而设计的算法
散列表graph用于映射人物关系
函数 person_is_seller 用于判断是否为芒果经销商
"""
from collections import dequegraph = {}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 person_is_seller(name):return name[-1] == "m"def search(name):search_queue = deque()search_queue += graph[name]searched = []  # 用于标记检查过的人,避免无线循环while search_queue:  # 只要队不空person = search_queue.popleft()  # 从队列中弹出一人if person not in searched:if person_is_seller(person):print(person + " is a mango seller!")return Trueelse:search_queue += graph[person]  # 弹出的不是芒果经销商,将此人朋友都加入到搜索队列searched.append(person)return False  # 关系网中没有芒果经销商search("you")"""
总结:
因为要在你的整个关系网中寻找芒果经销商,因此需要沿着每条边(一个人到另一个的连线)前行,因此运行时间至少为O(边数)
还使用了队列,将每个人添加到队列的时间为O(人数)
所以广度优先搜索的运行时间为O(人数+边数),记为O(V+E)
"""

算法图解——广度优先搜索相关推荐

  1. 算法导论--广度优先搜索和深度优先搜索

    广度优先搜索 在给定图G=(V,E)和一个特定的源顶点s的情况下,广度优先搜索系统地探索G中的边,以期"发现"可从s 到达的所有顶点,并计算s 到所有这些可达顶点之间的距离(即最少 ...

  2. 常用算法2 - 广度优先搜索 深度优先搜索 (python实现)

    1. 图 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 简单点的说:图由节点和边组成.一 ...

  3. 算法—12.广度优先搜索

    1.具体算法 /*** Created by huazhou on 2015/12/6.*/ public class TestSearch {public static void main(Stri ...

  4. JS算法:广度优先搜索(BSF)的理解

    广度优先搜索方法的实现 (基于<学习JavaScript数据结构与算法>补充学习) 实现步骤如下 1.用initializeColor函数来将color数组初始化为白色:也就是将每个节点初 ...

  5. java广度优先算法,算法之广度优先搜索

    一.引言 上一次介绍的算法是深度优先搜索 这次我们来研究一下广度优先搜索,看看怎么理解以及写出这个算法 这个算法需要数据结构的基础--队列,如果没有这个基础的同学去恶补一下. 二.小小问题 Q:在一个 ...

  6. C++一本通基础算法:广度优先搜索(BFS)

    tip:该算法将会疯狂使用队列,包括各种类型的队列 算法概述:先将起点入队,先向起点相邻的位置检索,如果满足条件,那么将这个位置入队. 然后将起点出队.再将所有与队首相邻且满足条件的位置入队,队首出队 ...

  7. 【算法】广度优先搜索(BFS)和深度优先搜索(DFS)

    https://blog.csdn.net/raphealguo/article/details/7523411 https://blog.csdn.net/qq_41681241/article/d ...

  8. 小游戏系列算法之五广度优先搜索,双向广搜,八数码,华容道

    前段时间在玩仙五前,遇上了蚩尤冢拼图这个小游戏. 其实就是八数码问题,一直想着如何才能用最少步数求解,于是就写了个程序. Q1:什么是八数码问题? A1:首先假定一个3*3的棋盘(如上图),分别有1, ...

  9. 【10大基础算法】广度优先搜索-NO7

    http://www.cnblogs.com/skywang12345/p/3711483.html 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法.简单的说,BFS ...

最新文章

  1. 阿里二面:redis分布式锁过期了但业务还没有执行完,怎么办
  2. QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)
  3. python3读取excel数据-Python3读取和写入excel表格数据的示例代码
  4. php 服务常量,php常量
  5. ATP检查的一些TIPS
  6. unity 草 可以一棵棵种吗?_俗语“门前一棵柳,金银财宝往家走”啥意思?房前可以种柳树吗?...
  7. linux如何备份网站,linux怎么备份网站
  8. 别以为JDK8有了红黑树,HashMap就不会有死循环问题!
  9. 基于鸿蒙Hi3861和华为云平台的烟雾报警器(附源码)
  10. CentOS6.4 Install Nginx 1.4.4 到特定目录
  11. 蓝牙之十-avrcp代码调用关系
  12. k8s学习笔记-Docker篇
  13. 产品读书《B端产品经理必修课:从业务逻辑到产品构建全攻略》
  14. 【有利可图网】PS实战系列:PS美化婚纱照片
  15. 前端自学Vue笔记干货(第一版,持续更新中~~~)
  16. Unity3D FPS帧数修改实现详解
  17. 解压后在别的电脑能安装PS,在我电脑就提示安装文件损坏
  18. 如何实现同一个ip下同一个80端口部署多个网站?
  19. [转]步入成熟的无线视频应用 英特尔WiDi无线视频传输研究
  20. snowboy嵌入式_树莓派3B+使用snowboy唤醒

热门文章

  1. Tiled有java版本吗_【Cocos2d-X开发学习笔记】开发工具之Tiled地图编辑器的使用
  2. 常州刘国钧计算机专业,2020常州刘国钧高等职业技术学校的录取分数线
  3. 为何你的浏览器不信任GlobalSign签发的HTTPS证书?
  4. ActiveX控件的MFC设计之旅-第15步
  5. cjk-ext-e 字体
  6. nginx自定义404错误页面
  7. Linux编程技术总结
  8. c语言位运算的妙用-程序优化
  9. 简要的可行性分析报告(1)
  10. 黄金分割搜索法求单峰极小值C++实现