Networkx:使用通用函数计算边缘权重



>假设我有一个函数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.sizegraph.add_edge 都不使用函数来计算权重,它们只是使用给定键存储值。为了使其更易于使用,只需定义一个函数来添加具有适当权重的边:

def add_euc2d_edge(graph, u, v):
    graph.add_edge(u, v, weight=euc_2d(graph, u, v))

最新更新