首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Networkx图类型

Networkx图类型
EN

Stack Overflow用户
提问于 2016-01-25 17:00:03
回答 1查看 709关注 0票数 0

只有当集群中的每个组件都与每个其他组件(定向或非)连接时,我才想找到一种获得“集群”的方法。

这意味着,对于一个无方向图,要获得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;我的代码如下所示:

代码语言:javascript
复制
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'}

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 17:36:57

啊,我真傻。我正在寻找的术语是networkx中的“集团”:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34998064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档