>假设我有一个函数euc_2d(graph, n1, n2)
来计算同一图的两个节点之间的欧几里得距离。每个节点都有一个给定的pos=(x,y)
,该在创建图时分配。
NetworkX 提供了一个函数来获取图形所有边的总权重,即 graph.size(weight='weight')
。此方法的问题在于,它假设每当我添加边缘时,我都应该显式分配适当的边缘权重,例如使用 lambda 函数graph.add_edge(u,v,weight=?)
。
然而,这非常不方便(而且冗长(,因为我一直在图形中添加和删除边缘。
那么,有没有一种pythonic方法可以告诉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))