迪杰斯特拉算法的python实现

迪杰斯特拉算法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)
                


第一篇文章,比较简陋,哈哈哈

TYP
发布了7 篇原创文章 · 获赞 0 · 访问量 553

猜你喜欢

转载自blog.csdn.net/weixin_44000193/article/details/95525561