亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 或 R 中為給定度數序列生成圖

在 Python 或 R 中為給定度數序列生成圖

慕斯王 2022-04-24 18:48:20
我正在嘗試了解在 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)

http://img1.sycdn.imooc.com//62652b1a0001089703160315.jpg

在 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()

和得到的直方圖:

http://img1.sycdn.imooc.com//62652b2b00012b4a03130232.jpg

查看完整回答
反對 回復 2022-04-24
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

我不知道您已經對該主題進行了多少研究,但是在 R 中有一個非常知名的包,在 Python 中有一個名為igraph的模塊。它可能有你想要的。



查看完整回答
反對 回復 2022-04-24
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

對于 Python,networkx包還提供了您正在尋找的內容。

特別是,來自度數序列的隨機圖的功能(例如configuration_model,來自@Alex_6 評論的想法)可能會有所幫助。


查看完整回答
反對 回復 2022-04-24
  • 3 回答
  • 0 關注
  • 611 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號