访问满足networkx软件包中某些条件的图形中的边

时间:2018-07-31 14:36:41

标签: python networkx

我有一个图G,图中有100个节点,标记为1到100。

图G是锦标赛图,这意味着每两个节点之间在任一方向上都有一个有向边。

请参阅:https://en.wikipedia.org/wiki/Tournament_(graph_theory)

现在,我需要以某种方式访问​​满足以下条件的所有边缘: (也许将它们存储在列表中?)表示集合A = {1,2,3,.. 50}

a)节点x和y之间的G边,其中x,y位于A

b)在    形式为x ---> z,其中x在A中,z不是在A中

c)在    形式为z ---> x,其中x在A中,z不是在A

基本上,我想要a),b)和c)的并集。

我是python的新手,无法清楚地知道这一点。我正在使用networkx包,并且我的图形G是有向图。 (G=nx.DiGraph()

1 个答案:

答案 0 :(得分:1)

a)

G.subgraph(A).edges()

b)

[(i,j) for i,j in G.edges() if i in A and j not in A]

c)

[(i,j) for i,j in G.edges() if i not in A and j in A]

如果想要他们的联合,请尝试以下操作:

G.edges()-G.subgraph(G.nodes()-A).edges()