国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

基于Python實現(xiàn)迪杰斯特拉和弗洛伊德算法

2020-02-16 00:43:28
字體:
來源:轉載
供稿:網友

圖搜索之基于Python的迪杰斯特拉算法和弗洛伊德算法,供大家參考,具體內容如下

Djstela算法

#encoding=UTF-8MAX=9'''Created on 2016年9月28日@author: sx'''b=999G=[[0,1,5,b,b,b,b,b,b],/ [1,0,3,7,5,b,b,b,b],/ [5,3,0,b,1,7,b,b,b],/ [b,7,b,0,2,b,3,b,b],/ [b,5,1,2,0,3,6,9,b],/ [b,b,7,b,3,0,b,5,b],/ [b,b,b,3,6,b,0,2,7],/ [b,b,b,b,9,5,2,0,4],/ [b,b,b,b,b,b,7,4,0]]P=[]D=[]def Djstela(G,P,D): final=[] for i in range(0,len(G)):  final.append(0)  D.append(G[0][i])  P.append(0) D[0]=0 final[0]=1 k=0 for v in range(1,len(G)):  min=999  for w in range(0,len(G)):   if final[w]==0 and D[w]<min:    k=w    min=D[w]  final[k]=1   for t in range(0,len(G)):   if min+G[k][t]<D[t]:    D[t]=min+G[k][t]    P[t]=k print("/n最短路徑/n",D,"/n","/n前一個選擇/n",P)def search(x): print("選擇的終點",x,"最短路徑",D[x]) print("鄰接矩陣/n")for i in range(0,9): print(G[i])Djstela(G, P, D)q=input("/n請輸入終點")search(int(q))

FLOYD算法

#encoding=UTF-8'''Created on 2016年9月28日@author: sx'''t=0b=999G=[[0,1,5,b,b,b,b,b,b],/ [1,0,3,7,5,b,b,b,b],/ [5,3,0,b,1,7,b,b,b],/ [b,7,b,0,2,b,3,b,b],/ [b,5,1,2,0,3,6,9,b],/ [b,b,7,b,3,0,b,5,b],/ [b,b,b,3,6,b,0,2,7],/ [b,b,b,b,9,5,2,0,4],/ [b,b,b,b,b,b,7,4,0]]P=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],/ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],/ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]D=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],/ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],/ [0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]def Floyd(G,P,D): t=0 for u in range(0,len(G)):  for s in range(0,len(G)):   D[u][s]=G[u][s]       P[u][s]=s for k in range(0,len(G)):  for v in range(0,len(G)):   for w in range(0,len(G)):    if D[v][w]>D[v][k]+D[k][w]:     t=t+1     D[v][w]=D[v][k]+D[k][w]     P[v][w]=P[v][k]   Floyd(G, P, D)def search(s,u): lenth=D[s][u] print("路徑長度為",lenth) f=P[s][u] foot=[s,f] if f==u:  print("無需規(guī)劃,0步") while f!=u:  f=P[f][u]   foot.append(f)  for i in range(0,len(foot)):  if i==0:   print("起  點____",foot[i])  elif i==len(foot)-1:   print("終  點____",foot[i],"步長___",G[foot[i-1]][foot[i]])  else:   print("第",i,"點____",foot[i],"步長___",G[foot[i-1]][foot[i]])print("鄰接矩陣")for i in range(0,9): print(G[i])s=input("請輸入起點0-8/n")u=input("請輸入終點0-8/n")Floyd(G, P, D)search(int(s),int(u))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁乡县| 琼结县| 科尔| 中江县| 洛川县| 广宗县| 灵山县| 都匀市| 阜宁县| 兰溪市| 乌兰浩特市| 邢台县| 大渡口区| 阳泉市| 沙湾县| 浦东新区| 邯郸县| 稻城县| 祁连县| 山东| 大厂| 安远县| 泰顺县| 孟津县| 达尔| 巩留县| 马鞍山市| 高碑店市| 南涧| 黄陵县| 自贡市| 公安县| 景德镇市| 嘉定区| 天长市| 进贤县| 安仁县| 泌阳县| 秦安县| 广河县| 昌宁县|