Networkx:使用通用功能进行边缘权重计算
假设我有一个函数euc_2d(graph, n1, n2)
来计算同一个图的两个节点之间的欧氏距离。 每个节点都有一个给定的pos=(x,y)
,它是在图创建时分配的。
NetworkX提供了一个函数来获得图形所有边的总权重,即graph.size(weight='weight')
。 这个方法的问题是它假定每当我添加一个边时,我都应该使用lambda函数明确地指定适当的边权重,如graph.add_edge(u,v,weight=?)
。
然而,这是非常不方便的(并且冗长),因为我始终都在添加和删除图中的边。
那么,当我问图的总权重时,是否可以通过euc_2d()
方式告诉NetworkX透明地使用euc_2d()
?
graph.size
和graph.add_edge
都不使用函数来评估权重,它们只是使用给定的键存储值。 为了更容易使用,只需定义一个函数来添加具有适当权重的边:
def add_euc2d_edge(graph, u, v):
graph.add_edge(u, v, weight=euc_2d(graph, u, v))
链接地址: http://www.djcxy.com/p/29219.html
上一篇: Networkx: Use common function for edge weight calculation
下一篇: java function that finds graph with minimal edge crossings