2

假设我有一个函数euc_2d(graph, n1, n2)可以计算同一个图的两个节点之间的欧几里得距离。每个节点都有一个pos=(x,y)在图创建时分配的给定值。

NetworkX 提供了一个函数来获取图的所有边的总权重,即graph.size(weight='weight')。这种方法的问题在于,它假定每当我添加一条边时,我都应该明确地分配适当的边权重,例如graph.add_edge(u,v,weight=?)使用 lambda 函数。

然而,这非常不方便(而且冗长),因为我一直在图形中添加和删除边。

那么,euc_2d()当我询问图表的总权重时,是否有一种 Pythonic 方式可以告诉 NetworkX 透明地使用 ?

4

1 回答 1

2

既不graph.size也不graph.add_edge使用函数来评估权重,它们只是用给定的键存储值。为了更容易使用,只需定义一个函数来添加具有适当权重的边:

def add_euc2d_edge(graph, u, v):
    graph.add_edge(u, v, weight=euc_2d(graph, u, v))
于 2013-07-30T12:42:06.583 回答