【问题标题】:How to get the bipartite complement graph in networkx/python?如何在networkx / python中获得二分补图?
【发布时间】:2019-05-29 13:30:23
【问题描述】:

我有二部图,我想提取该图的二部补集。这是此链接中解释的 G' 图:

https://www.quora.com/Given-a-bipartite-graph-how-can-I-find-its-subgraph-that-is-a-complete-bipartite-graph-and-has-the-most-vertices

我尝试使用 Networkx 库的补码算法来做到这一点,但我的顶点 A 和 B 之间的边不应该连接,因为在二分图中,同一组顶点之间没有边。

这是我尝试过的代码:

from networkx.algorithms.operators.unary import complement

B = bipartite.random_graph(5, 7, 0.2)
B = complement(B)

但是我已经连接到同一组顶点。是否有处理它的networkx函数或Python函数?

【问题讨论】:

    标签: python graph networkx bipartite complement


    【解决方案1】:

    试试这个:

    import networkx as nx
    B = nx.bipartite.random_graph(5, 7, 0.2)
    G = nx.bipartite.complete_bipartite_graph(5,7)   #or use random_graph with probability 1
    H = nx.difference(G,B)
    

    这使用difference,它返回一个图,其边是G 中的边,但不是B


    您所做的问题是complement 不返回二分补码,而是全补码。它包含原始图中未连接的所有对之间的边。

    【讨论】:

    • 谢谢。如果我从头开始创建一个二分图,并且我想将其转换为一个完整的二分图以产生影响,该怎么办?
    • 如果我正确理解了您的问题:您可以按照我展示的方式执行相同的操作,并使用您自己的步骤来创建B。您需要注意B 中的节点名称将与G 中的名称相对应。如果需要,有一些方法可以重命名 G 中的节点。
    【解决方案2】:

    使用 * 可以帮助我们从 networkx 包中导入所有模块。我们在networkx包中有一个叫做补码的函数,我在下面给出的代码中使用了它。

    from networkx import *
    import networkx as nx
    c=nx.complete_bipartite_graph(2,5)
    cp=nx.complement(c)
    nx.draw(cp)
    

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 1970-01-01
      • 2015-01-20
      • 2022-01-05
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      相关资源
      最近更新 更多