python編寫dijkstra演算法

2021-06-29 14:51:29 字數 1442 閱讀 3744

'''

示例結果:

init

[1, 0, 0, 0, 0, 0] [0, 30, 15, 1000, 1000, 1000] [0, 0, 0, 0, 0, 0]

process

[1, 1, 1, 1, 1, 1] [0, 25, 15, 50, 40, 30] [2, 1, 5, 4, 3, 0]

'''max_num = 1000

v_len = 6 #頂點數

s = [0 for i in range(v_len)] #作為mark容器,檢驗頂點是否已經被新增

path = s[:] #儲存新增頂點過程

dist = #放置到每個頂點的最短長度

'''鄰接矩陣'''

edge = [

[0,30,15,max_num,max_num,max_num],

[5,0,max_num,max_num,20,30],

[max_num,10,0,max_num,max_num,15],

[max_num,max_num,max_num,0,max_num,max_num],

[max_num,max_num,max_num,10,0,max_num],

[max_num,max_num,max_num,30,10,0]

]def init(start):

for i in range(0,v_len):

dist[start] = 0

s[start] = 1

path[0] = start

print 'init\n',s,dist,path #初始化結果顯示

def find_min(): #開始處理

print 'process'

u = 0

for i in range(0,v_len-1):

mini = max_num

for j in range(0,v_len):

if(not s[j] and dist[j]u = j

mini = dist[j]

s[u] = 1

path[i] = u

for k in range(0,v_len):

if(not s[k] and edge[u][k]dist[k] = dist[u] + edge[u][k]

print s,dist,path; #顯示結果

def py_dijkstra(start):

init(start)

find_min()

if(__name__=="__main__"):

py_dijkstra(0) #以0為源點

python怎樣編寫 PYTHON怎樣編寫自動化

1級2018 09 18 回答 就直接寫指令碼,給你舉給例子 編寫工具 1.設計目標 首先說一下我要工具的功能 遍歷某個目錄下包括其下子目錄中所有指定的字尾檔案,然後為這些檔案的頭部插入指定的字串。2.使用場景 設計這樣的工具起因是我最近在將之前 csdn 中的部落格搬運到自己的 hexo 部落格空...

python編寫庫存管理 python編寫商品管理

1 實現乙個商品管理的程式。輸出1,新增商品 2 刪除商品 3 檢視商品 新增商品 商品的名稱 商品如果已經存在的話,提示商品商品已經存在 商品的 x 數量只能為大於0的整數 商品的數量 數量只能為大於0的整數 2 刪除商品 輸入商品名稱 iphone 如果輸入的商品名稱不存在,要提示不存在 3 檢...

python編寫規範

每行 盡量不超過 80 個字元 在特殊情況下可以略微超過 80 但最長不得超過 120 理由 簡單說,自然語言使用雙引號,機器標示使用單引號,因此 裡 多數應該使用 單引號 class a def init self pass def hello self pass def main pass 正確...