joint_degree_graph#

joint_degree_graph(joint_degrees, seed=None)[source]#

生成一个具有给定联合度字典的随机简单图。

参数:
joint_degrees整数字典的字典

一个联合度字典,其中条目 joint_degrees[k][l] 表示连接度为 k 的节点和度为 l 的节点的边数。

seed整数, random_state, 或 None (默认)

随机数生成状态的指示器。参见 随机性

返回:
G

具有指定联合度字典的图。

抛出异常:
NetworkXError

如果 joint_degrees 字典不可实现。

注释

在“while 循环”的每次迭代中,算法选择两个断开连接的节点 vw,它们的度分别为 kl,并且 joint_degrees[k][l] 尚未达到目标值。然后添加边 (v, w),并将图 G 中的边数增加一。

该算法的巧妙之处在于,即使一个或两个节点没有空闲的桩,也总有可能在这样的断开连接的节点 vw 之间添加一条边。这是通过执行“邻居切换”来实现的,这是一种边重新布线操作,它释放一个空闲的桩,同时保持图 G 的联合度不变。

算法继续进行 E(边数)次“while 循环”迭代,此时给定 joint_degrees[k][l] 的所有条目都已达到其目标值,构造完成。

参考文献

示例

>>> joint_degrees = {
...     1: {4: 1},
...     2: {2: 2, 3: 2, 4: 2},
...     3: {2: 2, 4: 1},
...     4: {1: 1, 2: 2, 3: 1},
... }
>>> G = nx.joint_degree_graph(joint_degrees)
>>>