如何生成和研究非整数平均度的正则图?

2024-04-24 00:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有以下属性的无向图,我需要对一个完全随机图和一个具有相同属性的正则图进行一些分析

属性:

Number of Nodes = 37764
Number of Edges = 518151
Average Degree = 27.44153161741341

为了研究随机图的属性,我使用networkx.gnm_random_graph(37764,518151)创建它们并进行分析。但是我对如何使用相同的属性生成规则图感到非常困惑

我发现了两种使用networkx.random_regular_graph(k, n)documentation)和igraph.Graph().K_Regular(n, k)documentation)生成正则图的方法here,但注意到它们需要度k为整数值

但在我的原始图形中,该值是一个浮点值27.44153161741341。现在我无法理解如何创建一个规则图(或者许多图在求平均值时提供相同的上述属性)用于我的分析

重新表述我的问题:在我的例子中,如何处理平均学位的小数部分

语言/库不受解决方案的限制


Tags: ofnetworkxnumber属性规则documentationrandomgraph
1条回答
网友
1楼 · 发布于 2024-04-24 00:17:54

正则图是每个顶点具有相同阶数的图

不可能有一个具有平均小数度数的正则图,因为该图中的所有节点都需要具有小数度数

您所能做的就是:

>>> G = nx.random_regular_graph(27, 37764)
>>> len(G.edges())
509814

# OR

>>> G = nx.random_regular_graph(28, 37764)
>>> len(G.edges())
528696

我想你可以试试这样的东西:

def perfect_avg(v_27, v_28):
    return v_27 * (1-0.44153161741341) + v_28 * (0.44153161741341)

其中,v_27是度数为27的图的值
(v_28是度数为28的图的值)

例如:

>>> nr_edges27 = len(G27.edges())
>>> nr_edges28 = len(G28.edges())
>>> perfect_avg(nr_edges27, nr_edges28)
518151.0

相关问题 更多 >