示例如下:

import pandas as pd
import numpy as np
data = [(0, 1, 12, np.inf, np.inf, np.inf),
(np.inf, 0, 9, 3, np.inf, np.inf),
(np.inf, np.inf, 0, np.inf, 5, np.inf),
(np.inf, np.inf, 4, 0, 13, 15),
(np.inf, np.inf, np.inf, np.inf, 0, 4),
(np.inf, np.inf, np.inf, np.inf, np.inf, 0)]
disance = pd.DataFrame(data, index=[i for i in range(1, len(data) + 1)], columns=[i for i in range(1, len(data) + 1)])
print("邻接矩阵为:")
print(disance)
print("-"*20)
path = pd.DataFrame(np.arange(1, 37).reshape(6, 6), index=[i for i in range(1, len(data) + 1)],
columns=[i for i in range(1, len(data) + 1)])
for i in range(len(path)):
path.iloc[i, :] = path.iloc[0, :]
for k in range(len(data)):
for i in range(len(data)):
for j in range(len(data)):
if disance.iloc[i, j] > disance.iloc[i, k] + disance.iloc[k, j]:
path.iloc[i, j] = path.iloc[i, k]
disance.iloc[i, j] = disance.iloc[i, k] + disance.iloc[k, j]
print("最短距离矩阵:")
print(disance)
print("-"*20)
print("路径矩阵为:")
print(path)
本文通过Python示例展示了如何使用Floyd算法计算图中各顶点间的最短路径。包括创建邻接矩阵并利用该算法更新最短距离矩阵及路径矩阵。
349

被折叠的 条评论
为什么被折叠?



