首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较无标度网络和随机网络?

如何比较无标度网络和随机网络?
EN

Stack Overflow用户
提问于 2017-01-12 12:18:37
回答 1查看 1.4K关注 0票数 0

我想知道如何比较随机网络和无标度网络。我现在给出了这两种网络(例如聚类)之间的区别,以及它们的特征参数(无标度网络中的γ和节点的n- nb,随机网络的边数k)。但是如果说,我想比较一下信息在这两个网络中是如何传播的,那么我如何选择gamma和k来获得类似的“设置”呢?我不想得到相同的网络(我知道它们有不同的属性),只是为了能够有效地比较它们。

我在考虑用10,000个无标度网络的平均连接数,伽马= 2,并相应地为随机网络选择k。说得通吗?

ps:我正在使用Networkx来生成我的网络。

EN

回答 1

Stack Overflow用户

发布于 2017-01-14 10:21:41

我想比较一下信息在这两个网络中的传播方式

为此,您可以使用效率 (“网络的效率是衡量它交换信息的效率的一种度量”)。您可以在networkx中将其计算为1/L,其中L是平均最短路径长度

在下面的代码中,G是一个无标度图(用scale_free_graph生成),H是随机图(用gnp_random_graph生成)。请注意,这两个图都有相同的节点数(200);这样它们就更具有可比性。

代码语言:javascript
运行
复制
import networkx as nx

G = nx.scale_free_graph(200)
H = nx.gnp_random_graph(200, 0.5)
print("Efficiency for G:", 1.0/nx.average_shortest_path_length(G))
print("Efficiency for H:", 1.0/nx.average_shortest_path_length(H))

每次运行代码时,下面的输出将是不同的(图是随机生成的)。您可以创建多个无标度/随机图,得到它们的平均效率,然后比较它们的值。

代码语言:javascript
运行
复制
Efficiency for G: 3.67192545437771
Efficiency for H: 0.6666890013065765

当然,在比较图表时,您也可以使用其他网络度量,例如平均聚类等。

现在,你标题中的问题。

如何比较无标度网络和随机网络?

我认为显示无标度网络和随机网络之间区别的最直观的方法是绘制(排序/排序)节点度。

从下面的图片中,你可以立即猜出哪一个是无标度的,哪个是随机网络。

我用下面的代码得到了图像(G和H是以前的图形)。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

degree_sequence = sorted(nx.degree(G).values(), reverse=True)
plt.plot(degree_sequence, 'b-')

degree_sequence = sorted(nx.degree(H).values(), reverse=True)
plt.plot(degree_sequence, 'r-')

plt.ylabel("degree")
plt.xlabel("rank")
plt.show()

当然,您将得到一个稍微不同的图像,因为节点度(degree_sequence)取决于随机生成的图形。

最后一个提示:如果要绘制多个无标度图,请考虑使用日志图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41613077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档