2021-05-23

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值