BFS分析

时间:2011-10-20 11:32:29

标签: algorithm breadth-first-search

我有来自Cormen的以下BFS功能。

从s到v的最短路径距离路径(s,v)的定义,作为从顶点s到顶点v的任何路径中的最小边数,否则,如果没有从s到v的路径。从s到v的长度路径(s,v)的长度被认为是从s到v的最短路径。

以下是给出的引理

设G =(V,E)是有向或无向图,并且s属于V是任意顶点。然后,对于任何边缘(u,v)E,

路径(s,v)< =路径(s,u)+ 1。

我的问题是为什么我们必须在上面的公式中得到< =我教“=”没关系,任何人都可以告诉我一个scenrio为什么我们需要< =?

以下是BFS算法

Leema 2:

设G =(V,E)是有向或无向图,并假设BFS在给定源顶点上运行,G属于V.然后在终止时,对于每个顶点v属于V,该值由BFS计算的d [v]满足d [v]> = path(s,v)。

证明:

我们对顶点放入队列Q的次数使用归纳法。我们的归纳假设是d [v]> =所有v的路径(s,v)属于V。

归纳的基础是在BFS的第8行中将s置于Q之后的情况。

归纳假设在这里成立,因为d [s] = 0 =路径(s,s)和d [v] =所有v的路径(s,v)属于V - {s}。

我的问题是作者的意思是“我们在顶点放入队列Q的次数上使用归纳法”?它是如何与归纳假设相关的?

谢谢!

BFS(G,s)
1  for each vertex u  V[G] - {s}
2       do color[u]  WHITE
3          d[u]  
4          [u]  NIL
5  color[s]  GRAY
6  d[s]  0
7  [s]  NIL
8  Q  {s}
9  while Q  
10      do u  head[Q]
11         for each v  Adj[u]
12             do if color[v] = WHITE
13                   then color[v]  GRAY
14                        d[v]  d[u] + 1
15                        [v]  u
16                        ENQUEUE(Q,v)
17         DEQUEUE(Q)
18         color[u]  BLACK

1 个答案:

答案 0 :(得分:6)

对于第一个问题,请考虑只有三个顶点的完整图形。在这个图中,路径(s,v)=路径(s,u)+ 1?

是真的