编程语言
首页 > 编程语言> > 在python上遍历图形时获取权重之和

在python上遍历图形时获取权重之和

作者:互联网

我应该如何进行呢?
这是一项作业,我对此有很大的疑问.
现在,问题是我不能使用库.

我有一个像图:

{'A': {'C': 2, 'B': 10}, 'C': {'B': 7, 'D': 2}, 'B': {}, 'D': {'A': 5, 'B': 4}}

使用字典,取自文件.

我正在http://www.python.org/doc/essays/graphs/使用算法来查找所有路径,因此那里没有问题.

但是,既然我拥有从一个点到另一个点的所有路径,我就需要对权重求和并获得全部成本.

如果您能帮助我,并指导我采取一些好的方法进行处理,我将不胜感激.

解决方法:

gr = {'A': {'C': 2, 'B': 10},
      'C': {'B': 7, 'D': 2},
      'B': {'E': 2},
      'D': {'A': 5, 'B': 4, 'E': 3}
      'E': {}}

def paths(gr, frm, to, path_len=0, visited=None):

    if frm == to:
        return [[to, path_len]]

    visited = visited or []
    result = []
    for point, length in gr[frm].iteritems():
        if point in visited:
            continue
        visited.append(point)
        for sub_path in paths(gr, point, to, path_len + length, visited[:]):
            result.append([frm] + sub_path)

    return result

>>> print paths(gr, 'A', 'E')
[['A', 'C', 'B', 'E', 11], ['A', 'C', 'D', 'E', 7], ['A', 'B', 'E', 12]]

标签:graph-traversal,graph,python
来源: https://codeday.me/bug/20191201/2078505.html