如何使用节点删除顶级集团

时间:2018-06-26 10:16:32

标签: python networkx

所以我用clustering来获得图中所有节点的聚类系数,像这样

G=nx.complete_graph(40)
clus_coeff = nx.clustering(G)

现在,我要删除包含这些节点的最大的集团。我只想删除按聚类系数排序的前5个节点的派系。我不确定如何进行

1 个答案:

答案 0 :(得分:3)

首先,如果要从整个图形中删除最大的集团,您将最终得到一个空图形。

第二,您可以使用networkx的clique_containing_node函数来获取包含特定节点的集团列表,然后像这样删除它们

clus_coeff = nx.clustering(G)

for node in clus_coeff.keys():
    #Check if the node is present in the updated graph
    if G.has_node(node):
        #Find all cliques containing the node
        all_cliques = nx.cliques_containing_node(G,node)
        #If no cliques found, then continue
        if len(all_cliques)<1:
            continue
        elif len(all_cliques)==1:
            #If only one clique is present
            largest_cliq = all_cliques
        else:
            #Find the larges sized clique
            largest_cliq = max(all_cliques, key=len)
        #Remove the nodes 
        for v in largest_clq:
            G.remove_node(v)