强连通图

时间:2015-11-25 12:42:19

标签: algorithm graph computer-science

我有一张强烈关联的图表。我想删除边缘并检查是否仍然保持强连接。当我拿N =图表中的节点总数为10时,我感兴趣的大多数图表都有25个以上的边缘,很难一次性使用一个去除边缘。

如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:6)

如果您删除的边缘是( u - > v ),如果您可以找到 u 到 v 。您可以使用任何路径查找算法来检查这一点。

另一个选择是每次都从头开始运行连接检查算法;这样做并不重要,因为图表非常小。

对于较大的图形,有针对此问题设计的特殊数据结构。它被称为"动态连接":https://en.wikipedia.org/wiki/Dynamic_connectivity

答案 1 :(得分:1)

[编辑:由于JørgenFogh,DFS比Dijkstra更快地检查连接性]

如果您要删除的边缘是uv,请检查(例如使用DFS)是否存在路径u-> ...-> v。如果是这样,如果之前的图表仍然强烈连接。如果没有,那么它显然不再紧密联系。

这个想法是可以编辑先前使用边缘uv的两个顶点x和y之间的任何路径以使用新路径u-> ...-> v。简单地用这个新路径替换边缘uv可能会导致一些顶点被访问多次 - 但在这种情况下,路径包含一个或多个可以被移除的有向循环,直到剩余路径最多访问每个顶点一次。