BFS最短路径引理22.3

时间:2018-12-17 10:53:56

标签: graph breadth-first-search

第一个符号:

d[v]是BFS树的根与顶点v之间的距离

This book陈述以下引理:

在BFS期间,队列Q包含顶点v_1, v_2, ..., v_r,其中

  • v_1Q的头
  • v_rQ的尾巴

然后:

  1. d[v_r] <= d[v_1] + 1
  2. d[v_i] <= d[v_(i + 1)] for i = 1, 2, ..., r - 1

我不明白第一句话。换句话说,BFS添加到队列的最后一个顶点v_rroot的距离比我们添加到队列的第一个顶点v_1短。视觉上:

      root
      /  \
    v_1  v_2
    /
   v_3
   /
 v_r

这怎么可能?

1 个答案:

答案 0 :(得分:0)

您误读了声明。

d[v_r] <= d[v_1] + 1

表示v_r的深度不能大于v_1的深度。 v_r可以在BFS树的同一级别上,也可以在下面的级别上,但不能超过此级别。稍微重新标记树,

      root
      /  \
    v_a  v_b
    /
   v_c
   /
 v_x

v_x永远不能与v_av_b同时在队列中,但是v_c可以。

d[v_r]可能比d[v_1]是,如果您排队了先前访问的顶点。