我在网上查了一下,但没有找到答案。
你们知道在 NetworkX 中是否可以将节点定义为子图吗?
让我更好地提出问题:我有一个由一些形状(正方形、圆形、三角形等)的节点组成的图。我现在想将每个节点定义为一个子图。子图的节点应该是形状的角点(对于三角形:3 个节点的子图,因为有 3 个角点)。当然,这个子图的创建不应该影响起始图。
示例:
- 有向图由 2 个节点组成:“正方形”和“三角形”。
- “正方形”和“三角形”之间的边
- 节点“square”是包含 4 个节点的子图(每个角点 1 个);
- 连接这些节点的边;
- 节点“三角形”是包含 3 个节点的子图(每个角点 1 个);
- 连接这些节点的边。
可以在 NetworkX 中实现吗?感谢任何帮助或建议。
最佳答案
是的,您可以这样做,例如
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)]
关于python - 在 NetworkX 中是否可以将节点定义为子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961103/