2015-05-06 192 views
3

有一个图G(e,v)有N个节点和M个边。它的距离矩阵D是一个N×N矩阵。networkx边缘到节点节点到边缘的表示

现在让我们想象一下这个图的另一种表示形式G'(e'=v,v'=e),即G'中的节点v'实际上是图G中的边,保持连通性相同。现在它的距离矩阵D'是MxM。

在NetworkX中是否有任何方法可以从D(NxN)中获得这个D'(MxM)?

+1

我不这么认为,但不容易落实不够? – dbliss

+0

这是原来的计划,我打算自己做。只是想检查它是否已经存在。在图论中它被称为双图?根据[wikipedia](http://en.wikipedia.org/wiki/Dual_graph)的 –

+0

,双图是不同的。 – dbliss

回答

2

networkx有一个名为line_graph()的函数,它看起来像是在找你想要的东西。这里是它如何工作的例子:

import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.star_graph(3) 
L=nx.line_graph(G) 
nx.draw(G, node_size=500) 
plt.show() 

enter image description here

nx.draw(L, node_size=500) 
plt.show() 

enter image description here

+0

@ user832对不起,我试图简化我的答案,因为你接受。如果你喜欢原创,我会改回它。 – Scott

+0

这一个更好。就在你编辑的时候,我也检查了'line_graph'上的'NetworkX'文档!保持这个! –

+0

@ user832太棒了!我同意。图形更简单,线条更少。 – Scott