查找所有紧密连接的元素

时间:2019-07-25 19:48:12

标签: python numpy graph

我有一个看起来像这样的列表:

elements=[(1,2),(1,3),(2,3),(3,4),(4,5),(3,5),(5,6),(12,13)]

我想列出所有紧密联系的精英。

对于给定的列表,元素将为:[[1,2,3],[3,4,5]]

请提出我该怎么做

1 个答案:

答案 0 :(得分:1)

请使用Kosaraju的算法在任何图中查找强连接的组件。 我想您可能会在geeksforgeeks网站上找到它。像这样。

假设有5个节点,从0到4。 0,1,2牢固连接,3和4牢固连接。 3连接表示0。

然后算法进行如下操作:(来源:https://www.geeksforgeeks.org/strongly-connected-components/

1)创建一个空堆栈“ S”,并进行图的DFS遍历。在DFS遍历中,在为顶点的相邻顶点调用递归DFS之后,将顶点推入堆栈。在上图中,如果从顶点0开始DFS,则堆栈中的顶点分别为1,2,4,3,0。

2)反转所有圆弧以获得转置图。

3)当S不为空时,一个接一个地从S弹出顶点。让弹出的顶点为“ v”。将v作为源并执行DFS(调用DFSUtil(v))。从v开始的DFS会打印v的强连接部分。在上面的示例中,我们以0、3、4、2、1(从堆栈中逐个弹出)的顺序处理顶点。

编辑:无向图的SCC没有意义。从理论上讲,仅针对有向图定义了SCC。