迪杰斯特拉算法python的实现
参考资料:数据结构(清华大学出版社)
最近放暑假,想重拾数据结构,因此写了个迪杰斯特拉的代码练练手,可能会有bug。
没有经过多次测试,哈哈
如何插入一段漂亮的代码片
// 采用矩阵来存储有向图
import numpy as np
g=np.array([1000,1000,10,1000,30,100,1000,1000,5,1000,1000,1000,1000,1000,1000,50,1000,1000,
1000,1000,1000,1000,1000,10,1000,1000,1000,20,1000,60,1000,1000,1000,1000,1000,1000])
g=g.reshape((6,6))
def dijkastra(o,p):#int,返回最短o点到p点的最短路径
S=[o]
t=[]
d=[]
dic={}
while len(S)<6:
for i in range(0,6):
if i not in S:
if g[o][i]!=1000:
t.append(g[o,i])
dic[g[o][i]]=i
j=t[0]
for i in t[1:]:
if i<j:
j=i
S.append(dic[j])
if dic[j]==p:
return j
t=[]
d=[]
dic={}
for i in range(0,6):
if i not in S:
for j in S:
if j!=o:
if g[j][i] != 1000:
if g[j][i]+g[o][j]<g[o][i]:
g[o][i]=g[j][i]+g[o][j]
a=dijkastra(0,5)
print(a)
第一篇文章,比较简陋,哈哈哈