深度优先搜索python
深度优先搜索
概念
深度优先搜索和广度优先搜索一样,都是对图进行搜索的算法,目的也都是从起点开始搜索直到到达指定顶点(终点)。深度优先搜索会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条候补路径。
具体而言
步骤1
A为起点,G为终点。一开始我们在起点A上。
步骤2
将可以从A直达的三个顶点B、C、D设为下一步的候补顶点。
步骤3
从候补顶点中选出一个顶点。优先选择最新成为候补的点,如果几个顶点同时成为候补,那么可以从中随意选择一个。
步骤4
此处B、C、D同时成为候补,所以我们随机选择了最左边的顶点。
步骤5
移动到选中的顶点B。此时我们在B上,所以B变为红色,同时将已经搜索过的顶点变为橙色。
步骤6
将可以从B直达的两个顶点E和F设为候补顶点。
步骤7
此时,最新成为候补顶点的是E和F,我们选择了左边的顶点E。
步骤8
移动到选中的顶点E上。
步骤9
将可以从E直达的顶点K设为候补顶点。
步骤10
重复上述操作直到到达终点,或者所有顶点都被遍历为止。
步骤11
这个示例的搜索顺序为A、B、E、K、F、C、H。
步骤12
现在我们搜索到了顶点C。
步骤13
到达终点G,搜索结束。
广度优先搜索与深度优先搜索的区别
广度优先搜索选择的是最早成为候补的顶点,因为顶点离起点越近就越早成为候补,所以会从离起点近的地方开始按顺序搜索;而深度优先搜索选择的则是最新成为候补的顶点,所以会一路往下,沿着新发现的路径不断深入搜索。
代码
题目
剑指offer55_二叉树的深度
题目描述:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# 深度优先搜索
class Solution:def maxDepth(self, root):if root is None: return 0 else: left_height = self.maxDepth(root.left) right_height = self.maxDepth(root.right) return max(left_height, right_height) + 1
深度优先搜索python相关推荐
- 常用算法2 - 广度优先搜索 深度优先搜索 (python实现)
1. 图 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 简单点的说:图由节点和边组成.一 ...
- 深度优先搜索-Python
基本思路: 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问: (3)若此时图中尚有顶 ...
- python实现深度优先搜索_python中的深度优先搜索算法
假设我有一个函数,它接受一个输入($x iui$),然后经过一个循环并生成一系列输出($x{I,j}$).然后,每个输出可以再次作为同一函数的输入,从而产生更多的输出($x{i,j,k}$).我试图通 ...
- 人工智能学习:python实现迭代加深的深度优先搜索
人工智能学习:python实现深度优先搜索算法 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 python版本:3.5 开发 ...
- 深度优先搜索及python实现围棋“吃子”
文章目录 前言 一."吃子"和"气" 1."吃子"和"气"的概念 2.问题转化 二.深度优先搜索 1.表示方法 2.深度 ...
- 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】
文章目录 一.实验内容 二.深度优先搜索和广度优先搜索总结 1.深度优先搜索算法 2.广度优先搜索算法 三.实验代码和用于测试的迷宫 1.实验代码 2.测试迷宫 2.1 maze1.txt 2.2 m ...
- 深度优先搜索 python_黄哥Python:图深度优先算法(dfs)
深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在边都己被探寻过,搜索将回溯到发现 ...
- python 围棋按照坐标查找棋子_深度优先搜索及python实现围棋“吃子”
前言 "吃子"是围棋最基本的规则之一,但在编写围棋游戏要如何实现?深度优先搜索可以解决这个问题.本文分享的是个人使用深度优先搜索算法及python语言实现"吃子" ...
- 使用动态规划和深度优先搜索解决TSP问题,python编写
参考: 1)https://www.jianshu.com/p/a66e3166569b 2)https://www.cnblogs.com/youmuchen/p/6879579.html 一使用动 ...
最新文章
- 2020 AI产业图谱启动,勾勒中国AI技术与行业生态
- 线下活动【西安站】用Leangoo做Scrum敏捷开发实战课(免费)
- c++ union内存
- 使用SQLmap对dvwa进行SQL注入测试
- MyBatis Plus Generator——MyBatis Plus代码生成器DEMO
- MongoDB作为windows服务来安装-2
- 服务器生成文件怎么配置路径,npm run build生成的文件如何部署到服务器上
- Sublime Text3 多行合并为一行
- ai字体素材网站_综合网站大全,字体、设计、图片各种素材管够,资源丰富你懂得...
- Vector Packet Processing(VPP) (一)简介
- excel 数据透视表完成分类汇总
- 一级倒立摆matlab仿真,一级倒立摆的Simulink仿真
- 通信upf是什么意思_管理UPF的方法、装置及系统与流程
- 从微信打开链接不能正常上下滑动
- 自己怎么开发一个软件app、如何开发一个app系统软件?
- U盘检测-linux+QT
- 新老域名更替时的页面跳转
- vue H5app plus调取手机相册,限制图片大小,图片转base64
- 使用Vue快速开发单页应用
- python京东预约抢购_Python实现京东秒杀功能代码