この方法を加速寄与パイソンプリムマルチソース最短経路探索アルゴリズムnumbaをデモおよび要約

図1に示すように、2個のテスト・アルゴリズム

#1 コーディング:UTF-8 
インポート時間
 インポートnumba
 インポートNP AS numpyの
 「」 ' 
numba加速要約を使用して、
計算のフロートダブル他のタイプ(1)、intなどの数値計算
numbaアクセラレーションを使用して、速度が文字列型のデータができません、加速することができます使用numbaが加速しました。
(2)数値計算:numba小さなループを使用しないで、ループ100は、上記numbaアクセラレーションを使用することができるよりも大きいです。
(3)、小さなサイクルは、とても遅い毛髪の時間のかかるプロセスを切り替えるとき。
(4)1秒を超える計算時間を使用することができる、1秒以内のサイクル時間より少ない計算に他のnumba加速の使用を算出します。
'' ' 
@ Numba.jit 
DEF TEST1(LS):
    N- = LEN(LS)
    DT = np.zeros((N、N-))
     のために I、項目列挙(LS)
         のために J、ヴァル =(+ヴァル列挙(LS) :
            DT [I、J] アイテム)

    リターンのDT 

@のnumba.njit 
DEFプリム(G、START = 0):
    N = LEN(G)
    kは = 開始
    MST = [] 
    VIS = np.zeros(N)
    VISを[0] = 1 一方、 K <N-1 
        minw = np.inf 
        U、V = 0,0
         のための:レンジ(N)
             のための J レンジ(N):
                 もし VIS [I] == 1 及び VIS [J] = =

    0:
                     もし G [I、J] < minw:
                        minw = G [I、J] 
                        U、V = I、J 
        VIS [V] = 1 
        、K = K + 1 
        MST.append([U、V、minw]。コピー())

    戻りMST 

場合 __name__ == " __main__ " 
    LS =リスト(フロート(I)のために I における範囲(30000 ))
    N = 500 
    、G = np.random.randint(100,1000 、(N、N) )
    ST = time.time()
    再= TEST1(LS) 
    RE1 = プリム(G)
     プリント(RE1 [-10 :])
     プリント(time.time() - ST)

 

おすすめ

転載: www.cnblogs.com/wuzaipei/p/11432559.html