91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用python實現dijkstra最短路由算法的案例

發布時間:2021-04-07 13:00:26 來源:億速云 閱讀:437 作者:小新 欄目:開發技術

這篇文章主要介紹怎么使用python實現dijkstra最短路由算法的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Dijkstra算法:又稱迪杰斯特拉算法,迪杰斯特拉算法是由荷蘭計算機科學家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是從一個頂點到其余各頂點的最短路徑算法,解決的是有向圖中最短路徑問題。迪杰斯特拉算法主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止百度百科。

注意:Dijkstra算法不能處理包含負邊的圖

# dijkstra算法實現,有向圖和路由的源點作為函數的輸入,最短路徑最為輸出
def dijkstra(graph,src):
 # 判斷圖是否為空,如果為空直接退出
 if graph is None:
 return None
 nodes = [i for i in range(len(graph))] # 獲取圖中所有節點
 visited=[] # 表示已經路由到最短路徑的節點集合
 if src in nodes:
 visited.append(src)
 nodes.remove(src)
 else:
 return None
 distance={src:0} # 記錄源節點到各個節點的距離
 for i in nodes:
 distance[i]=graph[src][i] # 初始化
 # print(distance)
 path={src:{src:[]}} # 記錄源節點到每個節點的路徑
 k=pre=src
 while nodes:
 mid_distance=float('inf')
 for v in visited:
  for d in nodes:
  new_distance = graph[src][v]+graph[v][d]
  if new_distance < mid_distance:
   mid_distance=new_distance
   graph[src][d]=new_distance # 進行距離更新
   k=d
   pre=v
 distance[k]=mid_distance # 最短路徑
 path[src][k]=[i for i in path[src][pre]]
 path[src][k].append(k)
 # 更新兩個節點集合
 visited.append(k)
 nodes.remove(k)
 print(visited,nodes) # 輸出節點的添加過程
 return distance,path
if __name__ == '__main__':
 graph_list = [ [0, 2, 1, 4, 5, 1],
  [1, 0, 4, 2, 3, 4],
  [2, 1, 0, 1, 2, 4],
  [3, 5, 2, 0, 3, 3],
  [2, 4, 3, 4, 0, 1],
  [3, 4, 7, 3, 1, 0]]

 distance,path= dijkstra(graph_list, 0) # 查找從源點0開始帶其他節點的最短路徑
 print(distance,path)

節點的遍歷過程如下:

怎么使用python實現dijkstra最短路由算法的案例

最短路徑輸出:

怎么使用python實現dijkstra最短路由算法的案例

以上是“怎么使用python實現dijkstra最短路由算法的案例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广汉市| 泗阳县| 鹤峰县| 通渭县| 固安县| 应用必备| 九龙城区| 贵定县| 莱西市| 万安县| 运城市| 九龙县| 安义县| 大荔县| 天长市| 崇信县| 西乌珠穆沁旗| 江城| 武冈市| 德令哈市| 大余县| 乐昌市| 新疆| 龙门县| 军事| 威信县| 高要市| 达州市| 那坡县| 建宁县| 宣城市| 肃北| 安塞县| 湖南省| 天长市| 嵊泗县| 高台县| 中牟县| 彰化县| 东兰县| 元朗区|