[英]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.