0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DFS深度优先搜索python代码

冬至子 来源:行在交通 作者:ai聊天机器人 2022-10-12 10:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近在写分支定界求TSP的一个小项目,涉及到图和树的各种知识,就浅浅的从无向图的遍历开始总结一下近期的学习工作,使用DFS的递归遍历无向图。

邻接矩阵、邻接表等都可以用来表示一张图,这里使用邻接表数组来表示,即以顶点为索引的列表数组,具体实现使用字典来创建邻接表数组。

poYBAGNGKzGACJOcAAAxE4eKOeo310.png

深度优先搜索DFS简单地来说,就是在访问其中一个顶点时,将它标记为已访问,递归的访问它所有没有被标记的相邻顶点。

老习惯,上代码。

poYBAGNGKzyAAuJ7AABb3wOjgys887.png

运行看结果。

poYBAGNGK0yAHvgcAACSUbrIQFo956.png

浅浅的分析一下递归的过程

poYBAGNGK1yAai82AACYeBpPqJc420.png

dfs(0) ---dfs(1)---0已经被标记了,下一个dfs(3)---1已经被标记了,所以下一个dfs(2)---graph[2]里的0,3都被标记了,回到graph[3],接着dfs(5)--3已经被标记了,所以dfs(6)---接下来就简单了,dfs(4)。好像就结束了应该是这样吧。

到这里如果就结束的话,显得敷衍,折腾了一下,实现了一个简单有点笨的s-v的路径构建的功能,还是用上面的例子来说明,最后visited = [0,1,3,2,5,6,4],根据这个标记顺序,会有且仅有0-1,1-3,3-2,3-5,5-6,6-4被选中(别问为什么,这是我的规则)。

pYYBAGNGK26AaZN4AAD8oxmDK2k515.png

首先运行前面的dfs,得到 visited = [0,1,3,2,5,6,4],根据这个标记顺序,会有且仅有0-1,1-3,3-2,3-5,5-6,6-4被选中(别问为什么,这是我的规则)。看第4和5行,将构建u-v的路径转为构建v-u的路径。

会有人好奇为啥0到5的路径为啥不是0-3-5这条,因为0-3没有被标记啊!至于为什么,这就是我的规则,别管(懂的自然会懂我的心路历程,不懂就算,反正构建路径又不对成本、距离等做要求)。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4856

    浏览量

    89547
  • TSP
    TSP
    +关注

    关注

    1

    文章

    26

    浏览量

    17394
  • DFS
    DFS
    +关注

    关注

    0

    文章

    26

    浏览量

    9541
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    解析淘宝拍立淘按图搜索API接口与JSON数据示例参考

    应用。 获取API权限和密钥(App Key、App Secret)。 使用Python调用API的示例代码。 3. JSON数据示例与解析 返回的JSON数据结构解析。 如何提取关键信息(如商品ID、名称、价格、图片等)。 4. 拍立淘API的应用场景 图像
    的头像 发表于 11-11 13:19 112次阅读

    京东拍立淘API开发指南:从零开始构建图像搜索应用

    京东图片识别搜索API(拍立淘)是基于深度学习的视觉搜索服务,通过卷积神经网络提取图像特征向量,结合近似最近邻搜索算法实现商品精准匹配‌。该技术解决了传统文字
    的头像 发表于 11-09 17:40 1944次阅读

    深度解析淘宝拍立淘按图搜索API接口与JSON数据示例参考

    引言 淘宝拍立淘是淘宝推出的一项基于图像识别的搜索功能,用户可以通过上传图片来搜索相似商品。淘宝开放平台提供了拍立淘按图搜索API接口,帮助开发者实现图像搜索功能。本文将
    的头像 发表于 11-06 13:43 91次阅读

    苏宁搜索接口深析:全品类智能分轨如何解决 O2O 电商的搜索痛点?

    本文深度解析苏宁全品类O2O搜索接口核心技术,涵盖智能分轨引擎、库存联动系统与高并发架构设计,解决多品类参数识别、线上线下库存同步等电商搜索痛点,助力构建高效精准的现代电商搜索体系。
    的头像 发表于 10-28 16:20 679次阅读
    苏宁<b class='flag-5'>搜索</b>接口深析:全品类智能分轨如何解决 O2O 电商的<b class='flag-5'>搜索</b>痛点?

    按图搜索1688商品的API接口

    服务(如ImageSearch)实现类似功能。本技术帖将逐步介绍原理、实现步骤和代码示例,帮助你构建一个可用的API接口。 1. 图像搜索原理 按图搜索的核心是基于内容的图像检索(CBIR),它通过提取图像特征向量并进行相似度计
    的头像 发表于 10-22 15:05 220次阅读
    按图<b class='flag-5'>搜索</b>1688商品的API接口

    阿里巴巴国际站关键字搜索 API 实战:3 步搞定多语言适配 + 限流破局,询盘量提升 40%

    跨境电商API开发常陷合规、多语言、限流等坑。本文详解从国际合规(GDPR/CCPA)到参数优化、数据结构化及区域化搜索的全链路方案,附Python代码模板与缓存重试架构,助力提升调用成功率至99%+,精准询盘增长42%。
    的头像 发表于 10-20 14:44 742次阅读

    dfs_v1,vnode引用计数只增不减,无法释放怎么解决?

    对vnode引用计数减一,计数减一的代码dfs_posix.c中的close()函数里,代码如下: int close(int fd) { int result; struct dfs
    发表于 09-11 08:00

    存储示波器的存储深度对信号分析有什么影响?

    不足的影响:波形失真、频谱泄漏、偶发信号遗漏、测量误差大。 优化方向:根据信号类型动态调整采样率与存储深度,启用分段存储或升级硬件。 操作建议 高频信号:优先保证采样率,通过分段存储延长记录时间
    发表于 05-27 14:39

    零基础入门:如何在树莓派上编写和运行Python程序?

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1509次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b>程序?

    创建了用于OpenVINO™推理的自定义C++和Python代码,从C++代码中获得的结果与Python代码不同是为什么?

    创建了用于OpenVINO™推理的自定义 C++ 和 Python* 代码。 在两个推理过程中使用相同的图像和模型。 从 C++ 代码中获得的结果与 Python*
    发表于 03-06 06:22

    运行OVModelForCausalLM Python模块时出错了,怎么解决?

    创建了一个自定义 Python* 代码,类似于遵循 240-dolly-2-instruction 的 Jupyter 笔记本。 OVModelForCausalLM Python* 模块运行时出错。
    发表于 03-05 06:44

    百度搜索全量上线DeepSeek满血版

    结果页看到一个“AI+”的入口。点击进入AI搜索模式,再下方会有一个提示“去试试‘满血版’”,点击它,用户便能与DeepSeek进行深度对话。 据了解,这一更新是百度搜索和文心智能体平台在2月16日共同宣布的。当时,双方宣布将全
    的头像 发表于 02-19 13:58 1508次阅读

    百度搜索与文心智能体平台接入DeepSeek及文心大模型深度搜索

    近日,百度搜索与文心智能体平台联合宣布了一项重要更新:将全面接入DeepSeek及文心大模型最新的深度搜索功能。这一更新将为用户和开发者带来更加智能、高效的搜索和智能体创建体验。 据悉
    的头像 发表于 02-17 09:14 968次阅读

    使用Python实现xgboost教程

    装: bash复制代码conda install -c conda-forge xgboost 2. 导入必要的库 在你的Python脚本或Jupyter Notebook中,导入必要的库: python复制
    的头像 发表于 01-19 11:21 2200次阅读

    ChatGPT新增实时搜索与高级语音功能

    。OpenAI对搜索算法进行了深度优化,使得ChatGPT能够在用户提出问题后,迅速获取到分钟级别的最新信息,包括股票、新闻等。这一功能的加入,极大地满足了用户对即时数据的需求,使得ChatGPT在各类应用场景中更加得心应手。 同时,ChatGPT还推出了高级语音功能。在
    的头像 发表于 12-17 14:08 917次阅读