深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。

深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。因发明“深度优先搜索算法”,约翰·霍普克洛夫特与罗伯特·塔扬在1986年共同获得计算机领域的最高奖:图灵奖。

伪代码(Pseudocode):

Input: A graph G and a vertex v of G

Output: All vertices reachable from v labeled as discovered

A recursive implementation of DFS:

procedure DFS(G, v) is

label v as discovered

for all directed edges from v to w that are in G.adjacentEdges(v) do

if vertex w is not labeled as discovered then

recursively call DFS(G, w)

The order in which the vertices are discovered by this algorithm is called the lexicographic order.

A non-recursive implementation of DFS with worst-case space complexity 。

procedure DFS-iterative(G, v) is

let S be a stack

S.push(v)

while S is not empty do

v = S.pop()

if v is not labeled as discovered then

label v as discovered

for all edges from v to w in G.adjacentEdges(v) do

S.push(w)

黄哥所写的代码,迭代实现。

递归实现。黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次​zhuanlan.zhihu.com黄哥:黄哥Python培训是这样训练学员的​zhuanlan.zhihu.com

请看视频讲解。图深度优先算法(dfs)https://www.zhihu.com/video/1222969188039380992

深度优先搜索 python_黄哥Python:图深度优先算法(dfs)相关推荐

  1. 读书笔记(python)--图及其算法

    限于笔者技术水平,文章可能存在错漏,请各位不吝赐教,笔者会尽快改正 文章目录 前言 一.图的术语与实现 二.宽度优先(BFS)与深度优先(DFS) 1.一个简单的图 2.BFS代码 3.DFS代码 4 ...

  2. SDUTOJ3469_深度优先搜索练习之神奇的矩环(DFS)

    深度优先搜索练习之神奇的矩环 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 小鑫的女 ...

  3. 深度优先搜索c语言详解,深度优先搜索 — C语言版

    思路:找一个入口结点,然后搜索该结点的第一个相邻结点,再搜索该相邻结点的第一个相邻结点,依次往下寻找 - - ,直到所有结点都被遍历到,算法结束,退出. #include #define MAX 10 ...

  4. mro python_用python实现MRO算法

    引子: 如图反映了python3中,几个类的继承关系和查找顺序.对于类A,其查找顺序为:A,B,E,C,F,D,G,(Object),这并不是一个简单的深度优先或广度优先的规律.那么这个顺序到底是如何 ...

  5. python 短进程优先算法_黄哥Python:图深度优先算法(dfs)

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

  6. 南华大学计算机学院吴取劲,一种基于图深度优先搜索的基本路径集自动生成优化算法-南华大学学报.PDF...

    26 3 ( ) Vol. 26 No. 3 第 卷第 期 南华大学学报 自然科学版 2012 9 Journal of University of South China (Science and ...

  7. 深度优先搜索及python实现围棋“吃子”

    文章目录 前言 一."吃子"和"气" 1."吃子"和"气"的概念 2.问题转化 二.深度优先搜索 1.表示方法 2.深度 ...

  8. 【算法学习】图相关算法编程实现-深度优先遍历和广度优先遍历

    一.图的表示 图G=(V,E).要表示一个图,通常有两种方法:邻接表和邻接矩阵.两种方法都既可以表示有向图,也可以表示无向图. 邻接表表示由一个包含|V|个列表的数组组成,其中每个列表对应V中的一个顶 ...

  9. 图的遍历——深度优先搜索和广度(宽度)优先搜索(含例题)

    专栏导读及目录https://blog.csdn.net/createprogram/article/details/86741044 深度优先搜索 DFS基本思想 基本步骤: 1.从图中某个顶点v0 ...

最新文章

  1. 解题报告:简单瞎搞题(bitset的应用)
  2. 设置系统的viewController modal动画样式
  3. 毕业论文 | 人工智能侵权责任法律问题研究——以无人驾驶汽车为例
  4. 论文浅尝 | 将结构预测作为增广自然语言间的翻译任务
  5. 设置背景图时防止图片拉伸的解决方法
  6. python扫描端口脚本_python扫描端口脚本
  7. c语言 格式转换函数,C语言中的格式转换函数.doc
  8. QApplication
  9. python strip() 方法
  10. Rhino在java中的用法
  11. php加ajax,PHP – AJAX 与 PHP | 菜鸟教程
  12. wpa_supplicant 框架
  13. win10如何开启自带虚拟机
  14. 【转载】《周一清晨的领导课》读书笔记!!!
  15. 对郭天祥老师的一些知识点的解读
  16. 区块链的核心价值就在去中心化
  17. mysql篇-mysql的locate函数
  18. 等级保护测评对哪些行业是硬性要求?相关标准规范主要有哪些?│党政机关篇
  19. Java循环之triangle三角形
  20. 如何将数据导入数据库

热门文章

  1. 『Javascript基础重点』13.dom的应用
  2. html 天猫上拉切换,jquery实现的仿天猫侧导航tab切换效果
  3. CPU占用过高解决思路一
  4. 看待编程,换一种心态
  5. 从面试7连挂到面面offer,我只用了一个月,面试20K+测试岗亲身经验分享.....
  6. 第二届阿里云 ECS CloudBuild 开发者大赛火热来袭! 51万奖金池,等你来挑战
  7. 有哪些好的自媒体平台?哪些平台流量大?
  8. jsp通过form表单提交数据到servlet报404
  9. 咒术回战,HTMLCSS,简单,介绍页面
  10. 利用百度AI+python进行图片漫画化处理