[英]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.