我有来自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
答案 0 :(得分:6)
对于第一个问题,请考虑只有三个顶点的完整图形。在这个图中,路径(s,v)=路径(s,u)+ 1?
是真的