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


Python NetworkX to_prufer_sequence用法及代碼示例


本文簡要介紹 networkx.algorithms.tree.coding.to_prufer_sequence 的用法。

用法:

to_prufer_sequence(T)

返回給定樹的 Prüfer 序列。

Prüfer sequencen - 2 個介於 0 和 n - 1 之間的數字的列表,包括 0 和 n - 1。給定的 Prüfer 序列對應的樹可以通過將序列中的一個節點與該序列中潛在度最小的節點重複連接來恢複。

參數

TNetworkX 圖

表示樹的無向圖對象。

返回

列表

給定樹的 Prüfer 序列。

拋出

NetworkXPointlessConcept

如果T 中的節點數少於兩個。

NotATree

如果 T 不是樹。

KeyError

如果 T 中的節點集不是 {0, ..., n - 1}。

注意

從標記樹到 Prüfer 序列存在雙射。此函數與 from_prufer_sequence() 函數相反。

有時 Prüfer 序列使用從 1 到 n 標記的節點,而不是從 0 到 n - 1。此函數需要以後一種形式標記節點。您可以使用 relabel_nodes() 將樹的節點重新標記為適當的格式。

此實現來自 [1],運行時間為

參考

1

Wang, Xiaodong, Lei Wang, and Yingjie Wu. “An optimal algorithm for Prufer codes.” Journal of Software Engineering and Applications 2.02 (2009): 111. <https://doi.org/10.4236/jsea.2009.22016>

例子

Prüfer 序列和標記樹之間存在雙射,因此該函數是 from_prufer_sequence() 函數的逆函數:

>>> edges = [(0, 3), (1, 3), (2, 3), (3, 4), (4, 5)]
>>> tree = nx.Graph(edges)
>>> sequence = nx.to_prufer_sequence(tree)
>>> sequence
[3, 3, 3, 4]
>>> tree2 = nx.from_prufer_sequence(sequence)
>>> list(tree2.edges()) == edges
True

相關用法


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