深度优先搜索算法,图的深度优先搜索

深度优先搜索,其核心思想就是以一个点作为搜索的起始点,沿着这个点的分支路径不断地深入,直到没有满足条件的点则退回,并以新的起始点为搜索的点,重复以上的过程,图的遍历就是以深度优先搜索思想为解决问题的核心思想。

而对于图的实现方式有两种,一种就是使用递归的方式,递归的过程可以将问题变得简单,但是同时带来了负面影响,就是当数据量较大的时候,会出现运行时间过长,耗时严重。而另一个实现的方式就是非递归的方式,如果在对解决问题的过程中有着高效率的需求的时候,就需要使用到非递归的方式,而且是借助于堆栈的结构来实现这一方式。

对于图这一结构的深度优先搜索的方式,可以从以下这个例子来表明:

添加图片注释,不超过 140 字(可选)

对于如上这个图需要进行深度优先遍历,从而得到返回值。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图的深度优先遍历实现的方式如下:


class graph: 
def __init__(self,point,graph):self.graph = graph self.point = point self.sum =0 self.visit = [0 for j in range(len(graph))] def dfs(self,n): self.visit[n]=1 print(self.point[n]) self.sum +=1 if self.sum == len(self.visited):return for i in range(len(self.graph): if self.graph[n][i]==1 and self.visited[i]==0: self.dfs[i]

这里使用的是递归的方式来实现的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据开发的专业术语

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项…

Docker介绍、常用命令、项目部署

什么是Docker 简单说:Docker就是一个虚拟机,专业说:它是一个开源的容器平台。它和我们常用的VMware有很多相似的地方。 名词解释 镜像/images 由本体打包出来的文件。并不是文件本身,但是具有该文件的功能。举个不太贴切的例子&…

特斯拉被比亚迪拉下神坛,马斯克难改命运岁月不如人

当这个消息浮现在我面前时,我几乎不敢相信眼前所见。比亚迪这个我曾无数次在文章中提及的中国车企,终于在2023年完成了伟大的历史任务——以销量突破特斯拉,站上全球电动车王座的宝座! 过去我们都习惯于从欧美日韩那里听说汽车的成…

【Java集合类篇】HashMap的数据结构是怎样的?

HashMap的数据结构是怎样的? ✔️HashMap的数据结构✔️ 数组✔️ 链表 ✔️HashMap的数据结构 在Java中,保存数据有两种比较简单的数据结构: 数组和链表(或红黑树)。 HashMap是 Java 中常用的数据结构,它实现了 Map 接口。Has…

【vue/uniapp】使用 uni.chooseImage 和 uni.uploadFile 实现图片上传(包含样式,可以解决手机上无法上传的问题)

引入: 之前写过一篇关于 uview 1.x 版本上传照片 的文章,但是发现如果是在微信小程序的项目中嵌入 h5 的模块,这个 h5 的项目使用 u-upload 的话,图片上传功能在电脑上正常,但是在手机的小程序上测试就不会生效&#x…

Dependency Dialogue Acts — Annotation Scheme and Case Study [论文解读]

原文链接:https://arxiv.org/pdf/2302.12944.pdf 摘要 在本文中,我们介绍了依存对话行为(Dependency Dialog Act, DDA),这是一个新颖的框架,旨在捕捉多方对话中说话者意图的结构。DDA结合并适应了现有对话标注框架的特点&#x…

vue保姆级教程----深入了解 Vue3路由守卫

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 &#x1f4…

Android Jetpack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库,但是直到今天我才给重视起来,这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里,我一直在尝试做一套自己的组件库,帮助自己快速开发,虽然也听说过Jetpack&#…

OpenVINS学习5——VioManager.cpp/h学习与注释

前言 之前又看到说VioManager.cpp/h是OpenVINS中的核心程序,这次就看看这里面都写了啥,整体架构什么样,有哪些函数功能。具体介绍: VioManager类 整体分析 VioManager类包含 MSCKF 工作所需的状态和其他算法。我们将测量结果输…

【MongoDB】关于MongoDB更新文档update的操作,十分详细,建议收藏!!!

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:MongoDB数据库学习 👐学习格言:成功不是终点,失败也并非末日,最重要的是继…

el-select 多选,选有一个未选择的选项

多选有未选择这个选项后。会出现一个情况,绑定的数据为[‘未选择’,‘cpu1’,‘cpu2’] 进行一个处理,选择(未选择)就清除(其它的选择),选择(cpu)就清除(未选…