簡體   English   中英

圖形中的組件連接有1億個節點

[英]Connected components in a graph with 100 million nodes

我試圖在包含1億個節點的圖形中獲取連接組件的列表。 對於較小的圖形,我通常使用Python中的Networkx模塊的connected_components函數來完成它。 但是,使用此模塊將具有1億個節點(及其邊緣)的圖形加載到內存中將需要大約1。 110GB的內存,我沒有。 另一種方法是使用具有連接組件功能的圖形數據庫,但我在Python中沒有找到任何組件。 似乎Dex(API:Java,.NET,C ++)具有此功能,但我不是100%肯定。 理想情況下,我正在尋找Python的解決方案。 非常感謝。

SciPy有一個連通組件算法 它期望以一種稀疏矩陣格式輸入圖形的鄰接矩陣,並處理有向和無向情況。

從一系列(i, j)adj_list構建稀疏鄰接矩陣,其中ij是(基於零的)節點索引可以用

i_indices, j_indices = zip(*adj_list)
adj_matrix = scipy.sparse.coo_matrix((np.ones(number_of_nodes),
                                     (i_indices, j_indices)))

你將不得不為無向的情況做一些額外的工作。

如果圖表足夠稀疏,這種方法應該是有效的。

https://graph-tool.skewed.de/performance

從性能上可以看出這個工具非常快。 它是用C ++編寫的,但界面是用Python編寫的。

如果這個工具不夠好。 (我認為它會)然后你可以嘗試Apache Giraph( http://giraph.apache.org/ )。

暫無
暫無

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

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