动态规划求单源最短路径python实现


状态转移方程

伪代码

测试图

python代码实现


from math import inf

# 初始化邻接矩阵
matrix = [[inf, -3, inf, 3, 4, 2],
          [inf, inf, inf, inf, 6, inf],
          [inf, -4, inf, 8, inf, inf],
          [inf, inf, inf, inf, inf, -3],
          [inf, inf, -1, inf, inf, inf],
          [inf, inf, -2, inf, inf, inf],
          ]
# 顶点个数
n = len(matrix)
# 初始化dp表
table = [[inf] * n for x in range(n)]
# 设置起点start,
table[0][0] = 0

# 对于使用至多n-1条边
for i in range(1, n):
    # 对于顶点v,求start到v的最短路径
    for v in range(n):
        table[i][v] = table[i - 1][v]  # 起始状态
        for k in range(n):
            # 检测每一个进入v的边,更新table
            table[i][v] = min(table[i][v], matrix[k][v] + table[i - 1][k])


结果:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM