Graph networkx随机图,二部集

Graph networkx随机图,二部集,graph,networkx,bipartite,Graph,Networkx,Bipartite,我正在尝试使用networkx创建一个统一的随机相交图。根据文档,函数uniform_random_intersection_graph(n,m,p)创建了这样一个图,其中n个是第一个二部集的节点,m个是第二个二部集的节点 import networkx as nx G = nx.uniform_random_intersection_graph(10,3,0.2) 但是当我使用 G.nodes() 仅显示和显示n个节点的集合 G.nodes.data() 返回 [(0, {'bipar

我正在尝试使用networkx创建一个统一的随机相交图。根据文档,函数uniform_random_intersection_graph(n,m,p)创建了这样一个图,其中n个是第一个二部集的节点,m个是第二个二部集的节点

import networkx as nx
G = nx.uniform_random_intersection_graph(10,3,0.2) 
但是当我使用

G.nodes() 
仅显示和显示n个节点的集合

G.nodes.data()

返回

[(0, {'bipartite': 0}), (1, {'bipartite': 0}), (2, {'bipartite': 0}), (3, {'bipartite': 0}), (4, {'bipartite': 0}), (5, {'bipartite': 0}), (6, {'bipartite': 0}), (7, {'bipartite': 0}), (8, {'bipartite': 0}), (9, {'bipartite': 0})]

如何遍历第二个二部集(m)的节点?

您确定要创建相交图吗?我想你可能会尝试创建一个随机二部图,其中一个集合有10个节点,另一个集合有3个节点,概率为0.2,如果你愿意的话

import networkx as nx
G = nx.bipartite.random_graph(10,3,0.2) 

您正在创建的图开始时是一个二部图,但是如果它们在二部图中共享一个邻居,那么它将使用第一组节点并连接一对节点。所以它不是一个二部图,也没有第二组节点。查看
G.edges()
了解更多信息。

看起来您想要的是随机二部图而不是随机相交图。您能解释一下“随机相交图”是什么意思吗?这里有一个问题,你没有期望得到你得到的输出,这向我表明,你对随机相交图应该是什么有不同的想法,与networkx的想法不同。集合N中的节点u与集合M中的节点v有边。集合N中的节点w与集合M中的节点v具有边。然后有一条边(u,w),这样你就有了一个集N和集M的原始二部图。现在你已经用
(u,w)
样式的边创建了你的新图。
M
集合不会出现在新图形中。在您的示例中,
v
将不存在于最终的图中。是的,我想要的是一个随机相交图G(n,m,p)。我明白了,但是当我使用G.nodes()时,只显示集合n(10个节点)的节点,而不显示集合m的任何节点。同样,当我使用G.draw()时也会发生同样的情况,只显示了n集合的10个节点。我发现“m”集合是属性而不是节点。我如何列出它们?您正在查找
print(G.nodes(data=True))
print(G.nodes(data='bipartite'))
,但它们都在同一个位置(bipartite=0),因为代码投影了二部随机图,请参见统一随机交叉的来源k,为了返回m集,我还编辑了uniform_random_相交函数。