第一个符号:
让d[v]
是BFS树的根与顶点v
之间的距离
This book陈述以下引理:
在BFS期间,队列Q
包含顶点v_1, v_2, ..., v_r
,其中
v_1
是Q
的头v_r
是Q
的尾巴然后:
d[v_r] <= d[v_1] + 1
d[v_i] <= d[v_(i + 1)]
for i = 1, 2, ..., r - 1
我不明白第一句话。换句话说,BFS添加到队列的最后一个顶点v_r
与root
的距离比我们添加到队列的第一个顶点v_1
短。视觉上:
root
/ \
v_1 v_2
/
v_3
/
v_r
这怎么可能?
答案 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_a
或v_b
同时在队列中,但是v_c
可以。
d[v_r]
可能比d[v_1]
少少是,如果您排队了先前访问的顶点。