在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在中

b( 的G中的任何边形式x---->z,其中x在A中,z不在中

c( 的G中的任何边形式z-->x,其中x在A中,z不在中

本质上我想要a(,b(和c(的并集。

我是python的新手,无法清楚地理解这一点。我使用的是networkx软件包,我的图G是一个有向图。(G=nx.DiGraph()(

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()

最新更新