DFS深度优先搜索python代码

最近在写分支定界求tsp的一个小项目,涉及到图和树的各种知识,就浅浅的从无向图的遍历开始总结一下近期的学习工作,使用dfs的递归遍历无向图。
邻接矩阵、邻接表等都可以用来表示一张图,这里使用邻接表数组来表示,即以顶点为索引的列表数组,具体实现使用字典来创建邻接表数组。
深度优先搜索dfs简单地来说,就是在访问其中一个顶点时,将它标记为已访问,递归的访问它所有没有被标记的相邻顶点。
老习惯,上代码。
运行看结果。
浅浅的分析一下递归的过程
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被选中(别问为什么,这是我的规则)。
首先运行前面的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没有被标记啊!至于为什么,这就是我的规则,别管(懂的自然会懂我的心路历程,不懂就算,反正构建路径又不对成本、距离等做要求)。


三星GalaxyS9Plus和iPhoneX哪个好
交流汇流箱在分布式光伏行业中应用
海基红外搜索和跟踪的区域自适应杂波抑制的小红外目标检测系统技术介绍
色素检测仪器的作用是什么,它的功能有哪些
MEMS压力传感器市场分析和技术趋势
DFS深度优先搜索python代码
汽车大灯的前世今生及未来介绍
RS Components推出支持物联网开发的最新产品,面向ARM mbed IoT设备平台
自制简易发电机
什么时候中性线有电流、有电压?
单相智能电表工作原理及设计
微型电流互感器已广泛运用于各种计量检定设备中
微电网的推广应用将解决14亿人缺水问题,光伏微电网成重点
iphone8最新消息:Phone8引爆7大新特性,华为mate10,iphone8,三星s8“三国争霸”!
全面解析凯迪拉克CT6铝合金车身
误格式化NTFS文件系统分区的数据恢复案例
MIMO测试方案,全方位探索无线通信新维度
深度分析高通基于DSP的的AI加速硬件设计
吉时利7510 7位半台式万用表故障维修
自主车企争相发力,吉利的智能驾驶走向何方?