動態規划求單源最短路徑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