【笔试/面试】—— 有向无环图(DAG)的最短路径问题(动态规划)

  • W:权重图
  • d[u]:u 到终点的距离
  • s、t:始点和终点
def dag_sp(W, s, t, d):
    if s == t:
        return 0
    if s not in d:
        d[s] = min(W[s][v] + dag_sp(W, v, t, d) for v in W[s])
    return d[s]
DAG = {
    'a': {'b':0},
    'b': {'c':4, 'd':6},
    'c': {'g':2, 'h':-6},
    'd': {'f':3, 'e':5},
    'e': {'g':0, 'h':-6},
    'f': {'i':-1},
    'g': {'h':4},
    'h': {'i':7},
    'i': {}
}
d = {}
print(dag_sp(DAG, 'a', 'i', d))
                            # 5

你可能感兴趣的:(算法)