You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从度列表生成匹配度序列的随机邻接矩阵?

高效实现给定度序列生成随机邻接矩阵(Python版)

方案一:利用python-igraph内置方法

python-igraph中存在对应功能,只是函数名和R版不同,可通过以下两个方法实现:

  • Graph.Degree_Sequence(deg_sequence, method="vl"):基于Viger-Latapy算法生成无环无重边的简单图,仅在度序列可行时生效
  • Graph.Random_Degree_Sequence(deg_sequence):生成允许自环和重边的随机图,适配更多度序列场景

示例代码:

from igraph import Graph
import numpy as np

# 示例度序列
deg_seq = [3, 3, 2, 2, 1, 1]

# 生成无环无重边的简单图
graph = Graph.Degree_Sequence(deg_seq)
# 转换为邻接矩阵
adj_matrix = np.array(graph.get_adjacency().data)
print(adj_matrix)

方案二:使用NetworkX库

若偏好NetworkX生态,可通过configuration_model()高效生成对应度序列的随机图,还能灵活控制是否允许自环和重边:

import networkx as nx
import numpy as np

deg_seq = [3, 3, 2, 2, 1, 1]

# 生成基础随机图(可能含自环/重边)
G = nx.configuration_model(deg_seq, seed=42)
# 转换为简单图并移除自环
G = nx.Graph(G)
G.remove_edges_from(nx.selfloop_edges(G))
# 转换为邻接矩阵
adj_matrix = nx.to_numpy_array(G)
print(adj_matrix)

注意:可先通过nx.is_graphical(deg_seq)校验度序列是否能构成简单图,避免生成不符合预期的结果。

性能说明

  • python-igraph底层基于C实现,处理大规模度序列时速度远快于纯Python代码
  • NetworkX的configuration_model()经过优化,在中等规模数据集上表现稳定

内容的提问来源于stack exchange,提问作者Qise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:03:11