最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)Dijkstra算法

 更新時間:2018年10月17日 10:49:24   作者:no-96  
今天小編就為大家分享一篇關(guān)于Python實現(xiàn)Dijkstra算法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

Dijkstra算法

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

迪杰斯特拉算法是求從某一個起點到其余所有結(jié)點的最短路徑,是一對多的映射關(guān)系,是一種貪婪算法

示例:

算法

算法實現(xiàn)流程思路:
迪杰斯特拉算法每次只找離起點最近的一個結(jié)點,并將之并入已經(jīng)訪問過結(jié)點的集合(以防重復(fù)訪問,陷入死循環(huán)),然后將剛找到的最短路徑的結(jié)點作為中間結(jié)點來更新相鄰結(jié)點的路徑長度,這樣循環(huán)找到圖中一個個結(jié)點的最短路徑。

"""
輸入
graph 輸入的圖
src 原點
返回
dis 記錄源點到其他點的最短距離
path 路徑
"""
import json
def dijkstra(graph,src):
  if graph ==None:
    return None
  # 定點集合
  nodes = [i for i in range(len(graph))] # 獲取頂點列表,用鄰接矩陣存儲圖
  # 頂點是否被訪問
  visited = []
  visited.append(src)
  # 初始化dis
  dis = {src:0}# 源點到自身的距離為0
  for i in nodes:
    dis[i] = graph[src][i]
  path={src:{src:[]}} # 記錄源節(jié)點到每個節(jié)點的路徑
  k=pre=src
  while nodes:
    temp_k = k
    mid_distance=float('inf') # 設(shè)置中間距離無窮大
    for v in visited:
      for d in nodes:
        if graph[src][v] != float('inf') and graph[v][d] != float('inf'):# 有邊
          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
    if k!=src and temp_k==k:
      break
    dis[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(nodes)
  return dis,path
if __name__ == '__main__':
  # 輸入的有向圖,有邊存儲的就是邊的權(quán)值,無邊就是float('inf'),頂點到自身就是0
  graph = [ 
    [0, float('inf'), 10, float('inf'), 30, 100],
    [float('inf'), 0, 5, float('inf'), float('inf'), float('inf')],
    [float('inf'), float('inf'), 0, 50, float('inf'), float('inf')],
    [float('inf'), float('inf'), float('inf'), 0, float('inf'), 10],
    [float('inf'), float('inf'), float('inf'), 20, 0, 60],
    [float('inf'), float('inf'), float('inf'), float('inf'), float('inf'), 0]]
  dis,path= dijkstra(graph, 0) # 查找從源點0開始帶其他節(jié)點的最短路徑
  print(dis)
  print(json.dumps(path, indent=4))


總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Python處理缺失數(shù)據(jù)的多種方式

    Python處理缺失數(shù)據(jù)的多種方式

    在數(shù)據(jù)分析和數(shù)據(jù)處理的過程中,缺失數(shù)據(jù)(Missing Data)是一個常見的問題,缺失數(shù)據(jù)的存在可能會影響模型的準(zhǔn)確性和預(yù)測的可靠性,因此正確處理缺失數(shù)據(jù)是數(shù)據(jù)分析的重要步驟,所以本文給大家介紹了Python處理缺失數(shù)據(jù)的多種方式,需要的朋友可以參考下
    2024-08-08
  • Python模塊域名dnspython解析

    Python模塊域名dnspython解析

    本文主要介紹了Python模塊域名dnspython解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python itchat實現(xiàn)微信自動回復(fù)的示例代碼

    python itchat實現(xiàn)微信自動回復(fù)的示例代碼

    本篇文章主要介紹了python itchat實現(xiàn)微信自動回復(fù)的示例代碼,可以實現(xiàn)微信自動回復(fù),有興趣的可以了解一下
    2017-08-08
  • Keras 在fit_generator訓(xùn)練方式中加入圖像random_crop操作

    Keras 在fit_generator訓(xùn)練方式中加入圖像random_crop操作

    這篇文章主要介紹了Keras 在fit_generator訓(xùn)練方式中加入圖像random_crop操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python實現(xiàn)程序判斷季節(jié)的代碼示例

    Python實現(xiàn)程序判斷季節(jié)的代碼示例

    今天小編就為大家分享一篇關(guān)于Python實現(xiàn)程序判斷季節(jié)的代碼示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python閉包和裝飾器你了解嗎

    python閉包和裝飾器你了解嗎

    這篇文章主要為大家詳細介紹了Python的閉包和裝飾器,何為閉包?何為裝飾器?感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-08-08
  • python使用socket創(chuàng)建tcp服務(wù)器和客戶端

    python使用socket創(chuàng)建tcp服務(wù)器和客戶端

    這篇文章主要為大家詳細介紹了python使用socket創(chuàng)建tcp服務(wù)器和客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python爬蟲使用正則爬取網(wǎng)站的實現(xiàn)

    python爬蟲使用正則爬取網(wǎng)站的實現(xiàn)

    這篇文章主要介紹了python爬蟲使用正則爬取網(wǎng)站的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python虛擬環(huán)境virtualenv的使用教程

    python虛擬環(huán)境virtualenv的使用教程

    本篇文章主要介紹了python虛擬環(huán)境virtualenv的使用教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Python爬取當(dāng)網(wǎng)書籍?dāng)?shù)據(jù)并數(shù)據(jù)可視化展示

    Python爬取當(dāng)網(wǎng)書籍?dāng)?shù)據(jù)并數(shù)據(jù)可視化展示

    這篇文章主要介紹了Python爬取當(dāng)網(wǎng)書籍?dāng)?shù)據(jù)并數(shù)據(jù)可視化展示,下面文章圍繞Python爬蟲的相關(guān)資料展開對爬取當(dāng)網(wǎng)書籍?dāng)?shù)據(jù)的詳細介紹,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-01-01

最新評論

正蓝旗| 昆明市| 鹤山市| 康平县| 长兴县| 齐齐哈尔市| 晋州市| 汉阴县| 南川市| 砀山县| 兴隆县| 威宁| 灵石县| 彭水| 马龙县| 广汉市| 肇东市| 尖扎县| 遵化市| 平江县| 建始县| 清新县| 年辖:市辖区| 上思县| 虞城县| 潍坊市| 霍城县| 洛宁县| 如皋市| 开江县| 大洼县| 博罗县| 滁州市| 凤翔县| 新乐市| 当涂县| 安乡县| 保山市| 普洱| 扎赉特旗| 天等县|