在NetworkX中,是否可以将节点定义为子图?

时间:2014-02-22 21:53:57

标签: python nodes networkx subgraph

我正在网上查看,但我找不到答案。

你们知道在NetworkX中是否可以将节点定义为子图?

让我更好地提出问题:我有一个由一些形状(方形,圆形,三角形等)组成的图形。我现在想要将每个节点定义为子图。子图的节点应该是形状的角点(对于三角形:3个节点的子图,因为有3个角点)。当然,这个子图创建不应该影响起始图。

示例:

  • DiGraph由2个节点组成:“square”和“triangle”。
  • “square”和“triangle”之间的边缘
  • 节点“square”是一个包含4个节点的子图(每个角点1个);
  • 连接这些节点的边缘;
  • 节点“三角形”是一个包含3个节点的子图(每个角点为1个);
  • 连接这些节点的边缘。

是否可以在NetworkX中执行此操作?任何帮助或建议都是相关的。

1 个答案:

答案 0 :(得分:2)

是的,你被允许这样做,例如

In [1]: import networkx as nx

In [2]: square = nx.Graph()

In [3]: square.add_cycle([1,2,3,4])

In [4]: triangle = nx.Graph()

In [5]: triangle.add_cycle([10,20,30])

In [6]: shapes = nx.Graph()

In [7]: shapes.add_edge(triangle,square)

In [8]: shapes.edges()
Out[8]: 
[(<networkx.classes.graph.Graph at 0x962040c>,
  <networkx.classes.graph.Graph at 0x962042c>)]

In [9]: shapes.nodes()[0].edges()
Out[9]: [(1, 2), (1, 4), (2, 3), (3, 4)]

In [10]: shapes.nodes()[1].edges()
Out[10]: [(10, 20), (10, 30), (20, 30)]