2

我有二部图,我想提取该图的二部补码。这是此链接中解释的 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-顶点

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

这是我尝试过的代码:

from networkx.algorithms.operators.unary import complement

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

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

4

2 回答 2

2

尝试这个:

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)

这使用了差异,它返回一个图,其边是边,G但不是B


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

于 2019-05-29T13:40:30.927 回答
0

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

from networkx import *
import networkx as nx
c=nx.complete_bipartite_graph(2,5)
cp=nx.complement(c)
nx.draw(cp)
于 2020-08-20T11:48:05.673 回答