BFS DFS 的理解与应用 --- 算法导论读书笔记

本文介绍了BFS和DFS两种图的搜索算法,BFS常用于寻找最短路径,如Prim最小生成树和Dijkstra算法。DFS则常用于遍历和回溯,例如拓扑排序和分解强连通分支。文章提供了相应的代码模板,并讨论了不同类型的边在DFS中的颜色表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先摘抄一段概述的话:

        搜索一个图是有序地沿着图的边访问所有顶点。图的搜索算法可以使我们发现图的很多结构信息。许多图的算法在开始时,都是通过搜索输入的图来获取结构信息。另外还有一些图的算法实际上是由基本的图搜索算法经过简单扩充而成。因此,图的搜索技术是图算法领域的核心。


BFS:

        是Prim最小生成树和Dijkstra单源最短路的原型。

        用三种颜色表示顶点:白色(未访问),灰色(已访问但子节点或许有未访问的白节点),黑色(已访问并子节点也已访问)。以此确保节点只被访问一次。

        用一个队列控制访问顺序。


代码模版:

BFS(G,s)

//初始化
for each u from V[G]-{s}
  do color[u] <- WHITE
       d[u] <- infinity
       pre[u] <- NIL
color[s] <- GRAY
d[s] <- 0
pre[s] <- NIL
Q <- empty
//开始bfs
ENQUEUE(Q,s)
while Q != empty
  do u <- DEQUEUE(Q)
    for each v from Adj[u]
      do if color[v] == WH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值