import numpy as np
def Floyd(g):
for k in range(g.shape[0]):
for i in range(g.shape[0]):
for j in range(g.shape[0]):
if g[i][j] > g[i][k] + g[k][j]:
g[i][j] = g[i][k] + g[k][j]
path[i][j] = k
def printF(x):
print(x,end='->')
def visis(n,m):
if path[n][m] == -1:
printF(n)
printF(m)
return 0
visis(n,int(path[n][m]))
printF(m)
if __name__ == "__main__":
inf = np.inf
g =np.array([[0,5,inf,inf,1,inf],
[10,0,inf,4,inf,2],
[inf,10,0,7,inf,2],
[inf,inf,2,0,inf,inf],
[1,inf,inf,inf,0,inf],
[inf,6,4,inf,inf,0]])
path = np.zeros((g.shape[0],g.shape[0]))-1
Floyd(g)
n,m = 4,3 #从n结点4到结点3
print("从结点{}到结点{}的最短路径为:".format(n, m))
visis(n,m)
print()
print("最小花费路径为{}".format(g[n][m]))
【数据结构】 Python实现Floyd算法
最新推荐文章于 2024-06-21 18:00:16 发布