python - Networkx:使用公共(public)函数进行边权重计算

标签 python algorithm graph 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))

关于python - Networkx:使用公共(public)函数进行边权重计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370507/

相关文章:

algorithm - 平面图布局

Python:删除字符串中的所有空格和 '\n'

javascript - 在 JavaScript 中生成所有可能的可变长度逗号分隔字符串组合

php - 类似谷歌的搜索算法

algorithm - 最大流量 - 通过顶点 - 如何?

c# - 在 Windows Mobile 6 中绘制图表

python - 绘制多个饼图,其位置位于 for 循环中

python - ctypes找不到find dll函数

python - 我可以用 Pandas 附加到压缩流吗?

algorithm - 如何检查是否可以在字典中找到所有子字符串