networkx.algorithms.dag.dag_to_branching
的用法。用法:
dag_to_branching(G)
返回一個分支,表示給定有向無環圖中從根節點到葉節點的所有(重疊)路徑。
如
networkx.algorithms.tree.recognition
中所述,branching
是一個有向森林,其中每個節點最多有一個父節點。換句話說,分支是arborescences
的不相交並集。對於此函數,G
中度數為零的每個節點都將成為其中一個樹狀結構的根,並且從該根到G
中的葉節點的每條不同路徑都有一個葉節點。G
中的每個節點v
和k
父節點在返回的分支中成為k
不同的節點,每個父節點一個節點,並且每個副本都複製以v
為根的 sub-DAG。然後該算法在v
的每個副本的子代上遞歸。- G:NetworkX 圖
有向無環圖。
- DiGraph
G
中的root-to-leaf 路徑(其中多個路徑可能共享同一個葉子)和分支中的root-to-leaf 路徑之間存在雙射的分支(其中從根到葉子的路徑是唯一的) )。每個節點都有一個屬性‘source’,其值為該節點對應的原始節點。沒有其他圖形、節點或邊屬性被複製到這個新圖形中。
- NetworkXNotImplemented
如果
G
不是定向的,或者如果G
是多圖。- HasACycle
如果
G
不是非循環的。
參數:
返回:
拋出:
注意:
這個函數不是冪等的,因為每次調用該函數時,返回的分支中的節點標簽可能是唯一生成的。事實上,節點標簽可能不是整數;為了將節點重新標記為更具可讀性,您可以使用
networkx.convert_node_labels_to_integers()
函數。此函數的當前實現使用
networkx.prefix_tree()
,因此受該函數的限製。例子:
為了檢查返回分支中的哪些節點是由有向無環圖中的哪個原始節點產生的,我們可以將源節點到新節點的映射收集到字典中。例如,考慮有向菱形圖:
>>> from collections import defaultdict >>> from operator import itemgetter >>> >>> G = nx.DiGraph(nx.utils.pairwise("abd")) >>> G.add_edges_from(nx.utils.pairwise("acd")) >>> B = nx.dag_to_branching(G) >>> >>> sources = defaultdict(set) >>> for v, source in B.nodes(data="source"): ... sources[source].add(v) >>> len(sources["a"]) 1 >>> len(sources["d"]) 2
要將節點屬性從原始圖複製到新圖,您可以使用上麵示例中構造的字典:
>>> for source, nodes in sources.items(): ... for v in nodes: ... B.nodes[v].update(G.nodes[source])
相關用法
- Python NetworkX dag_longest_path_length用法及代碼示例
- Python NetworkX dag_longest_path用法及代碼示例
- Python NetworkX dedensify用法及代碼示例
- Python NetworkX draw_networkx_edge_labels用法及代碼示例
- Python NetworkX double_edge_swap用法及代碼示例
- Python NetworkX draw用法及代碼示例
- Python NetworkX descendants_at_distance用法及代碼示例
- Python NetworkX degree_assortativity_coefficient用法及代碼示例
- Python NetworkX dfs_successors用法及代碼示例
- Python NetworkX draw_planar用法及代碼示例
- Python NetworkX draw_circular用法及代碼示例
- Python NetworkX dijkstra_path_length用法及代碼示例
- Python NetworkX descendants用法及代碼示例
- Python NetworkX draw_spectral用法及代碼示例
- Python NetworkX degree_mixing_matrix用法及代碼示例
- Python NetworkX dijkstra_path用法及代碼示例
- Python NetworkX degrees用法及代碼示例
- Python NetworkX degree_pearson_correlation_coefficient用法及代碼示例
- Python NetworkX directed_configuration_model用法及代碼示例
- Python NetworkX draw_random用法及代碼示例
- Python NetworkX directed_joint_degree_graph用法及代碼示例
- Python NetworkX draw_shell用法及代碼示例
- Python NetworkX difference用法及代碼示例
- Python NetworkX disjoint_union用法及代碼示例
- Python NetworkX draw_networkx用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.dag.dag_to_branching。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。