基于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学习笔记 下载
Feb 10 Python
Python yield使用方法示例
Dec 04 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Python常用模块函数代码汇总解析
Aug 31 Python
python打包生成so文件的实现
Oct 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
window.dialogArguments 使用说明
2011/04/11 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python字符编码判断方法分析
2016/07/01 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
大学生毕业自荐信
2013/10/10 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
银行职业规划书范文
2013/12/28 职场文书
毕业生自荐书
2014/02/03 职场文书
环保项目建议书
2014/08/26 职场文书
解除劳动合同协议书
2014/09/17 职场文书
考试作弊检讨书
2015/01/27 职场文书
教师工作决心书
2015/02/04 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技