1. 程式人生 > >迪傑斯特拉演算法(Dijkstra algorithm)

迪傑斯特拉演算法(Dijkstra algorithm)

       emmmm....寫語氣詞被同桌吐槽啊....嫌我emmm太長。桑心QAQ

       好把同桌趕跑了~

       這次來講迪傑斯特拉,這個東西嘛...和我們上一次看的弗洛伊德差不多啦,對沒錯不是那個寫性學三論的傢伙,所以不用期待我的文章裡會出現什麼奇♂怪的東西。

       其實思路都是差不多的,不過我們總是有些蛋疼這種東西怎麼造出來的。

       弗洛伊德的基本思想是:

       哇這個東西還能繼續一直走我就繼續走下去,走到頭,看和原來的比較誰最短。

       迪傑斯特拉:

       反正我都知道我要從哪走到哪了,為什麼還要那麼辛苦去找出來所有的路徑呢?

       沒錯!差別正是在這一點上,弗洛伊德不知道他需要從哪走到哪,但是迪傑斯特拉知道!(迪傑斯特拉好聰明)正是這樣的一丁點差別造成了思路的根本性的不同,因為如果我們知道了起點和終點的話,我們只需要對單點進行最短路求解即可!!!

       話是這麼說但是真做起來有些手足無措。

       聰明的迪傑斯特拉給了我們這麼一個思想:

       從起點開始,我們看除了它自己本身最近可以到達哪裡,然後看這一點能到達哪裡,如果中轉後距離比原來短就更新。而且只考慮中轉當前點。

       是不是很熟悉!沒錯很像是弗洛伊德的閹割版!不過改成了單點更新,而已,把弗洛伊德的三層迴圈給減少了許多。

       OvO由於我今天沒時間所以就寫了個文章而已,程式碼來日再更,能看懂的小夥伴先湊合一下叭~