繁体   English   中英

在无向连通图中,如何找到一组顶点,以去除哪些图断开?

[英]In undirected connected graph how to find set of vertices removing which graph becomes disconnected?

我知道在undirected connected graph articulation point是去除了哪个图断开连接后的顶点。 对于Java代码,我点击了以下链接http://algs4.cs.princeton.edu/41undirected/Biconnected.java.html

现在假设上面有图- 在此处输入图片说明

在上面的图中没有articulation points因为通过删除任何单个顶点不会使图断开连接。 但是我们可以通过删除1个以上的顶点来使图断开连接,例如,如果我们删除4,6个顶点,则图断开连接。

如何找到一组顶点,以便在删除这些顶点后断开连接。 可以说有一个顶点可以移除的限制为3。这意味着我们一次不能移除3个以上的顶点以使图断开。

我在想的方法-

步骤1-运行算法以找到单个关节点。

第2步-如果在第1步之后没有关节点,我们从图中删除一个顶点并运行关节点算法,则对图中的所有顶点进行此操作。 使用此方法,我们可以找到2个顶点(第一个顶点是在运行算法之前删除的顶点,第二个顶点是在运行算法之后找到的顶点),其删除将使图形断开连接,并且程序将停止,因为我们找到了一组顶点。

第3步-如果在第2步中找不到顶点集,则从图形中删除2个顶点并运行铰接点算法。 我们在删除每对图顶点之后运行此算法。 使用它,我们可以找到3个顶点的集合,从而删除了将断开的图形。 如果仍然没有断开图形连接,我们将不再运行程序,因为可以删除的顶点数限制为3。

我认为有更好的方法。

在删除断开连接的图形后如何找到最小的顶点集。

有什么更好的方法来找到一组顶点,从而删除哪些图断开。

有关我知道的用于计算最小顶点切割的最佳算法,请参见http://www.cs.colorado.edu/~hal/Papers/expandersC.ps.gz

对于具有度(即邻居计数)为d的任何顶点,删除其所有邻居d将断开图的连接(除非那些是图中仅有的其他顶点)。 这样一来,您就可以立即确定需要删除的顶点数量的上限,以及可以删除以达到该限制的实际顶点数量:只需查找最小度数的顶点,然后删除其所有邻居。

在示例图中,您知道这是最佳解决方案,因为存在度数为2的顶点,并且您已经排除了尺寸为1的解决方案,因为您发现该图是双向连接的(即,不包含任何铰接点)。 但是,总的来说,可能会做得比这个上限更好:例如,考虑一个图,该图由k个顶点上的2个小集团副本以及2个附加边(u1,v1)和(u2,v2)组成,其中第一个集团的u1和u2,第二个集团的v1和v2。 即使最小度k可以任意设置,也可以通过仅删除u1和u2(或仅删除v1和v2)来断开连接。

暂无
暂无

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

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