在 networkx 中模拟图模型

Simulate graph model in networkx

我在 networkx 中有一个非常具体的图形问题:

我的有向图有两种不同类型的节点(我将它们称为 IT)并且它仅由边构建在 I-TT-I 之间(因此 T 不与其他 T 连接,与 I 相同)

现在我需要模拟一个具有相同行为的新图:我有一定数量的 I 和 T,并且 I-T 之间的边以一定的概率存在(对于 T-I 也是如此,但概率不同,我们称它们为 p_ip_o).

所以我的问题是我无法同时为 I 和 T 使用 for 循环进行迭代,因为两者都非常大(我现在正在分析的数据是 5000 T 和 5000 I,但可能会增加每个最多 300000 个),我的电脑无法处理。

在这种情况下创建图形的最佳方法是什么?

这是 @ravenspoint 让我在他的评论中找到的解决方案。

对于 T=5000I=5000 它通过在 I 中执行 for loops 和在 T 中执行一个并通过使用 np.random.binomial(1, pi, nI)np.random.binomial(1, po, nO) 来自 numpy,其中 nOnI 是实际图中 OI 的长度,如果 [=32= 则创建边]这些数组是1.

如果 po=pi(正如我的示例中发生的那样),@Stef 解决方案也有效,您可以使用 nx.bipartite.random_graph(countadd, countt, p, seed=None,directed=True)