基于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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python装饰器使用示例及实际应用例子
Mar 06 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
python cs架构实现简单文件传输
Mar 20 Python
Python实现登陆文件验证方法
Oct 06 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python装饰器语法糖
Jan 02 Python
python实现批量注册网站用户的示例
Feb 22 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Django 实现对已存在的model进行更改
Mar 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
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
JS高级运动实例分析
2016/12/20 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
利用python写个下载teahour音频的小脚本
2017/05/08 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
有趣的广告词
2014/03/18 职场文书
小学生手册家长评语
2014/04/16 职场文书
教育合作协议范本
2014/10/17 职场文书
教师调动申请报告
2015/05/18 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Django如何创作一个简单的最小程序
2021/05/12 Python
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
Python循环之while无限迭代
2022/04/30 Python
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技