我正在尝试了解在 Python 或 R 中是否存在与图论相关的模块功能,这些功能可以使人们从度分布开始(或者一旦我们设置了顶点数就表示为序列),并生成(随机) 满足规定度数序列的图。例如,我们可能会得到以下分布:p=(0.179,0.49,0.34)分别是度值1,2和的概率3。所以我们可以设置顶点的个数,n=500,映射p到一个度数序列deseq表:填充的0.179*n次数1,等等。任何指向先前讨论过的此类问题或库建议的案例都会非常有帮助。
3 回答
HUH函数
TA贡献1836条经验 获得超4个赞
在学习了如何在 R 和 Python 中使用 igraph 来生成所需类型的图之后,这是我自己的问题的尝试。
在 R 中:
出于本示例的目的,我们假设以下度数序列:总节点n=20,
5,10
和分别5
具有度数1,2,
和的节点3
。c()
我们使用和创建度数序列,rep().
然后我们将使用sample_degseq()
fromigraph
生成与上述度数序列对应的图形。然后我们将绘制其度数直方图以进行完整性检查。
首先使用以下命令在 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)
在 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()
和得到的直方图:
波斯汪
TA贡献1811条经验 获得超4个赞
添加回答
举报
0/150
提交
取消