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)