【问题标题】:Networkx: Use common function for edge weight calculationNetworkx:使用通用函数进行边权计算
【发布时间】:2013-06-26 13:39:54
【问题描述】:

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

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

但是这很不方便(而且很冗长),因为我一直在图表中添加和删除边。

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

【问题讨论】:

    标签: python algorithm graph networkx


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多