示例如下:
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)