0

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

从 s 到 v 的最短路径距离 path(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 。

我的问题是为什么我们必须在上面的公式中有 <= ,我教过 "=" 是可以的,谁能告诉我一个场景为什么我们需要 <= ?

下面是BFS算法

利马 2:

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

证明:

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

归纳的基础是在 BFS 的第 8 行将 s 放入 Q 之后的情况。

归纳假设在这里成立,因为 d[s] = 0 = path(s, s) 并且 d[v] = path (s, v) 对于所有 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
4

1 回答 1

6

对于您的第一个问题,请考虑一个只有三个顶点的完整图。在这张图中,path(s,v) = path(s,u) + 1 是真的吗?

于 2011-10-20T12:24:51.510 回答