我使用igraph
(无向)编码网络,我想获取未在网络中连接的节点对列表。
查看igraph
的文档(Python),我还没有找到一种方法来执行此操作。我必须手动执行此操作吗?
相关问题:给定网络中的任何节点对,如何使用igraph
找到这两个节点的公共邻居列表?同样,在igraph
中似乎没有这样的方法。
答案 0 :(得分:1)
重新提出第一个问题(列出已断开连接的节点对):是的,您必须手动执行此操作,但这很容易:
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))
。