繁体   English   中英

删除无向图中的一个节点,该节点破坏了其他两个节点之间的路径

[英]Removing a node in an undirected graph that destroys a path between two other nodes

我需要解决当前正在解决的问题,这涉及到在无向图中找到节点v,将其删除后将破坏其他两个节点s和t之间的所有路径。

假设一个n节点无向图G =(V,E)包含两个节点s和t,使得s和t之间的距离严格大于n / 2。 证明必须存在某个节点v,该节点不等于s或t,以便从G中删除v会破坏所有st路径。 (换句话说,通过删除v从G获得的图不包含从s到t的路径。)

给出一个运行时间为O(m + n)的算法来找到这样的节点v。
(对于解决方案,您可以使用纯英语或伪代码。)

我对此的理解是,该解决方案将涉及创建广度优先搜索以找到节点v并将其删除,但是我不确定如何证明删除该节点首先存在,从而删除该节点会破坏所有的圣路。

首先证明部分:

假设v节点不存在,这意味着至少有两条路径使用从s到t完全不同的节点,并且距离大于n /2。这是不可能的,因为您甚至没有足够的节点数来满足这两个条件路径。 因此,这与我们关于v节点存在的假设相矛盾。

第二部分算法:

使用双向BFS。 如果从s和t开始搜索,则存在v节点,因此它们肯定会在v节点相遇。 在最坏的情况下,您会遍历所有V和E,因此它就是O(V + E)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM