在最短路径列表中找到最小值

时间:2018-02-12 18:26:03

标签: python graph

我有我的图形对象,我试图找到一种方法来找到一组节点的最小值。

实施例。节点:

      input_nodes=[123,45]
      graph_nodes=[10, 76,123,45,98,456]

我运行一个算法,计算图中每个节点和输入中每个节点之间的最短路径。  我有一个包含所有最短路径beetwen节点的字典:

                {10:{123:0.56, 45:0.2}, 76:{123:0, 45:0.23}......
每个图节点都有

等等。 如何只获得与零不同的最小重量:

像这样:

最小路径节点10具有节点45, 最小路径节点76具有节点45, ...... Thatnks

1 个答案:

答案 0 :(得分:0)

我假设权重中可能存在联系,即一个节点可以与多于一个其他节点同等地“接近”。以下代码将全部包含在dict中。结果的结构与输入d基本相同,但仅保留最小权重项。

更新:如果某个节点没有邻居或只有权重为0的邻居,则此节点将映射到结果中的空dict。

d = {10:{123:0.56, 45:0.2}, 76:{123:0, 45:0.23}, 19:{17:0}, 20:{}}

def closest(ns):
    m = min((v for v in ns.values() if v != 0), default=-1)
    return {k: v for k, v in ns.items() if v == m}

print({k: closest(v) for k, v in d.items()})