1. 程式人生 > >淺談:狄克斯特拉演算法Dijkstra找最小樹問題

淺談:狄克斯特拉演算法Dijkstra找最小樹問題

•標號過程分為兩步: –1.修改T標號。假定 是新產生的P標號點,考察以 為始點的所有弧段  ,如果  是P標號點,則對該點不再進行標號;如果 是T標號點,則進行如下修改 –2.產生新的P標號點,原則:在現有的所有T標號中將值最小者改為P標號 以上為狄克斯特拉的演算法詳述,為了讓後來者有一個清晰的認識,對這個演算法有一個理解,說白了就是要弄明白這個演算法是怎麼算的,個人是這樣理解的(我的語文是數學老師教的,表達不好勿怪): 假設有一個網路,你可以在腦海裡想象,網路把服務站連線起來,網路的線條錯綜複雜,交織在一起,我們的目的是在這個網路中找到一個“最佳網路”,這種“最佳網路”的要求:1、能把所有的服務站連線起來;2、要保證網路連線最短。    看一看狄克斯特拉是怎麼算的:任意選擇一個點a作為起點,算出與這個點相鄰的點的距離(待會著重闡述距離這個問題),比較它們的大小,最小的距離就是我們得到的點b,a到b就是我們得到的第一條“網路連線”,接下來的操作,我們要仔細品味:在剛剛的操作的過程後,我們得到了a、b兩個點,現在以a、b為“中心”,進行相同的操作,分別求出距離最短的點,這樣我們得到了第三個點c,這樣我們得到的連線是a-b-c,也可能是b-a-c;(請注意一點我們的網路連線沒有方向,只要能把兩個服務站連線起來就可以了),假如得到是a-b-c,那麼以a、c為“中心”找出最短距離....以此類推    這裡我們有必要對“最短距離”做出進一步的解釋,就是怎麼計算最短距離:    第i個服務站到第j個服務站的距離=起點到第1個服務站的距離+第1個服務站到第二個服務站的距離+...+第i-1個服務站到第i個服務站的距離+第i個服務站到第j個服務站的距離 如果我們沒有講清楚,下面的PPT的詳解和例題會幫你做出進一步的理解    百度雲最小樹問題:http://pan.baidu.com/s/1bnud3KN    歡迎交流:qq:545692102                                2015.8.6  星期四  晴