news 2026/5/14 22:21:17

Go语言图算法:DFS与BFS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Go语言图算法:DFS与BFS

Go语言图算法:DFS与BFS

1. 图的表示

type Graph struct { vertices map[int][]int } func NewGraph() *Graph { return &Graph{ vertices: make(map[int][]int), } } func (g *Graph) AddEdge(v1, v2 int) { g.vertices[v1] = append(g.vertices[v1], v2) g.vertices[v2] = append(g.vertices[v2], v1) }

2. DFS实现

func (g *Graph) DFS(start int) []int { visited := make(map[int]bool) result := []int{} g.dfsHelper(start, visited, &result) return result } func (g *Graph) dfsHelper(v int, visited map[int]bool, result *[]int) { visited[v] = true *result = append(*result, v) for _, neighbor := range g.vertices[v] { if !visited[neighbor] { g.dfsHelper(neighbor, visited, result) } } }

3. BFS实现

func (g *Graph) BFS(start int) []int { visited := make(map[int]bool) queue := []int{start} result := []int{} visited[start] = true for len(queue) > 0 { v := queue[0] queue = queue[1:] result = append(result, v) for _, neighbor := range g.vertices[v] { if !visited[neighbor] { visited[neighbor] = true queue = append(queue, neighbor) } } } return result }

4. 总结

图算法是解决复杂问题的重要工具,DFS和BFS是两种最基本的图遍历算法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 22:21:10

72.人工智能实战:RAG 多路召回怎么做?从单一向量检索召回不足到 BM25、向量、标签与重排融合

人工智能实战:RAG 多路召回怎么做?从单一向量检索召回不足到 BM25、向量、标签与重排融合 一、问题场景:向量检索很智能,但就是找不到关键文档 很多 RAG 系统最开始只用向量检索: query → embedding → vector search → top_k docs这个方案简单、通用,语义效果也不错…

作者头像 李华
网站建设 2026/5/14 22:20:59

深度观察:江苏工厂短视频代运营的几个真实细节

江苏工厂短视频代运营的几个真实细节大家好,我是深耕江苏工厂短视频代运营领域的老朋友,今天想跟大家聊聊这个行业的一些真实细节。这些年,我见证了无数工厂在短视频营销上的起起伏伏,也积累了不少经验和教训。希望通过我的分享&a…

作者头像 李华
网站建设 2026/5/14 22:20:29

终极OBS音频增强指南:3步集成VST插件实现专业级实时音频处理

终极OBS音频增强指南:3步集成VST插件实现专业级实时音频处理 【免费下载链接】obs-vst Use VST plugins in OBS 项目地址: https://gitcode.com/gh_mirrors/ob/obs-vst OBS-VST是一个革命性的开源插件,它让你能够在OBS Studio中直接加载和使用数千…

作者头像 李华
网站建设 2026/5/14 22:20:01

RFSoC应用笔记 - RF数据转换器 -12- 时钟网络与同步策略深度解析

1. RFSoC时钟网络架构解析 第一次接触RFSoC的时钟网络时,我被它复杂的架构搞得一头雾水。直到在项目中实际调试过几次后,才真正理解这套系统的精妙之处。RFSoC的时钟网络就像城市交通系统,需要有主干道、支路和精确的交通信号控制&#xff0c…

作者头像 李华
网站建设 2026/5/14 22:19:55

Linux之(28)networkctl实战:从状态查询到网络配置

1. networkctl命令基础入门 第一次接触networkctl这个命令时,我正面临一台Linux服务器网络连接异常的紧急故障。当时ifconfig和ip命令都显示网卡已启动,但就是无法访问外网。一位资深运维同事轻描淡写地说:"试试networkctl status"…

作者头像 李华