【问题标题】:How to generate a fully connected subgraph from node list using python's networkx module如何使用 python 的 networkx 模块从节点列表生成完全连接的子图
【发布时间】:2012-05-25 20:29:00
【问题描述】:

我需要用networkx 生成一个完全连接的子图,从我要连接的节点列表开始。基本上,我希望传递给函数的列表中的所有节点都相互连接。

我想知道是否有任何内置函数可以实现这一点(我还没有找到)? 还是我应该想一些算法?

非常感谢。

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    我不知道有什么方法可以做到这一点,但是您可以轻松地模仿 networkx 的 complete_graph() 方法并稍微改变它(几乎就像一个内置函数):

    import networkx
    import itertools
    
    def complete_graph_from_list(L, create_using=None):
        G = networkx.empty_graph(len(L),create_using)
        if len(L)>1:
            if G.is_directed():
                edges = itertools.permutations(L,2)
            else:
                edges = itertools.combinations(L,2)
            G.add_edges_from(edges)
        return G
    
    S = complete_graph_from_list(["a", "b", "c", "d"])
    print S.edges()
    

    【讨论】:

    • 谢谢,是的,我应该寻找这些排列/组合函数 :)
    • 当我用 len(L)>1 替换 n>1 时,这对我有用
    • 有使用nx.complete_graphnx.relabel_nodes 的直接方法。看我的回答。
    【解决方案2】:

    有一个用于创建全连接(即完整)图的函数,nameley complete_graph

    import networkx as nx
    g = nx.complete_graph(10)
    

    它需要一个整数参数(图中的节点数),因此您无法控制节点标签。我还没有找到自动执行此操作的功能,但使用itertools 很容易:

    from itertools import combinations
    
    nodes = ['A', 'B', 'C', 'D', 'E']
    edges = combinations(nodes, 2)
    g = nx.Graph()
    g.add_nodes_from(nodes)
    g.add_edges_from(edges)
    

    combinations(nodes, 2) 将创建包含 nodes 的所有对组合的 2 元素元组,然后将其用作图中的边。

    但是,此解决方案仅对无向图有效。查看zubinmehta's solution 了解更通用的方法。

    【讨论】:

      【解决方案3】:

      您可以使用 networkx 命令直接生成具有整数节点的 clique,然后有一个简单的命令可以使用任何其他可散列名称重新标记节点。

      import networkx as nx
      L=["hello", "world", "how", "are", "you"]
      G=nx.complete_graph(len(L))
      nx.relabel_nodes(G,dict(enumerate(L)), copy = False) #if copy = True then it returns a copy.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 2019-11-27
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 2017-07-29
        • 2019-03-29
        相关资源
        最近更新 更多