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


Python NetworkX directed_configuration_model用法及代碼示例


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

用法:

directed_configuration_model(in_degree_sequence, out_degree_sequence, create_using=None, seed=None)

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

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

參數

in_degree_sequence非負整數列表

每個列表條目對應於節點的入度。

out_degree_sequence非負整數列表

每個列表條目對應於節點的out-degree。

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

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

seed整數、random_state 或無(默認)

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

返回

GMultiDiGraph

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

拋出

NetworkXError

如果度數序列的總和不同。

注意

Newman [1] 說明的算法。

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

此配置模型構建過程可能導致重複的邊和循環。您可以刪除自環和平行邊(見下文),這可能會導致圖形沒有指定精確的度數序列。這種“finite-size 效應”隨著圖表大小的增加而減少。

參考

1

Newman, M. E. J. and Strogatz, S. H. and Watts, D. J. Random graphs with arbitrary degree distributions and their applications Phys. Rev. E, 64, 026118 (2001)

例子

可以修改現有有向圖中的 in- 和 out-degree 序列,以創建新的有向圖。例如,這裏我們修改有向路徑圖:

>>> D = nx.DiGraph([(0, 1), (1, 2), (2, 3)])
>>> din = list(d for n, d in D.in_degree())
>>> dout = list(d for n, d in D.out_degree())
>>> din.append(1)
>>> dout[0] = 2
>>> # We now expect an edge from node 0 to a new node, node 3.
... D = nx.directed_configuration_model(din, dout)

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

>>> D = nx.DiGraph(D)

同樣,要刪除自循環:

>>> D.remove_edges_from(nx.selfloop_edges(D))

相關用法


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