图遍历算法:广度优先搜索、深度优先搜索及其应用
1. 广度优先搜索(Breadth-First Search)
广度优先搜索(BFS)是一种重要的图遍历算法。在遍历过程中,图中的每个节点都会从“未发现”状态转变为“已发现”状态。在无向图的广度优先搜索中,我们为每条边指定一个方向,从发现者节点 u 指向被发现节点 v ,并将 u 记为 v 的父节点 p[v] 。除根节点外,每个节点都有唯一的父节点,这就定义了图顶点上的一棵树。这棵树定义了从根节点到树中每个其他节点的最短路径,这一特性使得广度优先搜索在最短路径问题中非常有用。
以下是基本的广度优先搜索算法:
BFS(G,s)
for each vertex u in G
state[u] = "undiscovered"
p[u] = nil, i.e. no parent is in the BFS tree
state[s] = "discovered"
p[s] = nil
Q = [s]
while Q is not empty
u = dequeue[Q]
process vertex u as desired
for each neighbor v of u
process edge (u,v) as desired
if state[v]
超级会员免费看
订阅专栏 解锁全文

977

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



