成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幾大最短路徑算法比較

開發 后端 算法
用于解決最短路徑問題的算法被稱做“最短路徑算法”,有時被簡稱作“路徑算法”。最常用的路徑算法有:Dijkstra算法、A*算法、SPFA算法、Bellman-Ford算法和Floyd-Warshall算法,本文主要介紹其中的三種。

最短路徑問題是圖論研究中的一個經典算法問題,旨在尋找圖(由結點和路徑組成的)中兩結點之間的最短路徑。

算法具體的形式包括:

確定起點的最短路徑問題:即已知起始結點,求最短路徑的問題。

確定終點的最短路徑問題:與確定起點的問題相反,該問題是已知終結結點,求最短路徑的問題。在無向圖中該問題與確定起點的問題完全等同,在有向圖中該問題等同于把所有路徑方向反轉的確定起點的問題。   

確定起點終點的最短路徑問題:即已知起點和終點,求兩結點之間的最短路徑。   

全局最短路徑問題:求圖中所有的最短路徑。

Floyd

求多源、無負權邊的最短路。用矩陣記錄圖。時效性較差,時間復雜度O(V^3)。

Floyd-Warshall算法(Floyd-Warshall algorithm)是解決任意兩點間的最短路徑的一種算法,可以正確處理有向圖或負權的最短路徑問題。

Floyd-Warshall算法的時間復雜度為O(N^3),空間復雜度為O(N^2)。

Floyd-Warshall的原理是動態規劃:

設Di,j,k為從i到j的只以(1..k)集合中的節點為中間節點的最短路徑的長度。

若最短路徑經過點k,則Di,j,k = Di,k,k-1 + Dk,j,k-1;

若最短路徑不經過點k,則Di,j,k = Di,j,k-1。

因此,Di,j,k = min(Di,k,k-1 + Dk,j,k-1 , Di,j,k-1)。

在實際算法中,為了節約空間,可以直接在原來空間上進行迭代,這樣空間可降至二維。

Floyd-Warshall算法的描述如下:

  1. for k ← 1 to n do 
  2. for i ← 1 to n do 
  3. for j ← 1 to n do 
  4. if (Di,k + Dk,j < Di,j) then  
  5. Di,j ← Di,k + Dk,j; 

其中Di,j表示由點i到點j的代價,當Di,j為 ∞ 表示兩點之間沒有任何連接。

Dijkstra

求單源、無負權的最短路。時效性較好,時間復雜度為O(V*V+E)。

源點可達的話,O(V*lgV+E*lgV)=>O(E*lgV)。

當是稀疏圖的情況時,此時E=V*V/lgV,所以算法的時間復雜度可為O(V^2) 。若是斐波那契堆作優先隊列的話,算法時間復雜度,則為O(V*lgV + E)。

Bellman-Ford

求單源最短路,可以判斷有無負權回路(若有,則不存在最短路),時效性較好,時間復雜度O(VE)。

Bellman-Ford算法是求解單源最短路徑問題的一種算法。

單源點的最短路徑問題是指:給定一個加權有向圖G和源點s,對于圖G中的任意一點v,求從s到v的最短路徑。

與Dijkstra算法不同的是,在Bellman-Ford算法中,邊的權值可以為負數。設想從我們可以從圖中找到一個環路(即從v出發,經過若干個點之后又回到v)且這個環路中所有邊的權值之和為負。那么通過這個環路,環路中任意兩點的最短路徑就可以無窮小下去。如果不處理這個負環路,程序就會永遠運行下去。 而Bellman-Ford算法具有分辨這種負環路的能力。

SPFA

是Bellman-Ford的隊列優化,時效性相對好,時間復雜度O(kE)。(k<<V)。

與Bellman-ford算法類似,SPFA算法采用一系列的松弛操作以得到從某一個節點出發到達圖中其它所有節點的最短路徑。所不同的是,SPFA算法通過維護一個隊列,使得一個節點的當前最短路徑被更新之后沒有必要立刻去更新其他的節點,從而大大減少了重復的操作次數。

SPFA算法可以用于存在負數邊權的圖,這與dijkstra算法是不同的。

與Dijkstra算法與Bellman-ford算法都不同,SPFA的算法時間效率是不穩定的,即它對于不同的圖所需要的時間有很大的差別。

在最好情形下,每一個節點都只入隊一次,則算法實際上變為廣度優先遍歷,其時間復雜度僅為O(E)。另一方面,存在這樣的例子,使得每一個節點都被入隊(V-1)次,此時算法退化為Bellman-ford算法,其時間復雜度為O(VE)。

SPFA算法在負邊權圖上可以完全取代Bellman-ford算法,另外在稀疏圖中也表現良好。但是在非負邊權圖中,為了避免最壞情況的出現,通常使用效率更加穩定的Dijkstra算法,以及它的使用堆優化的版本。通常的SPFA算法在一類網格圖中的表現不盡如人意。

【編輯推薦】

  1. 階乘相關的算法及其C++實現
  2. “用空間換時間”的算法 帶你走進緩存世界
  3. java算法之字符組合排序
  4. 當今世界最受人們重視的十大經典算法
責任編輯:于鐵 來源: IT人家
相關推薦

2013-04-23 09:31:52

SQL Server

2021-05-10 08:07:40

圖算法路徑頂點

2011-12-19 12:39:37

Java

2021-03-10 09:50:15

算法Dijkstra短路問題

2024-05-24 08:00:00

2015-07-16 14:25:56

SDN網絡感知服務

2011-06-01 09:27:00

OSPF路由路由器

2021-08-26 17:36:42

Floyd算法數據結構

2024-04-02 11:37:59

AGI網絡模型GAN

2015-12-07 17:07:36

SDN網絡流量

2021-09-08 10:32:29

微服務容器化Serverless

2014-03-26 09:04:42

算法Floyd最短算法

2011-05-17 14:29:29

Dijkstra

2011-05-17 14:11:06

Dijkstra

2011-04-11 16:32:28

路徑C++

2020-04-22 11:19:07

貪心算法動態規劃

2021-06-10 11:24:39

云原生ARMS

2022-11-28 10:14:16

研究算法

2019-04-01 06:54:10

2013-06-24 09:37:34

OSPF協議SPF算法路由技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品无码一区二区三区 | 亚洲国产成人精品久久久国产成人一区 | 国产精品99久久久久久久久久久久 | 日韩无 | 成人综合一区二区 | 黄网站免费在线观看 | 精品国产乱码久久久久久丨区2区 | 在线观看中文字幕视频 | 天天操天天天干 | 亚洲在线成人 | 亚洲欧美日韩精品久久亚洲区 | 国产精品www | 人人澡人人射 | 久久久久久免费观看 | 久久久精品视频一区二区三区 | 丁香婷婷综合激情五月色 | 日本一区二区视频 | 中文字幕综合在线 | 欧美在线播放一区 | 免费一区二区 | 欧美成年黄网站色视频 | 精品区 | 成人精品毛片国产亚洲av十九禁 | 青青草视频免费观看 | 久久久成人精品 | 99reav| 日韩av在线一区二区 | 综合色久| 国产精品一区二区三区久久 | 男人天堂网址 | 成人精品一区二区三区中文字幕 | 国产精品久久久久久亚洲调教 | 青青草在线播放 | 国产成人免费视频 | 精品一区二区三区在线播放 | 福利一区视频 | 国产福利91精品 | 一区二区久久电影 | 久久久久久国产 | 国产清纯白嫩初高生视频在线观看 | 亚洲精品区 |