最短路徑法與節約法的區別:含義不同,計算不同。
壹、含義不同:在這裏啟發式指的是壹個在壹個搜尋樹的節點上定義的函數h(n),用於評估從此節點到目標節點最便宜的路徑。啟發式通常用於資訊充分的搜尋算法,例如最好優先貪婪算法與a*。
路徑指的是實現查找的方法或算法,而樹是把算法變化成可見的結構圖。可以理解成樹是文章的結構,路徑是完成壹篇作文的語句。
二、計算不同:最好優先貪婪算法會為啟發式函數選擇最低代價的節點;a*則會為g(n)+h(n)選擇最低代價的節點,此g(n)是從起始節點到目前節點的路徑的確實代價。
最短路徑是壹個路徑,最小樹是壹個樹(支撐樹),雖然二者都是要求覆蓋每壹個節點,但是路徑和樹究竟不同,後者分叉前者不分叉。
SPFA算法
可以用於存在負數邊權的圖,這與dijkstra算法是不同的。與Dijkstra算法與Bellman-ford算法都不同,SPFA的算法時間效率是不穩定的,即它對於不同的圖所需要的時間有很大的差別。
在最好情形下,每壹個節點都只入隊壹次,則算法實際上變為廣度優先遍歷,其時間復雜度僅為O(E)。另壹方面,存在這樣的例子,使得每壹個節點都被入隊(V-1)次,此時算法退化為Bellman-ford算法,其時間復雜度為O(VE)。