只有当集群中的每个组件都与每个其他组件(定向或非)连接时,我才想找到一种获得“集群”的方法。
这意味着,对于一个无方向图,要获得A、B、C、D的集群,我需要指定6个连接:
(A,C)(A,B)(A,D)(C,B)(C,D)(B,D)

但是,如果我指定
(A,C)(A,B)(A,D)(C,B)(C,D)

我只想给我一个A,B,C,然后D的簇,因为A,B,C都是完全连通的,而D不是。
我无法让它真正地用于networkx;我的代码如下所示:
from pylab import *
import networkx as nx
data_edges = [
('A','C'),
('A','B'),
('A','D'),
('C','B'),
('C','D')
]
# Add edges
G=nx.Graph()
G.add_edges_from(data_edges)
# Cluster
connections_nx = nx.biconnected_components(G)
print("Bi-connected")
for con in connections_nx:
print(con)
#Draw
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_color='r')
nx.draw_networkx_edges(G,pos)
nx.draw_networkx_labels(G,pos,font_size=16)
plt.axis('off')
show()
plt.clf()因为这将产生以下结果:
{'D','A','B','C'}
而不是:
{'A','B','C'} {'A','C','D'}
发布于 2016-01-25 17:36:57
啊,我真傻。我正在寻找的术语是networkx中的“集团”:
from pylab import *
import networkx as nx
data_edges = [
('A','C'),
('A','B'),
('A','D'),
('A','E'),
('B','C'),
('B','E'),
('D','E'),
('C','F'),
('C','G'),
('F','G'),
('Y','X')
]
# Add edges
G=nx.Graph()
G.add_edges_from(data_edges)
cliq = nx.find_cliques(G)
in_cliq = set()
for c in cliq:
for x in c:
in_cliq.add(x)
print(in_cliq)https://stackoverflow.com/questions/34998064
复制相似问题