如何得到networkx/python中的二分补图?
How to get the bipartite complement graph in networkx/python?
我有二分图,我想提取该图的二分补集。这是 link 中解释的 G' 图:
我尝试使用 Networkx 库的补码算法来做到这一点,但我的顶点 A 和 B 之间存在不应连接的边,因为在二分图中,同一组顶点之间没有边。
这是我试过的代码:
from networkx.algorithms.operators.unary import complement
B = bipartite.random_graph(5, 7, 0.2)
B = complement(B)
但是我已经连接到同一组顶点。是否有处理它的 networkx 函数或 Python 函数?
试试这个:
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,其中 return 是一个图,其边是 G
中的边而不是 B
。
您所做的问题是 complement
不是 return 二分补码,而是完整补码。它包含原始图中未连接的所有对之间的边。
使用 * 帮助我们从 networkx 包中导入所有模块。我们在 networkx 包中有一个名为 complement 的函数,我在下面给出的代码中使用了它。
from networkx import *
import networkx as nx
c=nx.complete_bipartite_graph(2,5)
cp=nx.complement(c)
nx.draw(cp)
我有二分图,我想提取该图的二分补集。这是 link 中解释的 G' 图:
我尝试使用 Networkx 库的补码算法来做到这一点,但我的顶点 A 和 B 之间存在不应连接的边,因为在二分图中,同一组顶点之间没有边。
这是我试过的代码:
from networkx.algorithms.operators.unary import complement
B = bipartite.random_graph(5, 7, 0.2)
B = complement(B)
但是我已经连接到同一组顶点。是否有处理它的 networkx 函数或 Python 函数?
试试这个:
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,其中 return 是一个图,其边是 G
中的边而不是 B
。
您所做的问题是 complement
不是 return 二分补码,而是完整补码。它包含原始图中未连接的所有对之间的边。
使用 * 帮助我们从 networkx 包中导入所有模块。我们在 networkx 包中有一个名为 complement 的函数,我在下面给出的代码中使用了它。
from networkx import *
import networkx as nx
c=nx.complete_bipartite_graph(2,5)
cp=nx.complement(c)
nx.draw(cp)