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

如何使用networkx获取图概率分布并绘制最大连通分量对比图

解决方案

核心思路

你要分析边生成概率升高对最大连通分量的影响,需要固定总节点数,遍历多个不同的概率参数生成随机图,分别计算每个概率下的最大连通分量尺寸,再绘制二者的对应关系即可,不需要在单个图中计算概率分布。
你原有代码的问题是仅生成了单个固定概率的随机图,无法形成对比维度,且随机生成总节点数会干扰概率的影响效果。

完整可运行代码

import matplotlib.pyplot as plt
import networkx as nx
import numpy as np

# 固定总节点数,唯一变量为边生成概率
total_nodes = 500
# 生成0到1区间的概率序列,步长可根据需要调整
prob_list = np.arange(0, 1.02, 0.02)
# 存储每个概率对应的最大连通分量尺寸
lcc_size_list = []

for p in prob_list:
    # 生成当前概率对应的GNP随机图
    G5 = nx.gnp_random_graph(total_nodes, p, directed=False)
    # 计算最大连通分量的节点数
    largest_cc = max(nx.connected_components(G5), key=len)
    lcc_size_list.append(len(largest_cc))

# 绘制对比图
plt.figure(figsize=(10, 6))
plt.plot(prob_list, lcc_size_list, color='#1f77b4', linewidth=2, label='最大连通分量尺寸')
plt.scatter(prob_list, lcc_size_list, color='#ff7f0e', s=20)
plt.xlabel('边生成概率', fontsize=12)
plt.ylabel('最大连通分量节点数', fontsize=12)
plt.title('GNP随机图边概率与最大连通分量的对应关系', fontsize=14)
plt.grid(alpha=0.3)
plt.legend()
plt.show()

效果说明

运行代码后可以观测到经典的随机图渗流相变现象:当边概率接近1/total_nodes时,最大连通分量的尺寸会出现突变式跃升,之后随着概率升高快速趋近总节点数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:15:04