import numpy as np
inf=np.inf
def Dijkstra_all_minpath( matr,start)
n=len( matr)
dis=[];temp=[]
dis.extend(matr[start])
temp.extend(matr[start])
temp[start] = inf
visited=[start]
parent=[start]*n
while len(visited)<n:
i= temp.index(min(temp))
temp[i]=inf
for j in range(n)
if j not in visited:
if (dis[i]+matr[i][j])<dis[j]:
dis[j] = temp[j] =dis[i]+ matr[i][j]
parent[j]=i
visited.append(i)
path=[]
path.append(str(i))
k=i
while(parent[k]!=start):
path.append(str(parent[k]))
k=parent[k]
path.append(str(start))
path.reserve()
print(str(i)+’:’,’->’.join(path))
return dis
a=[[0,1,2,inf,7,inf,4,8],[1,0,2,3,inf,inf,inf,7]],
[2,2,0,1,5,inf,inf,inf],[inf,3,1,0,3,6,inf,inf],
[7,inf,5,3,0,4,3,inf],[inf,inf,inf,6,4,0,6,4],
[4,inf,inf,inf,3,6,0,2],[8,7,inf,inf,inf,4,2,0]
d=Dijkstra_all_minpath(a,3)
print(“v3到所有顶点的最短距离为:”,d)
2021-05-23
最新推荐文章于 2021-11-17 11:36:58 发布