首页 > 解决方案 > 访问满足networkx包中某些条件的图中的边

问题描述

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

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

见:https://en.wikipedia.org/wiki/Tournament_(graph_theory)

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

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

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

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

本质上,我想要 a)、b) 和 c) 的联合。

我是 python 新手,无法清楚地解决这个问题。我正在使用 networkx 包,我的图 G 是一个有向图。( G=nx.DiGraph())

标签: pythonnetworkx

解决方案


一种)

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

推荐阅读