小海豹教你算法,包你懂:Python實現狄克斯特拉算法詳解

狄克斯特拉算法的作用(目的):

1.假如你要從學?;丶?,那么狄克斯特拉算法可以幫你找出從起點到終點耗時最短路徑。

2.假如你要在咸魚上買東西,那么狄克斯特拉算法可以讓你花最少的錢買到性價比最高的東西。


狄克斯特拉算法的步驟:

1.找出“權重最低的”節(jié)點,即可在最短時間內到達的節(jié)點

2.更新該節(jié)點的鄰居的開銷,其含義將稍后介紹。

3.重復這個過程,直到對圖中的每個節(jié)點都這樣做了。

4.計算最終路徑


實現思路(這里我用 利用算法實現最短路程導航來舉例):

第一步:獲取到前往節(jié)點的耗時,找出最便宜的節(jié)點,如:前往A節(jié)點耗時6h,前往B節(jié)點耗時2h,現在我們找到了節(jié)點b的權重是最小的(最近的)因為6>2

第二步:計算經節(jié)點b前往其各個鄰居所需的時間。我們發(fā)現從節(jié)點B前往節(jié)點A只需要3h,因為我們找到了比之前(直接前往節(jié)點A)所需的開銷6h更低的開銷3+2=5h 所以我們更新節(jié)點A的開銷,現在節(jié)點A的開銷是5h了

重復第一步:找出可在最短時間內前往的節(jié)點。我們對節(jié)點B執(zhí)行了第二步,除節(jié)點B(耗時2h)外,可在最短時間內前往的節(jié)點是節(jié)點A(耗時5h)

重復第二步:更新節(jié)點A的所有鄰居的開銷 發(fā)現從A到終點耗時1h ,而從B到終點耗時5h

你發(fā)現前往終點的時間為6h?。◤钠瘘c到B耗時2h,再到A耗時3h) (而如果我們不通過先走節(jié)點b再走節(jié)點a的話 我們路程的消耗將為2h + 5h=7h)也就是需要多花1h


術語介紹:

狄克斯特拉算法用于每條邊都有關聯(lián)數字的圖,這些數字稱為權重。

帶權重的圖稱為加權重圖,不帶權重的圖稱為非加權圖

這期教學先到這里 下一期我會用物品的交換來舉例子 再詳細的說一下

感謝大家的閱讀 謝謝大家!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 下面是本人在看算法書籍時做的筆記。因為前面的比較基礎,就從第五章才開始做的筆記 第五章:散列表 個人理解:概念類似...
    大樹聽雨閱讀 504評論 0 0
  • 在之前的廣度優(yōu)先搜索中,可以找出了從A點到B點的最短路徑。0-1 這是最短路徑,因為段數最少——只有三段,但不一定...
    YCzhao閱讀 981評論 0 0
  • 本文由 伯樂在線 - hf_cherish 翻譯,黃利民 校稿。未經許可,禁止轉載!英文出處:theory.sta...
    C_GO流媒體后臺開發(fā)閱讀 1,802評論 0 2
  • 靈川l閱讀 150評論 0 1
  • 清晨,打車時偶遇一位老奶奶帶她兩位小學生孫女兒去上學,她看到我先攔下空的士,就走上來詢問能否拼車去XX實驗小學:濃...
    Ceunaragazza閱讀 228評論 0 0

友情鏈接更多精彩內容