深度优先搜索算法 (英语: Depth-First-Search , DFS )是一种用于遍历或搜索 树 或 图 的 算法 。. 这个算法会尽可能深的搜索树的分支。. 当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。

这个也是我们在数据结构中学过的,我在这也不赘述。不明白原理的可以查一下DFS算法。

我们俗称的不撞南墙不回头。

如上图,我们选择A做第一个,我们得到的是ACEDFB。其实这里的代码跟BFS用到的代码一样,只需要修改一下即可。接下来我们用代码实现。

grap = {"A":["B","C"],"B":["A","C","D"],"C":["A","B","D","E"],"D":["B","C","E","F"],"E":["C","D"],"F":["D"]
}
#存图def DFS(grap,star):                #DFS算法stack = []                     #定义一个栈seen = set()                   #建立一个集合,集合就是用来判断该元素是不是已经出现过stack.append(star)             #将任一个节点放入seen.add(star)                 #同上while (len(stack)>0) :         #当队列里还有东西时ver =  stack.pop()         #取出栈顶元素       !!!!这里也就是与BFS的不同notes = grap[ver]          #查看grep里面的key,对应的邻接点for i in notes:            #遍历邻接点if i not in seen:      #如果该邻接点还没出现过stack.append(i)    #存入stackseen.add(i)        #存入集合print(ver)                 #打印栈顶元素print(DFS(grap,"A"))

DFS算法(python)相关推荐

  1. Python BFS和DFS算法

    Python BFS和DFS算法 看了b站灯神的视频,整理如下.最后再加上几条实战题. 1.BFS bfs全称是广度优先搜索,任选一个点作为起始点,然后选择和其直接相连的(按顺序展开)走下去.主要用队 ...

  2. DFS算法模板-排列组合-python

    DFS算法模板: def dfs(array or root, cur_layer, path, result):if cur_layer == len(array) or not root:resu ...

  3. 算法(Python版)|156Kstars|神级项目-(1)The Algorithms - Python简介

    文章目录 算法(Python版) 项目地址 项目概况 说明 参与入门 社区频道 算法列表 Arithmetic Analysis 算术分析 Audio Filters 音频过滤器 Backtracki ...

  4. 八皇后BFS算法、DFS算法、A*算法代码理解

    代码参考了Python:DFS/BFS/UCS解决八皇后问题_流动的风与雪的博客-CSDN博客 和Python:GBF/A*算法解决八皇后问题_流动的风与雪的博客-CSDN博客 但是我花了两天时间才看 ...

  5. UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法

    UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法 DFS方法基础 邮票问题 这部分的主要目标是建立求解整数规划的方法,早期解决整数规划需要穷举,后来人们把搜索技术应用到整数规划中,极大 ...

  6. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现

    Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...

  7. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  8. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  9. 最优化算法python实现篇(4)——无约束多维极值(梯度下降法)

    最优化算法python实现篇(4)--无约束多维极值(梯度下降法) 摘要 算法简介 注意事项 算法适用性 python实现 实例运行结果 算法过程可视化 摘要 本文介绍了多维无约束极值优化算法中的梯度 ...

最新文章

  1. 谨慎使用PHP的引用
  2. 别再打字聊bug了,GitHub支持“视频留言”!手机也可以的那种
  3. 计算机网络教室任课教师登记表,多媒体教室工作计划
  4. Redis 处理客户端连接的一些内部实现机制
  5. 微课|玩转Python轻松过二级(2.4节):常用内置函数用法精要4
  6. linux命令 bind,Linux bind命令
  7. QQ空间 1314学习网的日志 神奇的图片
  8. 如何在快手批量下载高清不含水印视频
  9. STM32F072单片机的低功耗实验/STOP模式低功耗调试
  10. php求闰年的公式,php判断闰年(闰年计算方法)
  11. 5大国外广告联盟赚美金项目,诱人的美金在向你招手!
  12. 在光与影中用对白塑造灵魂
  13. Codeforces1486 C1.Guessing the Greatest (easy version)(交互题+二分)
  14. matlab x和y不对应,用matlAB求x和y的对应每行的相关系数!比如x中第一行和y中第一行的相关系数!依次的到没行的一个相关系数...
  15. 又一个阿里离职的 P10 大佬
  16. NHibernate in Action(第一章1.2)
  17. Python爬取B站耗子尾汁、不讲武德出处的视频弹幕!
  18. php explode用法,php中explode函数用法分析
  19. 移动互联网,一场思维与市场的变革
  20. 老虎过河编程java_Java编程实例:青蛙过河程序及其解析

热门文章

  1. LEETCODE-刷题个人笔记 Python(1-400)
  2. menu toolbar
  3. 通证经济学习与探索阶段性总结(一)
  4. 怎么用C语言编写一个猪头的形状
  5. 【逻辑回归学习笔记】
  6. jmeter接口测试教程
  7. 转载:ZZW原创_rsync同步时由于注释问题引起的@ERROR: chdir failed
  8. 北京市住建委:明确智慧工地的做法内容和认定关键点,筑智建助力工程行业全面数字化
  9. OLED屏幕字库的建立
  10. 云客Drupal源码分析之表单进阶