我有一个图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()
)
答案 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()