我在networkx中有一个非常特殊的图形问题:
我的有向图有两种不同类型的节点(我将称它们为I和T),它只在I-T和T-I之间使用边构建(因此T不与其他T连接,与i连接相同)。
现在,我需要模拟一个具有相同行为的新图:我有一定数量的I和T,并且let之间的边界存在一定的概率(也是对于p_i,但概率不同,我们称它们为p_i和p_o)。
所以我的问题是我不能用for循环来迭代,因为这两个循环都很大(我现在分析的数据是5000 T和5000 I的,但可能会增加到300000个),而我的pc无法处理这个问题。
在这种情况下创建图形的最佳方法是什么?
发布于 2021-10-12 16:17:58
这就是@ravenspoint让我用他的评论达成的解决方案。
对于T=5000和I=5000,它的工作方式是在I中执行for loops,在T中执行一个,并使用numpy中的np.random.binomial(1, pi, nI)和np.random.binomial(1, po, nO),其中nO和nI是真实图形中O和I的长度,如果E 113这些数组是1E 214,则创建边框。
如果po=pi (在我的示例中就是这样),那么@Stef解决方案也能工作,您可以使用nx.bipartite.random_graph(countadd, countt, p, seed=None,directed=True)
https://stackoverflow.com/questions/69541836
复制相似问题