簡體   English   中英

獲取網絡中所有斷開連接的節點對

[英]Get all disconnected pairs of nodes in a network

我已經使用igraph (無向)對網絡進行了編碼,並且我想獲取網絡中未連接的節點對列表。

瀏覽igraph的文檔(Python),我還沒有找到執行此操作的方法。 我是否必須手動執行此操作?

一個相關的問題:給定網絡中的任意一對節點,如何使用igraph查找這兩個節點的公共鄰居列表? 同樣, igraph似乎沒有這樣的方法可輕易獲得。

關於第一個問題(列出未連接的節點對):是的,您必須手動執行此操作,但這很容易:

from itertools import product

all_nodes = set(range(g.vcount())
disconnected_pairs = [list(product(cluster, all_nodes.difference(cluster))) \
                      for cluster in g.clusters()]

但是請注意,如果您的圖形很大並且由許多斷開的組件組成,那么這可能是一個相當大的列表。

再問第二個問題(列出公共鄰居):同樣,您必須手動執行此操作,但在Python中僅需執行一次設置交集操作:

set(g.neighbors(v1)).intersection(set(g.neighbors(v2)))

如果發現需要對許多對節點執行此操作,則可能應該首先創建鄰居集:

neighbor_sets = [set(neis) for neis in g.get_adjlist()]

然后,您可以簡單地編寫neighbor_sets[i]而不是set(g.neighbors(i))

暫無
暫無

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

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