基于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 相关文章推荐
Django日志模块logging的配置详解
Feb 14 Python
python list排序的两种方法及实例讲解
Mar 20 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
python图书管理系统
Apr 05 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python实现决策树分类
Aug 30 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
详解python中eval函数的作用
Oct 22 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
哪些是python中web开发框架
Jun 17 Python
Django视图、传参和forms验证操作
Jul 15 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
php数组随机排序实现方法
2015/06/13 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Python矩阵常见运算操作实例总结
2017/09/29 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
在django模板中实现超链接配置
2019/08/21 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
将相和教学反思
2014/02/04 职场文书
小小的船教学反思
2014/02/21 职场文书
选秀节目策划方案
2014/06/06 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
如何利用golang运用mysql数据库
2022/03/13 Golang
Windows server 2016服务器基本设置
2022/08/14 Servers