我正在尝试了解在 Python 或 R 中是否存在与图论相关的模块功能,这些功能使人们能够从度分布开始(或者在我们设置顶点数后表示为序列),并且生成满足规定度数序列的(随机)图。
例如,我们可能会得到以下分布:p=(0.179,0.49,0.34)
这是度值 1,2
和 3
分别。所以我们可以设置顶点的个数,n=500,
将p
映射到一个度数序列deseq
list: filled with 0.179*
次,其余依此类推。 1,
的 n
任何指向之前讨论过的此类问题案例或库建议的指针都会非常有帮助。
最佳答案
在学习了如何在 R 和 Python 中使用 igraph 来生成所需类型的图形后,我尝试回答自己的问题。
In R:
为了这个例子的目的,我们假设以下度序列:总节点 n=20,
5,10
和 5
节点度数分别为 1,2,
和 3
。我们使用 c()
和 rep()
创建度序列。然后我们将使用 igraph
中的 sample_degseq()
code>生成对应于上述度数序列的图。然后我们将绘制其度数直方图以进行完整性检查。
首先使用以下命令在 R 控制台中安装并调用 igraph 模块:
install.packages("igraph")
library(igraph)
现在我们可以按照描述进行:
degreels <- c(rep(1,5),rep(2,10),rep(3,5))
graph <- sample_degseq(degreels, method="simple")
degreehist <- hist(degree(graph))
is.connected(graph)
In Python:
现在让我们用 Python 中的 igraph 模块做完全相同的事情:
import igraph as ig
import matplotlib.pyplot as plt
degcounts = [5,10,5]
degreels = []
for i in range(len(degcounts)):
degreels += degcounts[i]*[i+1]
graph = ig.GraphBase.Degree_Sequence(degreels,method="simple")
plt.hist(graph.degree())
plt.show()
以及得到的直方图:
关于python - 在 Python 或 R 中为给定的度序列生成图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57373559/