2

我在网上查了一下,但没有找到答案。

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

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

例子:

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

是否可以在 NetworkX 中做到这一点?任何帮助或建议都将不胜感激。

4

1 回答 1

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)]
于 2014-02-23T01:43:52.873 回答