如何在networkx / python中获取二分补图?

时间:2019-05-29 13:30:23

标签: python graph networkx bipartite complement

我有二分图,我想提取该图的二分补。这是此链接中解释的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函数?

2 个答案:

答案 0 :(得分: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不会返回二分式补码,而是完整的补码。它包含原始图中未连接的所有线对之间的边。

答案 1 :(得分:0)

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

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