2014-02-22 34 views
2

我正在網上查詢,但沒有找到答案。在NetworkX中可以將節點定義爲子圖嗎?

你們知道在NetworkX中是否可以將節點定義爲子圖嗎?

讓我更好地提出這個問題:我有一個由一些節點組成的圖形(正方形,圓形,三角形等)。我現在要將每個節點定義爲一個子圖。子圖的節點應該是形狀的角點(對於三角形:由於有3個角點,因此3個節點的子圖)。而這個子圖創建當然不應該影響起始圖。

實施例:

  • 有向圖2個節點構成: 「方形」 和 「三角形」。
  • 「square」和「triangle」之間的邊界
  • 節點「square」是一個包含4個節點(每個角點1個)的子圖。
  • 連接這些節點的邊緣;
  • 節點「三角形」是一個包含3個節點(每個角點1個)的子圖;
  • 邊緣連接這些節點。

在NetworkX中可以這樣做嗎?任何幫助或建議都是有好處的。

回答

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)] 
+0

謝謝!這真的很有幫助! –

相關問題