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)
(文档)和igraph.Graph().K_Regular(n, k)
(文档)生成常规图形的方法,但注意到它们需要度数k
是整数值。
但在我的原始图表中,该值是一个浮点值27.44153161741341
。现在我无法理解如何为我的分析创建一个常规图(或许多图以在平均时给出相同的上述属性)。
改写我的问题:在我的情况下,如何处理平均学位的小数部分?
语言/库不受解决方案的限制。
解决方案
正则图是每个顶点具有相同度数的图。
不可能有一个具有平均十进制度数的常规图表,因为图表中的所有节点都需要有十进制度数。
你能做的最好的事情是:
>>> 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
推荐阅读
- css - Material UI 的 CSS Baseline 正在减小我的组件的大小并将圆圈更改为椭圆
- c++ - 如何使用循环在 fstream 中创建多个文件
- python - 如何在 django rest 中处理嵌套的外键
- java - 如何在相机 2 api 片段中捕获和预览显示到图像视图?
- javascript - 直接访问 nuxt 应用程序中的 URL 时,初始页面加载时的滚动位置不会转到哈希/锚点位置
- https - Letsencrypt 泛域证书
- php - 在 WooCommerce 结帐中的订单总额之前添加交付单选按钮
- php - Magento 1.9 在订单网格中显示自定义选项
- opencv - 笔记本电脑相机不显示打开的 CV 帧
- java - JavaFX-根据鼠标位置放大和缩小画布