今天我在图表中学习了关节点和桥梁(基本上是无向的)。
我读到的文字(史蒂文哈利姆的一本书)说
当我们位于顶点
u
且v
是其邻居时,如果dfs_low(v) >= dfs_num(u)
则u
是切割顶点。
然而,
检查时条件变为
dfs_low(v) > dfs_num(u)
桥。
但我无法弄清楚为什么平等从第二种情况(在桥梁中)消失了。 请帮帮我。
PS:dfs_num(i)
为dfs中的顶点编号。
dfs_low(i)
告诉我可以从i到达的最低编号顶点。
答案 0 :(得分:3)
假设在被认为是关键点的情况下,但是u-v不是桥梁。然后除了通过u-v链路之外,还存在从v到u的路径;因此,从包含u的双连接组件传递到包含v的组件的DFS最终将再次到达u,从而在dfs_low(v) >= dfs_num(u)
中提供相等性。 (不等式的大于部分是因为你是一个清晰点,所以v的路径不能通过u而得到较低编号的顶点,而DFS不会回溯这些路径。)
但是如果u-v也是一个桥,那么v和u之间不存在任何其他路径,而不是桥u-v。所以DFS再也不会到达你了; DFS到达v后的所有dfs_num
值都将严格大于dfs_num(u)
。