graphscope.nx.generators.joint_degree_seq.joint_degree_graph

graphscope.nx.generators.joint_degree_seq.joint_degree_graph(joint_degrees, seed=None)[源代码]

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

Parameters:
  • joint_degrees (dictionary of dictionary of integers) - 一个联合度数字典,其中条目joint_degrees[k][l]表示 连接度数为k的节点与度数为l的节点之间的边数。

  • seed (integer, random_state, or None (default)) - 随机数生成状态的指示器。 参见随机性

Returns:

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

Return type:

Graph

Raises:

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)
>>>