當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX configuration_model用法及代碼示例


本文簡要介紹 networkx.generators.degree_seq.configuration_model 的用法。

用法:

configuration_model(deg_sequence, create_using=None, seed=None)

返回具有給定度數序列的隨機圖。

配置模型通過隨機分配邊以匹配給定的度數序列來生成隨機偽圖(具有平行邊和自環的圖)。

參數

deg_sequence非負整數列表

每個列表條目對應一個節點的度數。

create_usingNetworkX 圖形構造函數,可選(默認 MultiGraph)

要創建的圖表類型。如果是圖形實例,則在填充之前清除。

seed整數、random_state 或無(默認)

隨機數生成狀態的指示符。請參閱隨機性。

返回

GMultiGraph

具有指定度數序列的圖。節點從 0 開始標記,索引對應於 deg_sequence 中的位置。

拋出

NetworkXError

如果度數序列沒有偶數和。

注意

正如紐曼[1]所說明的。

允許使用非圖形度數序列(某些簡單圖無法實現),因為此函數返回具有自環和平行邊的圖。如果度數序列沒有偶數和,則會引發異常。

此配置模型構建過程可能導致重複的邊和循環。您可以刪除自環和平行邊(見下文),這可能會導致圖形沒有指定精確的度數序列。

隨著節點數量的增加,自環和平行邊的密度趨於降低。然而,通常自環的數量將接近具有非零均值的泊鬆分布,平行邊的數量也是如此。考慮一個帶有k 存根的節點。加入同一節點的另一個存根的概率本質上是 (k - 1 ) /N ,其中 k 是度數,N 是節點數。因此,對於某個常數 c ,自循環的概率會像 c /N 一樣縮放。隨著N 的增長,這意味著我們期望c 自循環。對於平行邊也是如此。

參考

1

M.E.J. Newman, “The structure and function of complex networks”, SIAM REVIEW 45-2, pp 167-256, 2003.

例子

您可以使用 random_sequence 中的一個分布函數(或您自己的一個)來創建遵循特定分布的度數序列。例如,要在一百個節點上創建一個無向多重圖,其度數序列選自冪律分布:

>>> sequence = nx.random_powerlaw_tree_sequence(100, tries=5000)
>>> G = nx.configuration_model(sequence)
>>> len(G)
100
>>> actual_degrees = [d for v, d in G.degree()]
>>> actual_degrees == sequence
True

返回的圖是一個多重圖,它可能有平行的邊。要從返回的圖中刪除任何平行邊:

>>> G = nx.Graph(G)

同樣,要刪除自循環:

>>> G.remove_edges_from(nx.selfloop_edges(G))

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.generators.degree_seq.configuration_model。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。