获取网络中所有断开连接的节点对

时间:2014-11-24 07:42:08

标签: python social-networking igraph

我使用igraph(无向)编码网络,我想获取未在网络中连接的节点对列表。

查看igraph的文档(Python),我还没有找到一种方法来执行此操作。我必须手动执行此操作吗?

相关问题:给定网络中的任何节点对,如何使用igraph找到这两个节点的公共邻居列表?同样,在igraph中似乎没有这样的方法。

1 个答案:

答案 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))