基于python模拟bfs和dfs代码实例


Posted in Python onNovember 19, 2020

BFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


# 广搜
def bfs(graph, start):
  queue = [start] # 先把起点入队列
  visited = set() # 访问国的点加入
  visited.add(start)

  while len(queue):
    vertex = queue.pop(0)
    # 找到队列首元素的连接点
    for v in graph[vertex]:
      if v not in visited:
        queue.append(v)
        visited.add(v)
    # 打印弹出队列的该头元素
    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  bfs(graph, 'A')

A B D I F C H E G
Process finished with exit code 0

DFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


# 深搜
def dfs(graph, start):
  stack = [start]
  visited = set()
  visited.add(start)

  while len(stack):
    vertex = stack.pop() # 找到栈顶元素
    for v in graph[vertex]:
      if v not in visited:
        stack.append(v)
        visited.add(v)

    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  dfs(graph, 'E')

E H G F B A I D C
Process finished with exit code 0

总结

很明显一个用了队列,一个用了栈

利用python语言优势,只需改动pop即可

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

Python 相关文章推荐
python随机生成指定长度密码的方法
Apr 04 Python
python学习 流程控制语句详解
Jun 01 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
python调用自定义函数的实例操作
Jun 26 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
深入解析神经网络从原理到实现
Jul 26 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
Python 多进程、多线程效率对比
Nov 19 #Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 #Python
Pytorch实验常用代码段汇总
Nov 19 #Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 #Python
python基于pygame实现飞机大作战小游戏
Nov 19 #Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 #Python
python3 os进行嵌套操作的实例讲解
Nov 19 #Python
You might like
php学习笔记之 函数声明(二)
2011/06/09 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
破解Session cookie的方法
2006/07/28 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python 二维数组90度旋转的方法
2019/01/28 Python
Django 批量插入数据的实现方法
2020/01/12 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
西门豹教学反思
2014/02/04 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
老公保证书范文
2014/04/29 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
个人工作表现评价材料
2014/09/21 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
python中redis包操作数据库的教程
2022/04/19 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis