狄克斯特拉算法的作用(目的):
1.假如你要從學(xué)星О#回家憔儿,那么狄克斯特拉算法可以幫你找出從起點(diǎn)到終點(diǎn)耗時(shí)最短路徑。
2.假如你要在咸魚(yú)上買(mǎi)東西放可,那么狄克斯特拉算法可以讓你花最少的錢(qián)買(mǎi)到性價(jià)比最高的東西谒臼。
狄克斯特拉算法的步驟:
1.找出“權(quán)重最低的”節(jié)點(diǎn),即可在最短時(shí)間內(nèi)到達(dá)的節(jié)點(diǎn)
2.更新該節(jié)點(diǎn)的鄰居的開(kāi)銷耀里,其含義將稍后介紹蜈缤。
3.重復(fù)這個(gè)過(guò)程,直到對(duì)圖中的每個(gè)節(jié)點(diǎn)都這樣做了备韧。
4.計(jì)算最終路徑
實(shí)現(xiàn)思路(這里我用 利用算法實(shí)現(xiàn)最短路程導(dǎo)航來(lái)舉例):
第一步:獲取到前往節(jié)點(diǎn)的耗時(shí)劫樟,找出最便宜的節(jié)點(diǎn)痪枫,如:前往A節(jié)點(diǎn)耗時(shí)6h织堂,前往B節(jié)點(diǎn)耗時(shí)2h叠艳,現(xiàn)在我們找到了節(jié)點(diǎn)b的權(quán)重是最小的(最近的)因?yàn)?>2
第二步:計(jì)算經(jīng)節(jié)點(diǎn)b前往其各個(gè)鄰居所需的時(shí)間。我們發(fā)現(xiàn)從節(jié)點(diǎn)B前往節(jié)點(diǎn)A只需要3h易阳,因?yàn)槲覀冋业搅吮戎埃ㄖ苯忧巴?jié)點(diǎn)A)所需的開(kāi)銷6h更低的開(kāi)銷3+2=5h 所以我們更新節(jié)點(diǎn)A的開(kāi)銷附较,現(xiàn)在節(jié)點(diǎn)A的開(kāi)銷是5h了
重復(fù)第一步:找出可在最短時(shí)間內(nèi)前往的節(jié)點(diǎn)。我們對(duì)節(jié)點(diǎn)B執(zhí)行了第二步潦俺,除節(jié)點(diǎn)B(耗時(shí)2h)外拒课,可在最短時(shí)間內(nèi)前往的節(jié)點(diǎn)是節(jié)點(diǎn)A(耗時(shí)5h)
重復(fù)第二步:更新節(jié)點(diǎn)A的所有鄰居的開(kāi)銷 發(fā)現(xiàn)從A到終點(diǎn)耗時(shí)1h ,而從B到終點(diǎn)耗時(shí)5h
你發(fā)現(xiàn)前往終點(diǎn)的時(shí)間為6hJ率尽(從起點(diǎn)到B耗時(shí)2h早像,再到A耗時(shí)3h) (而如果我們不通過(guò)先走節(jié)點(diǎn)b再走節(jié)點(diǎn)a的話 我們路程的消耗將為2h + 5h=7h)也就是需要多花1h
術(shù)語(yǔ)介紹:
狄克斯特拉算法用于每條邊都有關(guān)聯(lián)數(shù)字的圖,這些數(shù)字稱為權(quán)重肖爵。
帶權(quán)重的圖稱為加權(quán)重圖卢鹦,不帶權(quán)重的圖稱為非加權(quán)圖
這期教學(xué)先到這里 下一期我會(huì)用物品的交換來(lái)舉例子 再詳細(xì)的說(shuō)一下
感謝大家的閱讀 謝謝大家!