簡體   English   中英

如何在networkx的有向圖中有效地獲取輸出節點?

[英]How to efficiently get output nodes in a directed graph in networkx?

我在 Python 網絡包networkx創建了一個簡單的有向圖(DiGraph),如下所示:

import networkx as nx

G = DiGraph([(1, 2)])

現在我想知道確定輸出節點(在這種情況下是節點 2)的最快/最有效的方法 我所說的輸出節點是指有向圖中沒有后繼的節點-輸入節點是沒有前任的節點。 類比來自機器學習,其中我向輸入節點提供值,在邊上執行數學運算並在輸出節點中具有輸出值 參見此處的示例,其中 p、d 和 lambda 是輸入節點,而 p' 和 d' 是輸出節點。

閱讀文檔后,我想出了這樣低效的方法,例如遍歷圖的所有節點,對它們調用successors()並保存所有沒有后繼的節點。 然而,這是非常低效的,特別是因為在我的實際項目中,圖表明顯更大更復雜。 我希望有一種簡單有效的方法,例如G.out_nodes()或類似的方法,可以在編輯圖形時跟蹤輸出節點,盡管我似乎無法找到它。 然而,由於確定有向圖中的輸出和輸入節點並不是什么罕見的任務,我認為我遺漏了一些東西。 我希望你能幫助我。 非常感謝。

一旦你有了你的圖,你就可以迭代並獲得out_degree等於 0 的節點。

output_nodes = [u for u, deg in g.out_degree() if not deg]

但是,您可以在構建圖形時直接獲取它們,如果(u,v)是弧,您確實可以從節點u刪除它們。 其余將是輸出節點。
另一種可能性是使用另一種方式根據要應用的大小/最常見的操作來表示您的圖形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM