图搜索算法:深度优先搜索与广度优先搜索解析
在图的搜索领域,深度优先搜索(DFS)和广度优先搜索(BFS)是两种常用的算法。它们在不同的场景下各有优势,下面将详细介绍这两种算法。
深度优先搜索(DFS)
在深度优先搜索中,如果当前顶点不是要搜索的目标,我们会递归调用 dfs_traversal 函数对其相邻顶点进行搜索:
dfs_traverse(adjacent_vertex, visited_vertices)
同时,我们会传入 visited_vertices 哈希表,以便后续调用能够访问它。
如果要使用深度优先搜索来查找特定顶点,可以使用以下改进后的函数:
def dfs(vertex, search_value, visited_vertices={})
# 如果当前顶点就是我们要搜索的顶点,直接返回
return vertex if vertex.value == search_value
visited_vertices[vertex.value] = true
vertex.adjacent_vertices.each do |adjacent_vertex|
next if visited_vertices[adjacent_vertex.value]
# 如果相邻顶点是我们要搜索的顶点,直接返回
return adjacent_vertex if adjacent_ver
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



