我已经用图论的术语提出了这个问题,但是概念化不是必需的。我要使用Python尝试做的是产生一个零和一的矩阵,其中每一行都具有相同的个数,而每一列都具有相同的个数。当行数(发送节点)不等于列数(接收节点)时,行数将与列数不同-这是我允许的。在中执行此操作对我来说很有意义numpy,但可能还有其他软件包(如networkx?)会有所帮助。这是我要用所需的输入和输出编写的函数:n_pre = 4 # number of nodes available to send a connectionn_post = 4 # number of nodes available to receive a connectionp = 0.5 # proportion of all possible connections that existmat = generate_mat(n_pre, n_post, p)print mat输出将是,例如:[[0, 1, 0, 1], [1, 0, 1, 0], [1, 1, 0, 0], [0, 0, 1, 1]]注意,每一列和每一行都有两个。除此约束外,这些函数的位置应该是随机的(并且此函数的调用之间存在差异)。用图论的术语来说,这意味着每个节点的入度为2,出度为2(如所指定,占所有可能连接的50%p = 0.5)。
2 回答

湖上湖
TA贡献2003条经验 获得超2个赞
对于方阵,您要描述的是随机k正则有向图的邻接矩阵,并且有生成此类图的已知算法。igraph实现一个:
# I think this is how you call it - it's an instance method for some reason.
igraph.Graph().K_Regular(n, k, directed=True)
networkx具有用于随机k正则无向图的功能:
networkx.random_regular_graph(k, n)
对于非正方形矩阵,您所描述的内容与随机双正则图是同构的。我发现对于随机双正则图没有方便的现有实现,但是该术语应该是搜索已知算法的一个很好的起点。
添加回答
举报
0/150
提交
取消