Go语言深度优先搜索(DFS)

news2024/11/19 1:51:10

Go 语言代码段实现了深度优先搜索(DFS)算法,该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结:

深度优先搜索函数 (DFS):

  • 接收图的邻接表 (map[int][]int)、访问记录 (map[int]bool) 和当前节点作为参数。
  • 将当前节点标记为已访问,并输出访问信息。
  • 递归遍历当前节点的邻居节点,对未访问的邻居节点调用 dfs 函数。

主程序 (main):

  • 定义示例有向图的邻接表。
  • 初始化节点访问记录的 map
  • 从节点0开始调用 dfs 函数,实现深度优先搜索。

假设你有一个图的邻接表,以 map[int][]int 的形式表示。请注意,这只是一个基本示例,你可能需要根据具体情况进行调整。

package main

import "fmt"

// 深度优先搜索函数
func dfs(graph map[int][]int, visited map[int]bool, node int) {
	// 标记当前节点为已访问
	visited[node] = true
	fmt.Printf("Visited node: %d\n", node)

	// 遍历当前节点的邻居节点
	for _, neighbor := range graph[node] {
		// 如果邻居节点未被访问,递归访问邻居节点
		if !visited[neighbor] {
			dfs(graph, visited, neighbor)
		}
	}
}

func main() {
	// 示例邻接表,表示有向图
	graph := map[int][]int{
		0: {1, 2},
		1: {3, 4},
		2: {5},
		3: {},
		4: {5},
		5: {},
	}

	// 初始化访问记录的 map
	visited := make(map[int]bool)

	// 从节点0开始进行深度优先搜索
	startNode := 0
	dfs(graph, visited, startNode)
}

在这个例子中,我们通过邻接表表示了一个有向图,并从节点0开始进行深度优先搜索。你可以根据实际需求修改图的表示方式和起始节点。

运行结果:

  • 深度优先搜索从节点0开始,依次访问节点0、1、3、4、2、5。

运行该程序,你将看到深度优先搜索的结果,即访问的节点顺序。这个示例是有向图的深度优先搜索,你可以根据需要调整为无向图的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go sort.Search()

函数 func Search(n int, f func(int) bool) int {} 函数作用 通过二分法查找,找到已经排序好的数组[0,n)中第一个使f为true的索引,如果没有找到返回n 为什么要用二分查找? 因为二分查找相比普通依次遍历而言,速度能有巨幅提升…

延时消息+递归导致重复消费爆炸问题

背景 公司所用消息队列为RoucketMQ,版本为4.x。最近公司有业务需要,将某个处理延迟到第二天的白天再进行。由于4.x版本队列,默认延时时间是按等级来延时的,默认有18个等级,如下图: 默认的延时等级&#xff…

我对迁移学习的一点理解(系列2)

文章目录 我对迁移学习的一点理解 我对迁移学习的一点理解 源域和目标域是相对的概念,指的是在迁移学习任务中涉及到的两个不同的数据集或领域。 源域(Source Domain)通常指的是已经进行过训练和学习的数据集,它被用来提取特征、…

盒马补贴量价-2021KDD

概述: 电商商品定价三个关键问题: 在只有观测数据的时候,怎么构建价格弹性,现在来看这就是一个反事实推断的问题,不仅是如何做的问题,还有如何评估的问题。长周期的规划决策问题怎么建模 & 求解&#…

基于状态机的单片机编程

前言 在设计锂离子电池充电器时,对于以前的根据系统状态进行判断,置标志位的方法,会显得程序臃肿,且架构混乱,变量交错复杂,移植困难。 所以结合实际项目,给出了一种基于状态机的编程方法。 …

线程上下文切换

线程上下文切换 巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式…

对String类的操作 (超细节+演示)

[本节目标] 1.认识String类 2.了解String类的基本用法 3.熟练掌握String类的常见操作 4.认识字符串常量池 5.认识StringBuffer和StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针&…

差异计算基础知识 - 了解期末业务操作、WIP 和差异

原文地址:Basics of variance calculation-Understanding Period End activities, WIP and Variances | SAP Blogs 大家好, 这是我在成本核算方面的第六份文件,旨在解释期末的差异计算和相关活动。 我将引导您完成期末活动和差异计算。在本文…

Spring Cloud Gateway 网关的基础使用

1. 什么是网关?网关有什么用? 在微服务架构中,网关就是一个提供统一访问地址的组件,它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发,将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…

前后端数据传输格式(下)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上篇主要复习了HTTP以及…

解释AI决策,这10个强大的 Python 库记得收藏!

本文整理了10个常用于可解释AI的Python库,方便我们更好的理解AI模型的决策。 什么是XAI? XAI(Explainable AI)的目标是为模型的行为和决策提供合理的解释,这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅…

鸿蒙生态开发就业前景到底好不好

鸿蒙生态开发是指基于华为自主研发的操作系统鸿蒙(HarmonyOS)进行应用程序开发和生态建设。目前,鸿蒙生态开发的前景非常好,原因如下:做鸿蒙应用开发到底学习些啥? (qq.com) 1:政府支持&#x…

高德地图vue实现自定义标点热力图效果(缩放时展示不同数据)

高德地图插件引入省略。。。样式和vue基础组件省略。。。 如果每个标点没有数值,则可以用点聚合来实现功能下面例子,每个标点会有按市统计的数值,而且缩放一定程度时,需要展示按省统计的标点,因此需要自定义标点样式和…

Ubuntu中编译出Windows的可执行程序(.exe)

1、前言 在嵌入式开发中,交叉编译是很常见的情况,如果你把Windows电脑也看做一块高性能的开发板,那在Ubuntu中编译出Windows上运行的可执行程序也是很好理解的行为。 2、安装mingw64环境 sudo apt-get install mingw-w64 3、测试编译链是否安…

特权FPGA 学习笔记

存储器可用于异步时钟域的信号处理,双口RAM多用于交互式数据,FIFO多用于单向数据传输;以task的方式封装testbench子程序,以提高复用程度;模板中,vho是vhdl模板,veo是verilog模板;run…

第七届中老越三国丢包狂欢节暨2023年中老越三国(普洱)边境商品交易会新闻发布会在昆明召开

12月8日,第七届中老越三国丢包狂欢节暨2023年中老越三国(普洱)边境商品交易会新闻发布会在昆明召开。据悉,本届丢包节暨边交会将于2023年12月22日至26日在普洱市江城哈尼族彝族自治县举办。 发布会现场 中老越三国丢包狂欢节自200…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

在使用php对mysql进行连接的过程中,出现了Fatal error: Uncaught Error: Class "mysqli" not found in的问题 解决方案 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己…

v4l2接收流程

内核media驱动目录结构 目录media/driver,子目录说明如下,主要列举本文中使用到的目录 目录功能I2C摄像头,解串器(max9296/9295等)platform控制器的驱动,例如mipi控制等v4l2_coreioctl 入口等media\common\videobuf2…

哈希表的几种实现方式与比较

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 哈希表概述 哈希表(Hash Table)是一种常用的数据结构,用于实现键值对的映射关系。它通过哈希函数将键映射到一个特定的索引位置&#xf…

Spring Boot 3 整合 Mybatis-Plus 实现动态数据源切换实战

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…