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


Python NetworkX minimum_spanning_edges用法及代碼示例


本文簡要介紹 networkx.algorithms.tree.mst.minimum_spanning_edges 的用法。

用法:

minimum_spanning_edges(G, algorithm='kruskal', weight='weight', keys=True, data=True, ignore_nan=False)

在無向加權圖的最小生成森林中生成邊。

最小生成樹是圖(樹)的子圖,其邊權重之和最小。生成森林是圖的每個連接組件的生成樹的聯合。

參數

G無向圖

一個無向圖。如果G 已連接,則算法會找到生成樹。否則,會找到一個生成林。

algorithmstring

查找最小生成樹時使用的算法。有效選擇是‘kruskal’, ‘prim’或‘boruvka’。默認為‘kruskal’。

weightstring

用於權重的邊數據鍵(默認 ‘weight’)。

keysbool

除了邊之外,是否在多重圖中產生邊鍵。如果G 不是多重圖,則忽略它。

data布爾型,可選

如果 True 產生邊數據以及邊。

ignore_nan布爾(默認值:假)

如果發現NaN 作為邊權重,通常會引發異常。如果 ignore_nan is True 則忽略該邊。

返回

edges迭代器

G 的最大生成樹中的邊上的迭代器。連接節點 uv 的邊表示為元組:(u, v, k, d)(u, v, k)(u, v, d)(u, v)

如果G是多圖,keys表示邊鍵k是否會在邊元組的第三個位置上報。 data 指示邊數據字典d 是否會出現在邊元組的末尾。

如果G 不是多重圖,則如果data 為True,則元組為(u, v, d),如果data 為False,則為(u, v)

注意

對於 Borůvka 的算法,每條邊必須有一個權重屬性,並且每條邊的權重必須是不同的。

對於其他算法,如果圖邊沒有權重屬性,則將使用默認權重 1。

來自 David Eppstein 的修改代碼,2006 年 4 月 http://www.ics.uci.edu/~eppstein/PADS/

例子

>>> from networkx.algorithms import tree

通過 Kruskal 算法找到最小跨越邊

>>> G = nx.cycle_graph(4)
>>> G.add_edge(0, 3, weight=2)
>>> mst = tree.minimum_spanning_edges(G, algorithm="kruskal", data=False)
>>> edgelist = list(mst)
>>> sorted(sorted(e) for e in edgelist)
[[0, 1], [1, 2], [2, 3]]

通過 Prim 算法找到最小跨越邊

>>> G = nx.cycle_graph(4)
>>> G.add_edge(0, 3, weight=2)
>>> mst = tree.minimum_spanning_edges(G, algorithm="prim", data=False)
>>> edgelist = list(mst)
>>> sorted(sorted(e) for e in edgelist)
[[0, 1], [1, 2], [2, 3]]

相關用法


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