基于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获得两个数组交集、并集、差集的方法
Mar 27 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
创建pycharm的自定义python模板方法
May 23 Python
Python动态导入模块的方法实例分析
Jun 28 Python
Puppeteer使用示例详解
Jun 20 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
python suds访问webservice服务实现
Jun 26 Python
python实现人工蜂群算法
Sep 18 Python
Python实现壁纸下载与轮换
Oct 19 Python
Pandas数据类型之category的用法
Jun 28 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分页示例分享
2014/04/30 PHP
PHP中的替代语法简介
2014/08/22 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
在MAC上搭建python数据分析开发环境
2016/01/26 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python iter()函数用法实例分析
2018/03/17 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
农村改厕实施方案
2014/03/22 职场文书
大学生求职计划书
2014/04/30 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
政工师工作总结2015
2015/05/26 职场文书