最短路径Dijkstra (Python3)

求出从给定一个点到任意一个点的最短路。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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值