求出从给定一个点到任意一个点的最短路。Dijkstra方法只适合所有权重大于等于零的情形。
例如:给出一个赋权图,求从点V0(startpoint=0)到任意点的最短路径。
键盘输入点的个数n和权重矩阵A:
import numpy as np
n=int(input('n='))#点的数量
A=np.zeros(shape=(n,n))
for j in range(n):
A[j]=np.array(input('Input:').split(','))
用Dijkstra方法求从点V0(startpoint=0)到任意点的最短路径:
def kijskstra(A,startpoint):
A[A==0]=float('inf')
l=len(A)
V=set(range(l))
s={startpoint}
p=np.zeros(l)
T=np.repeat(float('inf'),l)
lam=np.repeat('M',l);lam[startpoint]=0
k=startpoint
flag=1
while flag==1:
if s==V:
flag=0
else:
T_cop=V-s
loc=[i for i in rang