演算法起步之Bellman Ford演算法

2021-09-08 03:44:47 字數 783 閱讀 6200

原文:

演算法起步之bellman-ford演算法

在介紹這類演算法之前我們先規定節點的基本屬性,我們規定節點都有乙個key值,key值記錄的是開始節點到本節點的最小距離,每個節點也都有乙個p指標指向他的前驅節點。這裡我們規定乙個操作叫做鬆弛操作,我們的演算法也是最終基於這個操作的。鬆弛操作就是去更新key的值。

節點b的key值為8,表示從開始節點到b節點之前的最短估計距離是8,而節點a的key值3,是說從開始節點到a節點最短估計是3,當我們發現這個邊時,從a到b的距離比較近,所以我們去更新b的key值,同時把b的前驅節點設定成a。這個過程就是鬆弛操作。

我們說的bellman-ford演算法是最簡單的演算法,就是從開始節點開始迴圈每一條邊,對他進行鬆弛操作。最後得到的路徑就是最短路徑。過程如圖:

演算法起步之Dijkstra演算法

原文 演算法起步之dijkstra演算法 dijkstra演算法是解決帶權重有向圖上的單源最短路徑問題,必須路徑值都為正數。如果實現方式合適的話,他的執行時間要低於我們之前介紹的bellman ford演算法的執行時間。如果介紹dijkstra演算法的過程你會發現他其實跟我們直接介紹的prim演算法...

python起步之安裝(一)

一 python安裝 3.然後安裝就可以用了。二 numpy,scipy,matplotlib安裝 根據個人需要我需要安裝numpy scipy以及matplotlib。is a python 2 and 3 compatibility library 這樣幾經周折,matplotlib就可以正常使...

PHP擴充套件起步之sayhi

只怪自己興趣太濃厚,啥都想搞點,一晃六年多過去了。08年開始寫php擴充套件,之後就一直沒寫過。翻到之前的筆記從新記錄下。現在php已經發展到5.5了,最新的phpng,也已經在php7中開始動工了。git clone git 2.進入到ext目錄下,使用 ext skel extname say ...