Frage

I was checking on the web, but I didn't find an answer.

Do you guys know if in NetworkX is possible to define a node as a subgraph?

Let me pose the question better: I have a graph composed of some nodes that are shapes (square, circle, triangle, etc.). I want now to define each node as a subgraph. The nodes of the subgraph should be the corner points of the shape (for triangle: subgraph of 3 nodes since there are 3 corner points). And this subgraph creation, of course, should not affect the starting graph.

Example:

  • DiGraph composed of 2 nodes: "square" and "triangle".
  • Edge between "square" and "triangle"
  • Node "square" is a subgraph containing 4 nodes (1 for each corner point);
  • Edges connecting these nodes;
  • Node "triangle" is a subgraph containing 3 nodes (1 for each corner point);
  • Edges connecting these nodes.

Is it possible to do it in NetworkX? Any help or suggestion is apreciated.

War es hilfreich?

Lösung

Yes, you are allowed to do that, e.g.

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)]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top