• 贡献python prim多源最短路搜索算法 numba加速方法的demo和总结


    1、测试两个算法

    #coding:utf-8
    import time
    import numba
    import numpy as np
    '''
    使用numba加速总结,
    (1)、在数值计算比如int float double等类型计算时
    使用numba进行加速,速度可加快,string类型数据不能使用numba进行加速。
    (2)、在数值计算时:小循环别使用numba,循环大于100以上可使用numba加速。
    (3)、在小循环的时候切换进程发费时间,所以速度慢。
    (4)、在循环计算小于等于1秒之内的计算时间,别使用numba加速,大于1秒的计算时间可使用。
    '''
    @numba.jit
    def test1(ls):
        n = len(ls)
        dt = np.zeros((n,n))
        for i,item in enumerate(ls):
            for j,val in enumerate(ls):
                dt[i,j]=(val+item)
    
        return dt
    
    @numba.njit
    def prim(G,start=0):
        N = len(G)
        k = start
        MST = []
        vis = np.zeros(N)
        vis[0] = 1
    
        while k < N-1:
            minw = np.inf
            u,v=0,0
            for i in range(N):
                for j in range(N):
                    if vis[i] ==1 and vis[j] == 0:
                        if G[i,j] < minw:
                            minw = G[i,j]
                            u,v=i,j
            vis[v] = 1
            k = k+1
            MST.append([u,v,minw].copy())
    
        return MST
    
    if __name__=="__main__":
        ls = list(float(i) for i in range(30000))
        n=500
        G = np.random.randint(100,1000,(n,n))
        st = time.time()
        # re = test1(ls)
        re1 = prim(G)
        print(re1[-10:])
        print(time.time()-st)
    

      

  • 相关阅读:
    RxJava API使用示例
    使用create-react-app模板模仿12306app
    web 基本概念辨异 —— URI 与 URL
    RESTful 架构与 RESTful 服务
    python startswith和endswith
    python enumerate函数用法
    python中PIL.Image和OpenCV图像格式相互转换
    Linux查看当前在线用户信息
    Linux查看GPU信息和使用情况
    python中的编码和解码
  • 原文地址:https://www.cnblogs.com/wuzaipei/p/11432559.html
Copyright © 2020-2023  润新知