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

python實現(xiàn)Dijkstra靜態(tài)尋路算法

 更新時間:2019年01月17日 15:37:24   作者:By漫步  
這篇文章主要介紹了python實現(xiàn)Dijkstra靜態(tài)尋路算法,常用于路由算法或者作為其他圖算法的一個子模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下

算法介紹

迪科斯徹算法使用了廣度優(yōu)先搜索解決賦權(quán)有向圖或者無向圖的單源最短路徑問題,算法最終得到一個最短路徑樹。該算法常用于路由算法或者作為其他圖算法的一個子模塊。

當然目前也有人將它用來處理物流方面,以獲取代價最小的運送方案。

算法思路

Dijkstra算法采用的是一種貪心的策略。

1.首先,聲明一個數(shù)組dis來保存源點到各個頂點的最短距離和一個保存已經(jīng)找到了最短路徑的頂點的集合T。
2.其次,原點 s 的路徑權(quán)重被賦為 0 (dis[s] = 0)。若對于頂點 s 存在能直接到達的邊(s,m),則把dis[m]設(shè)為w(s, m),同時把所有其他(s不能直接到達的)頂點的路徑長度設(shè)為無窮大。初始時,集合T只有頂點s。
3.從dis數(shù)組選擇最小值,則該值就是源點s到該值對應(yīng)的頂點的最短路徑,并且把該點加入到T中,此時完成一個頂點。
4.再次,看看新加入的頂點是否可以到達其他頂點并且看看通過該頂點到達其他點的路徑長度是否比源點直接到達短,如果是,那么就替換這些頂點在dis中的值。
5.最后,從dis中找出最小值,重復(fù)上述動作,直到T中包含了圖的所有頂點(可以到達的)。

算法圖形演示

現(xiàn)在有圖如下:

每個線的權(quán)重以及標識如圖所示。

第一步:

建立dis數(shù)組和T數(shù)組。
首先從起點A 開始,將A可以直接到達的頂點的權(quán)重記錄在dis數(shù)組中,無法直達的記錄無窮大(當前使用FFFF表示無窮大)。

將當前選擇的頂點加入數(shù)組T:

第二步:

從dis數(shù)組中選擇一個不在T數(shù)組中的頂點的最小權(quán)重值的頂點,當前選擇為B頂點,并將B可以直接到達的頂點的相關(guān)權(quán)重和當前dis中的權(quán)重值比較,如果當前dis權(quán)重值大,則替換:

將B加入數(shù)組T:

第三步:

依次選擇頂點C:

將C加入數(shù)組T:

第四步:

依次選擇頂點D:

將D加入數(shù)組T:

第五步:

依次選擇頂點E:

將E加入數(shù)組T:

第六步:

依次選擇頂點F:

將F加入數(shù)組T:

因為所有的頂點都已經(jīng)在T數(shù)組中了,算法結(jié)束。
這樣就求得了從A點到各個頂點的最優(yōu)解。

可以看到A頂點無法直達F頂點。

代碼表示:

(代碼中使用999代表FFF)

#encoding:utf-8

import copy
"""
圖的表示方式
鄰接矩陣
999代表無限遠
"""
tuG=[[0, 10, 20, 999, 999, 999],
 [999, 0, 999, 20, 70, 999],
 [999, 999, 0, 50, 30, 999],
 [999, 999, 999, 0, 999, 999],
 [999, 999, 999, 10, 0, 999],
 [999, 999, 999, 20, 20, 0]];

tuX = 6;

# 設(shè)置原點到其他定點的各個距離
dis = copy.deepcopy(tuG[0]);

def Dijkstra(G,v0):
 """
 使用 Dijkstra 算法計算指定點 v0 到圖 G 中任意點的最短路徑的距離
 INF 為設(shè)定的無限遠距離值
 """
 t = [];
 minv = v0;

 while len(t) <= tuX:
 t.append(minv);
 #以當前點的中心向外擴散
 for w in range(0, tuX):
  if dis[minv] + G[minv][w] < dis[w]:
  dis[w] = dis[minv] + G[minv][w]

 tmp = 1000;
 for i in range(0, tuX):
  tmpFlag = False;
  for j in range(0, len(t)):
  if i == t[j]:
   tmpFlag = True;
   break;

  if tmpFlag == True:
  continue;

  if tmp > dis[i]:
  tmp = dis[i];
  minv = i;

if __name__ == '__main__': 
 Dijkstra(tuG,0); 
 print dis;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python將列表中的元素轉(zhuǎn)化為數(shù)字并排序的示例

    Python將列表中的元素轉(zhuǎn)化為數(shù)字并排序的示例

    今天小編就為大家分享一篇Python將列表中的元素轉(zhuǎn)化為數(shù)字并排序的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • windows下python之mysqldb模塊安裝方法

    windows下python之mysqldb模塊安裝方法

    這篇文章主要介紹了windows下python之mysqldb模塊安裝方法,需要的朋友可以參考下
    2017-09-09
  • Python中的heapq模塊源碼詳析

    Python中的heapq模塊源碼詳析

    這篇文章主要給大家介紹了關(guān)于Python中heapq模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Python腳本實現(xiàn)快速整理圖片文件

    Python腳本實現(xiàn)快速整理圖片文件

    這篇文章主要為大家詳細介紹了Python如何通過三個腳本實現(xiàn)快速整理圖片文件,適用于日常數(shù)據(jù)整理與批量處理場景,感興趣的小伙伴可以了解下
    2025-12-12
  • 基于Python開發(fā)一個文件頭簽名分析工具

    基于Python開發(fā)一個文件頭簽名分析工具

    本文介紹了一個功能強大的文件頭簽名分析工具的實現(xiàn)原理和開發(fā)過程,該工具通過讀取文件頭部二進制簽名來識別文件真實類型,即使用戶修改了文件擴展名也能準確判斷,文章詳細解析了核心算法、GUI設(shè)計以及技術(shù)實現(xiàn)細節(jié),為開發(fā)類似工具提供了完整參考,需要的朋友可以參考下
    2025-05-05
  • Python使用ImageIO庫實現(xiàn)從圖像到視頻的高效讀寫

    Python使用ImageIO庫實現(xiàn)從圖像到視頻的高效讀寫

    在現(xiàn)代圖像處理與計算機視覺項目中,我們幾乎無時無刻不需要與圖像文件或視頻數(shù)據(jù)打交道,無論是讀取一張照片、保存圖像處理結(jié)果,還是從視頻中提取幀序列,這些操作的第一步都是高效、正確地讀寫圖像數(shù)據(jù),所以本文介紹了Python如何使用ImageIO庫實現(xiàn)從圖像到視頻的高效讀寫
    2025-11-11
  • 詳解重置Django migration的常見方式

    詳解重置Django migration的常見方式

    這篇文章主要介紹了詳解重置Django migration的常見方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Python搭建HTTP服務(wù)器和FTP服務(wù)器

    Python搭建HTTP服務(wù)器和FTP服務(wù)器

    這篇文章主要為大家詳細介紹了Python搭建HTTP服務(wù)器和FTP服務(wù)器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • python生成IP段的方法

    python生成IP段的方法

    這篇文章主要介紹了python生成IP段的方法,涉及Python文件讀寫及隨機數(shù)操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python實現(xiàn)登陸文件驗證方法

    Python實現(xiàn)登陸文件驗證方法

    本篇文章中我們給大家分享了關(guān)于Python實現(xiàn)登陸文件驗證的方法和技巧,有興趣的朋友們參考學(xué)習(xí)下。
    2018-10-10

最新評論

牟定县| 广汉市| 石屏县| 望奎县| 德阳市| 峨眉山市| 峨眉山市| 邵武市| 鲁山县| 长顺县| 湖北省| 石屏县| 沙河市| 新建县| 西和县| 武强县| 芦溪县| 乐昌市| 遵义市| 沭阳县| 茂名市| 大理市| 大兴区| 荆门市| 巍山| 海城市| 九江市| 池州市| 泰和县| 平湖市| 灵璧县| 遂溪县| 河津市| 怀化市| 曲沃县| 囊谦县| 铜川市| 思茅市| 鹤壁市| 凉山| 城固县|