我试图制作一个在O(V + E)时间运行的算法,用于无向图G =(V,E),给定两个顶点a和b,找到一个顶点c,其去除将导致a和b彼此断开连接。作为其中的一部分,我试图争辩说,如果从a到b的最短路径长度大于V / 2,那么G必须有一个' c'对于a和b。
我可以直观地看到一个图表,为什么a到b的长度如果大于v / 2必须有a和b的阻塞点。我想原因是因为如果长度小于或等于v / 2,那么a和b之间可能相互连接而没有另一个顶点?
对于算法,我考虑使用Dijkstra算法找到a和b之间的最短路径,然后沿着该路径选择一个顶点并将其移除并检查路径是否相同。这是解决问题的方法还是有更好的方法?
答案 0 :(得分:1)
因为图表是无向的,所以顶点c
存在,当且仅当c
是brigde时,这意味着,对于从a
到{{1}的所有路径反之亦然,他们都必须通过b
,
所以你不需要使用Dijkstra,只需使用简单的广度优先搜索,并尝试BFS找到的路径上的所有顶点,如果删除导致a和b断开连接,它将是{{1} }。